123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598 |
- ##### My (demuredemeanor) i3 config
- # Uses tabstop=4; shiftwidth=4 tabs; foldmarker={{{,}}};
- # https://notabug.org/demure/dotfiles/
- # legacy repo http://github.com/demure/dotfiles
- # vim: set filetype=i3config:
- ## Set prefix to Super
- set $mod Mod4
- # Font for window titles. Will also be used by the bar unless a different font
- # is used in the bar {} block below.
- font pango:monospace 8
- # This font is widely installed, provides lots of unicode glyphs, right-to-left
- # text rendering and scalability on retina/hidpi displays (thanks to pango).
- #font pango:DejaVu Sans Mono 8
- ## If you try to go to the same workspace you are on, jump to last workspace
- workspace_auto_back_and_forth yes
- ### Variables ### {{{
- set $Locker i3lock -e -c 2E3436 && sleep 1
- ### Workspace Names ### {{{
- set $ws1 1:
- set $ws2 2:
- set $ws3 3:
- set $ws4 4
- set $ws5 5
- set $ws6 6
- set $ws7 7
- set $ws8 8
- set $ws9 9
- set $ws10 10
- ### End Workspace Names ### }}}
- ### End Variables ### }}}
- ### Bindings ### {{{
- ### i3 Keys ### {{{
- ## reload the configuration file
- bindsym $mod+Shift+c reload
- ## restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
- bindsym $mod+Shift+r exec i3-msg restart
- ## exit i3 (logs you out of your X session)
- bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'"
- ### End i3 Keys ### }}}
- ### Workspace Bindings ### {{{
- ### Last Workspace ### {{{
- ## Move to last workspace
- bindsym $mod+Tab workspace back_and_forth
- ## Send container to last workspace
- bindsym $mod+Shift+Tab move container to workspace back_and_forth
- ### End Last Workspace ### }}}
- ### Switch Workspace ### {{{
- ## switch to workspace
- bindsym $mod+1 workspace $ws1
- bindsym $mod+2 workspace $ws2
- bindsym $mod+3 workspace $ws3
- bindsym $mod+4 workspace $ws4
- bindsym $mod+5 workspace $ws5
- bindsym $mod+6 workspace $ws6
- bindsym $mod+7 workspace $ws7
- bindsym $mod+8 workspace $ws8
- bindsym $mod+9 workspace $ws9
- bindsym $mod+0 workspace $ws10
- ### End Switch Workspace ### }}}
- ### Send Workspace ### {{{
- ## move focused container to workspace
- bindsym $mod+Shift+1 move container to workspace $ws1
- bindsym $mod+Shift+2 move container to workspace $ws2
- bindsym $mod+Shift+3 move container to workspace $ws3
- bindsym $mod+Shift+4 move container to workspace $ws4
- bindsym $mod+Shift+5 move container to workspace $ws5
- bindsym $mod+Shift+6 move container to workspace $ws6
- bindsym $mod+Shift+7 move container to workspace $ws7
- bindsym $mod+Shift+8 move container to workspace $ws8
- bindsym $mod+Shift+9 move container to workspace $ws9
- bindsym $mod+Shift+0 move container to workspace $ws10
- ### End Send Workspace ### }}}
- ### Move Workspace Different Monitor ### {{{
- ## Move the current workspace to the next output
- bindsym $mod+Mod1+Left move workspace to output Left
- bindsym $mod+Mod1+Down move workspace to output Down
- bindsym $mod+Mod1+Up move workspace to output Up
- bindsym $mod+Mod1+Right move workspace to output right
- ### End Move Workspace Different Monitor ### }}}
- ### Cycle Through Workspaces ### {{{
- ## Added for touchegg
- bindsym $mod+u workspace prev
- bindsym $mod+o workspace next
- ### End Cycle Through Workspaces ### }}}
- ### End Workspace Bindings ### }}}
- ### Window Bindings ### {{{
- ## kill focused window
- bindsym $mod+Shift+q kill
- ### Sticky Windows, good for picture in picture (shows floating window on all workspaces)
- bindsym $mod+Shift+s sticky toggle
- ### Split Orientation ### {{{
- ## split in horizontal orientation
- bindsym $mod+h split h
- ## split in vertical orientation
- bindsym $mod+v split v
- ### End Split Orientation ### }}}
- ### End Window Bindings ### }}}
- ### Focus Bindings ### {{{
- ## enter fullscreen mode for the focused container
- bindsym $mod+f fullscreen toggle
- ## enter fullscreen mode over all monitors
- bindsym $mod+Shift+f fullscreen toggle global
- ### Tile / Float ### {{{
- ## toggle tiling / floating
- bindsym $mod+Shift+space floating toggle
- ## change focus between tiling / floating windows
- bindsym $mod+space focus mode_toggle
- ### End Tile / Float ### }}}
- ### Change Focus ### {{{
- ## change focus
- bindsym $mod+j focus left
- bindsym $mod+k focus down
- bindsym $mod+l focus up
- bindsym $mod+semicolon focus right
- ## alternatively, you can use the cursor keys:
- bindsym $mod+Left focus left
- bindsym $mod+Down focus down
- bindsym $mod+Up focus up
- bindsym $mod+Right focus right
- ### End Change Focus ### }}}
- ### Move Focused Window ### {{{
- ## move focused window
- bindsym $mod+Shift+j move left
- bindsym $mod+Shift+k move down
- bindsym $mod+Shift+l move up
- bindsym $mod+Shift+semicolon move right
- ## alternatively, you can use the cursor keys:
- bindsym $mod+Shift+Left move left
- bindsym $mod+Shift+Down move down
- bindsym $mod+Shift+Up move up
- bindsym $mod+Shift+Right move right
- ### End Move Focused Window ### }}}
- ### Focus Urgent Workspace {{{
- bindsym $mod+x [urgent=latest] focus
- ### End Focus Urgent Workspace ###}}}
- ### End Focus Bindings ### }}}
- ### Container Bindings ### {{{
- ### Change Container Layout ### {{{
- ## change container layout (stacked, tabbed, toggle split)
- bindsym $mod+s layout stacking
- bindsym $mod+w layout tabbed
- bindsym $mod+e layout toggle split
- ### End Change Container Layout ### }}}
- ### Parent / Child Container ### {{{
- ## focus the parent container
- bindsym $mod+a focus parent
- ## focus the child container
- bindsym $mod+d focus child
- ### End Parent / Child Container ### }}}
- ### End Container Bindings ### }}}
- ### Mouse Bindings ### {{{
- ## Use Mouse+$mod to drag floating windows to their wanted position
- floating_modifier $mod
- ## Seems like this only works on border or title bar...
- #bindsym --whole-window --border button6 workspace prev
- #bindsym --whole-window --border button7 workspace next
- ## Removed --whole-window as it started working, and touchpoint scrolling affected.
- bindsym --border button6 workspace prev
- bindsym --border button7 workspace next
- ### End Mouse Bindings ### }}}
- ### Scratch Pad ### {{{
- ## Make the currently focused window a scratchpad
- bindsym $mod+Shift+minus move scratchpad
- ## Show the first scratchpad window
- bindsym $mod+minus scratchpad show
- ### End Scratch Pad ### }}}
- ### User Interface Bindings ### {{{
- ### Brightness Bindings ### {{{
- bindsym XF86MonBrightnessUp exec xbacklight -inc 5 ## Increase screen brightness
- bindsym Shift+XF86MonBrightnessUp exec xbacklight -inc 1 ## Fine increase screen brightness
- bindsym XF86MonBrightnessDown exec xbacklight -dec 5 ## Decrease screen brightness
- bindsym Shift+XF86MonBrightnessDown exec xbacklight -dec 1 ## Fine decrease screen brightness
- bindsym $mod+XF86MonBrightnessUp exec xbacklight -set 100 ## Set max screen brightness
- bindsym $mod+XF86MonBrightnessDown exec xbacklight -set 1 ## Set min screen brightness
- ### End Brightness Bindings ### }}}
- ### Pulse Audio Controls ### {{{
- ## Softvol increase possible with pactl
- ## NOTE: due to HDMI output connect/disconnects causing sink number changes, sink '0' is now <strike>a command substitution<strike> @DEFAULT_SINK@
- ## NOTE: My thinkpad usb c gen 2 dock needs something to run the following to update the default sink:
- ## pactl set-default-sink $(pactl list short sinks | awk '/RUNNING/ {print $1}')
- bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5% ## Increase sound volume
- bindsym Shift+XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +1% ## Fine increase sound volume
- bindsym $mod+XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ 100% ## Set volume to "100%"
- bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5% ## Decrease sound volume
- bindsym Shift+XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -1% ## Fine decrease sound volume
- bindsym $mod+XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ 50% ## Set volume to "50%"
- bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle ## Mute sound
- bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle ## Toggle default mic mute
- bindsym $mod+XF86AudioMicMute exec --no-startup-id pactl list short sources | awk '/input.*RUNNING/ {system("pactl set-source-mute " $1 " toggle")}' ## Find and mute mics
- ## push to talk
- bindsym $mod+z exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ 0 ## Hold to talk
- bindsym --release $mod+z exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ 1 ## Release to mute
- bindsym $mod+Shift+z exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ 0 ## Unmute
- bindsym XF86PickupPhone exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ 0 ## Hold to talk
- bindsym --release XF86PickupPhone exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ 1 ## Release to mute
- ### End Pulse Audio ### }}}
- ### Toggle redshift ### {{{
- bindsym $mod+slash exec --no-startup-id pkill -USR1 redshift
- ### End Toggle redshift ### }}}
- ### End User Interface Bindings ### }}}
- ### Program Call Bindings ### {{{
- ### Launch Term ### {{{
- ## start a terminal
- bindsym $mod+Return exec kitty
- ## Backup term of urxvt
- bindsym $mod+Shift+Return exec urxvt
- ## Emergency backup term
- bindsym $mod++mod1+Return exec i3-sensible-terminal
- ### End Launch Term ### }}}
- ### Screen Shots ### {{{
- bindsym $mod+Home exec --no-startup-id exec scrot -m -F '%Y%m%d-%H%M%S_$wx$h_screen.png' -e 'mv $f ~/temp/' ## Backup binding
- bindsym Print exec --no-startup-id exec scrot -m -F '%Y%m%d-%H%M%S_$wx$h_screen.png' -e 'mv $f ~/temp/'
- #bindsym XF86Explorer exec --no-startup-id exec scrot -m -F '%Y%m%d-%H%M%S_$wx$h_screen.png' -e 'mv $f ~/temp/' ## x260
- #bindsym XF86Favorites exec --no-startup-id exec scrot -m -F '%Y%m%d-%H%M%S_$wx$h_screen.png' -e 'mv $f ~/temp/' ## x270
- bindsym XF86Display exec --no-startup-id exec scrot -m -F '%Y%m%d-%H%M%S_$wx$h_screen.png' -e 'mv $f ~/temp/' ## xnano
- bindsym XF86Mail exec --no-startup-id exec scrot -m -F '%Y%m%d-%H%M%S_$wx$h_screen.png' -e 'mv $f ~/temp/' ## sofle keyboard
- ## Note: you need to click on the window, after key combo, to capture it.
- ## Note: Needs to have startup ip, as interacts with GUI
- bindsym $mod+Shift+Home exec --no-startup-id scrot -s -F '%Y%m%d-%H%M%S_$wx$h_screen.png' -e 'mv $f ~/temp/' ## Backup binding
- bindsym Shift+Print exec --no-startup-id scrot -s -F '%Y%m%d-%H%M%S_$wx$h_screen.png' -e 'mv $f ~/temp/'
- #bindsym Shift+XF86Explorer exec --no-startup-id scrot -s -F '%Y%m%d-%H%M%S_$wx$h_screen.png' -e 'mv $f ~/temp/' ## x260
- #bindsym Shift+XF86Favorites exec --no-startup-id scrot -s -F '%Y%m%d-%H%M%S_$wx$h_screen.png' -e 'mv $f ~/temp/' ## x270
- bindsym Shift+XF86Display exec --no-startup-id scrot -s -F '%Y%m%d-%H%M%S_$wx$h_screen.png' -e 'mv $f ~/temp/' ## xnano
- bindsym Shift+XF86Mail exec --no-startup-id scrot -s -F '%Y%m%d-%H%M%S_$wx$h_screen.png' -e 'mv $f ~/temp/' ## sofle keyboard
- bindsym Control+XF86Mail exec --no-startup-id scrot -s -F '%Y%m%d-%H%M%S_$wx$h_screen.png' -e 'mv $f ~/temp/' ## sofle keyboard
- ### End Screen Shots ### }}}
- ### Rofi Bindings ### {{{
- ## Use rofi, it's better
- ## start dmenu (a program launcher)
- #bindsym $mod+d exec dmenu_run
- bindsym $mod+p exec rofi -show run
- bindsym XF86Search exec rofi -show run ## sofle keyboard
- ### rofi-pass binding
- bindsym $mod+Shift+p exec rofi-pass
- bindsym Shift+XF86Search exec rofi-pass ## sofle keyboard
- bindsym Control+XF86Search exec rofi-pass ## sofle keyboard
- ### End Rofi Bindings ### }}}
- ### External IP Toggle For i3 polybar ### {{{
- ## awk -v TEMP=/tmp/i3_polybar_ip_toggle_${USER} 'BEGIN {{FILE=getline < TEMP < 0 ? "0" : "1"} {if($0==1){STATE=1} else {STATE=0}} {if(STATE==0){system("echo 1 > "TEMP)} else {system("echo 0 > "TEMP)}} }'
- #bindsym XF86LaunchA exec awk -v TEMP=/tmp/i3_polybar_ip_toggle_${USER} 'BEGIN {{FILE=getline < TEMP < 0 ? "0" : "1"} {if($0==1){STATE=1} else {STATE=0}} {if(STATE==0){system("echo 1 > "TEMP)} else {system("echo 0 > "TEMP)}} }' ## x260
- #bindsym XF86Display exec awk -v TEMP=/tmp/i3_polybar_ip_toggle_${USER} 'BEGIN {{FILE=getline < TEMP < 0 ? "0" : "1"} {if($0==1){STATE=1} else {STATE=0}} {if(STATE==0){system("echo 1 > "TEMP)} else {system("echo 0 > "TEMP)}} }' ## x270
- ### End External IP For i3 polybar ### }}}
- ### Clipster Clipboard Manager ### {{{
- bindsym $mod+c exec clipster -sc
- ### End Clipster ### }}}
- ### End Program Call Bindings ### }}}
- ### Misc Bindings ### {{{
- ### End Misc Bindings ### }}}
- ### End Bindings ### }}}
- ### i3 Modes ### {{{
- ### System Control Mode ### {{{
- mode "system-control" {
- bindsym l exec --no-startup-id $Locker, mode "default"
- bindsym e exec --no-startup-id i3-msg exit, mode "default"
- bindsym s exec --no-startup-id $Locker && systemctl suspend, mode "default"
- bindsym h exec --no-startup-id $Locker && systemctl hibernate, mode "default"
- bindsym r exec --no-startup-id systemctl reboot, mode "default"
- bindsym Shift+s exec --no-startup-id systemctl poweroff -i, mode "default"
- bindsym c exec --no-startup-id sudo /usr/bin/tomb close all, mode "default"
- bindsym Shift+c exec --no-startup-id sudo /usr/bin/tomb slam, mode "default"
- ## Invert screen colors
- bindsym i exec --no-startup-id xcalib -invert -alter, mode "default"
- ## Set brightness to my default of 30%
- bindsym b exec --no-startup-id xbacklight -set 30, mode "default"
- ## One minute timer, big
- bindsym t exec urxvt -fn xft:PragmataProMono-Regular:pixelsize=70 -e termdown -WBb -c 10 -t TIME 1m, mode "default"
- ## One minute timer, small
- bindsym Shift+t exec urxvt -e termdown -WBb -c 10 -t TIME 1m, mode "default"
- ## Flip screen horizontally
- bindsym f exec --no-startup-id xrandr -x, mode "default"
- ## Flip screen vertically
- bindsym Shift+F exec --no-startup-id xrandr -y, mode "default"
- ## Toggle between $TZ and UTC in polybar
- bindsym u exec awk -v TEMP=/tmp/i3_polybar_utc_${USER} 'BEGIN {{FILE=getline < TEMP < 0 ? "0" : "1"} {if($0==1){STATE=1} else {STATE=0}} {if(STATE==0){system("echo 1 > "TEMP)} else {system("echo 0 > "TEMP)}} }', mode "default"
- ## Unload gpg keys
- bindsym g exec --no-startup-id gpgconf --kill gpg-agent, mode "default"
- ## Reload polybar
- bindsym k exec --no-startup-id "$HOME/.config/polybar/scripts/start_polybar.sh", mode "default"
- ## Toggle xss-lock, used for lock on idle
- bindsym Shift+l exec --no-startup-id "$HOME/projects/personal/scripts/toggler.sh xss-lock", mode "default"
- ## Toggle screen off on idle
- bindsym p exec --no-startup-id "$HOME/projects/personal/scripts/toggler.sh powersave", mode "default"
- bindsym --release Shift+x exec "xkill", mode "default"
- ## back to normal: Enter or Escape
- bindsym Return mode "default"
- bindsym Escape mode "default"
- }
- bindsym $mod+Pause mode "system-control"
- bindsym $mod+End mode "system-control"
- ## x270
- #bindsym XF86Tools mode "system-control"
- ## x1nano and sofle keyboard
- bindsym XF86Favorites mode "system-control"
- ### End System Control Mode ### }}}
- ### App Quick Launch ### {{{
- ## Launch mode, one app per key.
- mode "quick-launch" {
- bindsym a exec pavucontrol ; mode "default"
- bindsym b exec qutebrowser ; mode "default"
- bindsym c exec speedcrunch ; mode "default"
- bindsym f exec firefox ; mode "default"
- ## gksudo is dead
- #bindsym g exec gksudo gameconqueror ; mode "default"
- bindsym g exec urxvt -e sudo scanmem ; mode "default"
- bindsym Shift+m exec --no-startup-id sudo /usr/bin/tomb open -k ~/vault.tomb.key ~/vault.tomb -g ; mode "default"
- ## Handles tv3 python3 version too
- #bindsym n exec urxvt --title terminal_velocity -e sh -c "terminal_velocity || $HOME/.local/bin/tv3" ; mode "default"
- bindsym n exec urxvt --title terminal_notes -e sh -c "note" ; mode "default"
- bindsym o exec libreoffice ; mode "default"
- bindsym t exec i3-sensible-terminal ; mode "default"
- bindsym v exec $HOME/bin/start-vpn.sh ; mode "default"
- bindsym w exec urxvt -e connman-ncurses ; mode "default"
- ## Keeping this as an example
- ## gnome-disks will not launch twice, gparted will. Avoid that.
- #bindsym d exec ((pidof gpartedbin) || gksudo gparted); exec gnome-disks ; mode "default"
- bindsym Return mode "default"
- bindsym Escape mode "default"
- }
- #bindsym $mod+Shift+g mode "quick-launch"
- bindsym $mod+g mode "quick-launch"
- ### End App Quick Launch ### }}}
- ### App Focus Mode ### {{{
- mode "app-focus" {
- ## hardcoded focus keybindings
- bindsym b [class="(?i)qutebrowser"] focus, mode "default"
- bindsym w [class="(?i)terminal" title="weechat"] focus, mode "default"
- #bindsym m [class="(?i)icedove"] focus, mode "default"
- #bindsym f [class="(?i)spacefm"] focus, mode "default"
- bindsym z [class="(?i)zathura"] focus, mode "default"
- ## back to normal: Enter or Escape
- bindsym Return mode "default"
- bindsym Escape mode "default"
- }
- bindsym $mod+Shift+g mode "app-focus"
- ### End App Focus Mode ### }}}
- ### Resize Window Mode ### {{{
- ## resize window (you can also use the mouse for that)
- mode "resize" {
- ## These bindings trigger as soon as you enter the resize mode
- ## They resize the border in the direction you pressed, e.g.
- ## when pressing left, the window is resized so that it has
- ## more space on its left
- bindsym h resize shrink left 10 px or 10 ppt
- bindsym j resize shrink down 10 px or 10 ppt
- bindsym k resize shrink up 10 px or 10 ppt
- bindsym l resize shrink right 10 px or 10 ppt
- bindsym Shift+H resize grow left 10 px or 10 ppt
- bindsym Shift+J resize grow down 10 px or 10 ppt
- bindsym Shift+K resize grow up 10 px or 10 ppt
- bindsym Shift+L resize grow right 10 px or 10 ppt
- ## Same bindings, but for the arrow keys
- bindsym Left resize shrink left 10 px or 10 ppt
- bindsym Down resize shrink down 10 px or 10 ppt
- bindsym Up resize shrink up 10 px or 10 ppt
- bindsym Right resize shrink right 10 px or 10 ppt
- bindsym Shift+Left resize grow left 10 px or 10 ppt
- bindsym Shift+Down resize grow down 10 px or 10 ppt
- bindsym Shift+Up resize grow up 10 px or 10 ppt
- bindsym Shift+Right resize grow right 10 px or 10 ppt
- ## Go to precise mode
- bindsym p mode "resize_precise"
- ## Back to normal: Enter or Escape
- bindsym Return mode "default"
- bindsym Escape mode "default"
- }
- ### Precise Resize ### {{{
- mode "resize_precise" {
- bindsym h resize shrink left 1 px or 1 ppt
- bindsym j resize shrink down 1 px or 1 ppt
- bindsym k resize shrink up 1 px or 1 ppt
- bindsym l resize shrink right 1 px or 1 ppt
- bindsym Shift+H resize grow left 1 px or 1 ppt
- bindsym Shift+J resize grow down 1 px or 1 ppt
- bindsym Shift+K resize grow up 1 px or 1 ppt
- bindsym Shift+L resize grow right 1 px or 1 ppt
- ## Same bindings, but for the arrow keys
- bindsym Left resize shrink left 1 px or 1 ppt
- bindsym Down resize shrink down 1 px or 1 ppt
- bindsym Up resize shrink up 1 px or 1 ppt
- bindsym Right resize shrink right 1 px or 1 ppt
- bindsym Shift+Left resize grow left 1 px or 1 ppt
- bindsym Shift+Down resize grow down 1 px or 1 ppt
- bindsym Shift+Up resize grow up 1 px or 1 ppt
- bindsym Shift+Right resize grow right 1 px or 1 ppt
- ## Return to normal resize
- bindsym p mode "resize"
- ## Back to normal: Enter or Escape
- bindsym Return mode "default"
- bindsym Escape mode "default"
- }
- ### End Precise Resize ### }}}
- bindsym $mod+r mode "resize"
- ### End Resize Mode ### }}}
- ### Control spotify via spotify-tui and spotifyd ### {{{
- mode "control-spotify" {
- bindsym p exec --no-startup-id spotify-tui playback --toggle, mode "default"
- bindsym l exec --no-startup-id spotify-tui playback --like, mode "default"
- bindsym r exec --no-startup-id spotify-tui playback --repeat, mode "default"
- bindsym s exec --no-startup-id spotify-tui playback --shuffle, mode "default"
- bindsym comma exec --no-startup-id spotify-tui playback --previous, mode "default"
- bindsym period exec --no-startup-id spotify-tui playback --next, mode "default"
- bindsym Shift+less exec --no-startup-id spotify-tui playback --previous, mode "default"
- bindsym Shift+greater exec --no-startup-id spotify-tui playback --next, mode "default"
- ## back to normal: Enter or Escape
- bindsym Return mode "default"
- bindsym Escape mode "default"
- }
- bindsym $mod+m mode "control-spotify"
- ### End Control spotify via spotify-tui and spotifyd ### }}}
- ### Control Pianobar Mode ### {{{
- mode "control-pianobar" {
- bindsym p exec --no-startup-id ~/.config/pianobar/control-pianobar.sh play, mode "default"
- bindsym q exec --no-startup-id ~/.config/pianobar/control-pianobar.sh quit, mode "default"
- bindsym h exec --no-startup-id ~/.config/pianobar/control-pianobar.sh history, mode "default"
- bindsym n exec --no-startup-id ~/.config/pianobar/control-pianobar.sh next, mode "default"
- bindsym t exec --no-startup-id ~/.config/pianobar/control-pianobar.sh tired, mode "default"
- bindsym s exec --no-startup-id ~/.config/pianobar/control-pianobar.sh switchstation, mode "default"
- bindsym \, exec --no-startup-id ~/.config/pianobar/control-pianobar.sh previousstation, mode "default"
- bindsym . exec --no-startup-id ~/.config/pianobar/control-pianobar.sh nextstation, mode "default"
- bindsym l exec --no-startup-id ~/.config/pianobar/control-pianobar.sh love, mode "default"
- bindsym b exec --no-startup-id ~/.config/pianobar/control-pianobar.sh ban, mode "default"
- bindsym e exec --no-startup-id ~/.config/pianobar/control-pianobar.sh explain, mode "default"
- bindsym c exec --no-startup-id ~/.config/pianobar/control-pianobar.sh current, mode "default"
- ## back to normal: Enter or Escape
- bindsym Return mode "default"
- bindsym Escape mode "default"
- }
- #bindsym $mod+m mode "control-pianobar"
- ### End Control Pianobar Mode ### }}}
- ### Control mpd Mode ### {{{
- mode "control-mpd" {
- bindsym space exec --no-startup-id mpc -q toggle, mode "default"
- bindsym p exec --no-startup-id mpc -q play, mode "default"
- bindsym r exec --no-startup-id mpc -q random, mode "default"
- bindsym s exec --no-startup-id mpc -q stop, mode "default"
- bindsym q exec --no-startup-id mpc -q stop, mode "default"
- bindsym comma exec --no-startup-id mpc -q prev, mode "default"
- bindsym period exec --no-startup-id mpc -q next, mode "default"
- bindsym Shift+less exec --no-startup-id mpc -q prev, mode "default"
- bindsym Shift+greater exec --no-startup-id mpc -q next, mode "default"
- ## back to normal: Enter or Escape
- bindsym Return mode "default"
- bindsym Escape mode "default"
- }
- bindsym $mod+Shift+m mode "control-mpd"
- ### End Control mpd Mode ### }}}
- ## xrandr mode?
- ### End i3 Modes ### }}}
- ### Window Treatments ### {{{
- ## (adding "(?i)" means ignore case)
- ### Program Floating ### {{{
- for_window [class="mpv|feh|Pinentry|Gnome-calculator|Pavucontrol"] floating enable
- for_window [title="Steam - Update*|Steam - Self Updater|Event Tester|termdown"] floating enable
- ## Make wicd-curses and terminal_velocity pop up bigger, and centered
- ## Added second criteria to reduce false positives
- for_window [class="URxvt"] [title="wicd-curses|connman-ncurses|terminal_notes"] floating enable, resize set width 800px height 600px, move position center
- for_window [class="QtPass"] floating enable, resize set width 800px height 600px, move position center
- ### End Program Floating ### }}}
- ## Full screen
- for_window [title="ManaPlus"] fullscreen
- ## Disable border
- for_window [class="mpv|URxvt|kitty|(?i)chromium|terminator|qutebrowser|manaplus|(?i)firefox"] border 1pixel
- ## Tab view
- for_window [class="Virt-manager"] focus child, layout tabbed, focus
- ## Move mpv podcast window to bottom right corner
- for_window [class="mpv"] [title="podcast"] move position 1550 800
- ### Deal with pop ups ### {{{
- for_window [window_role="pop-up"] floating enable
- for_window [window_role="task_dialog"] floating enable
- for_window [title="Preferences$"] floating enable
- ### End Popups ### }}}
- ### Scratchpad ### {{{
- #for_window [title="nvPY"] move scratchpad
- ### End Scratchpad ### }}}
- ### End Window Treatments ### }}}
- ### Assign Application Workspace ### {{{
- #assign [class="(?i)spacefm"] $ws7
- ### End Assign Application Workspace ### }}}
- ### Exec Programs ### {{{
- ## Start polybar
- exec_always --no-startup-id $HOME/.config/polybar/scripts/start_polybar.sh
- exec --no-startup-id [ "$(xrandr | grep -o eDP-1)" = "eDP-1" ] && xrandr --output eDP-1 --primary
- ## shift + numlock for mouse mode num pad, see https://linuxreviews.org/HOWTO_use_the_numeric_keyboard_keys_as_mouse_in_XOrg
- #exec --no-startup-id setxkbmap -option keypad:pointerkeys
- exec --no-startup-id [ -e $HOME/.Xmodmap ] && xmodmap $HOME/.Xmodmap
- ## Set pulseaudio bell sound, and set volume
- exec --no-startup-id pactl upload-sample ~/.config/notice_beeps/tick.ogg bell && pactl load-module module-x11-bell sample=bell && xset b 75
- exec --no-startup-id compton -b
- ## autorandr needs profiles already added
- exec --no-startup-id srandrd autorandr
- #exec --no-startup-id srandrd $HOME/projects/personal/scripts/hdmi_sound_toggle.sh
- #exec --no-startup-id srandrd $HOME/.config/polybar/scripts/start_polybar.sh
- #exec --no-startup-id srandrd $HOME/.config/conky/start_conky.sh
- exec --no-startup-id nitrogen --restore
- exec --no-startup-id xss-lock -l -- i3lock -fnec 2E3436
- exec --no-startup-id udiskie
- exec --no-startup-id redshift
- exec --no-startup-id syncthing -no-browser
- exec --no-startup-id touchegg
- exec --no-startup-id unclutter
- exec --no-startup-id clipster -d
- ## Note to self, removed hard coded ~/.mpd from mpd-dynamic
- exec --no-startup-id mpd && mpd-dynamic
- exec --no-startup-id sleep 120 && spotifyd
- #exec --no-startup-id i3-msg "workspace $ws7; exec /usr/bin/spacefm"
- #exec --no-startup-id i3-msg "workspace $ws3; exec qutebrowser"
- exec --no-startup-id i3-msg "workspace $ws1; exec kitty"
- exec --no-startup-id sleep 30 && pkill -USR1 redshift
- exec --no-startup-id sleep 15 && autorandr -c
- exec --no-startup-id sleep 15 && $HOME/projects/personal/scripts/hdmi_sound_toggle.sh
- exec --no-startup-id sleep 15 && $HOME/.config/conky/start_conky.sh
- ### End Exec Programs ### }}}
|