# i3 config file (v4) # # Please see http://i3wm.org/docs/userguide.html for a complete reference! # variables for use later set $mod Mod4 set $config_dir ~/.config/i3 include include/`hostname`.conf ## Startup Applications ## exec --no-startup-id ~/.fehbg exec --no-startup-id xfce4-panel -d exec --no-startup-id /usr/lib/xfce4/notifyd/xfce4-notifyd exec --no-startup-id nm-applet exec --no-startup-id redshift-gtk -l 43:-72 exec --no-startup-id insync start exec --no-startup-id syncthing-gtk exec --no-startup-id pasystray --notify=source --notify=sink exec --no-startup-id udiskie -s0 exec --no-startup-id caffeine exec --no-startup-id mailnag exec --no-startup-id touchegg 2>&1 > /dev/null exec --no-startup-id numlockx on # enable numlock exec --no-startup-id xset s off dpms 0 0 0 # disable auto screen blanking exec --no-startup-id xautolock -time 5 -locker "$config_dir/lock.sh lock 5" -detectsleep -corners --00 -notify 15 -notifier 'notify-send "Locking screen in 15 seconds" -i system-lock-screen -t 4500' # firefox workspace bindings for_window [class="(?i)Firefox" title="^«work» "] move --no-auto-back-and-forth container to workspace number 2 for_window [class="(?i)Firefox" title="^«music» "] move --no-auto-back-and-forth container to workspace number 10 for_window [class="(?i)Emacs" title="\*Org PDF LaTeX Output\*"] move --no-auto-back-and-forth container to workspace 10 # keyboard settings exec --no-startup-id setxkbmap -option 'ctrl:nocaps' -option "shift:both_capslock" #exec --no-startup-id compton --backend glx --vsync opengl ## Keybindings! ## mode "bypass" { bindsym $mod+Escape mode "default" } bindsym $mod+Escape mode "bypass" bindsym $mod+Return exec alacritty # start a terminal bindsym --release $mod+Shift+Return exec $config_dir/passthrough "Emacs|Alacritty" "super+Return" alacritty # start a terminal in current pwd bindsym $mod+e exec emacsclient -c -n # start emacs bindsym $mod+Shift+e exec emacsclient -ce '(nm)' # start NeverMore bindsym Mod1+Mod4+s exec $config_dir/lock.sh suspend # suspend bindsym Mod1+Control+l exec $config_dir/lock.sh lock 5 # lock screen bindsym Mod1+$mod+l exec $config_dir/lock.sh lock 5 # lock screen bindsym Mod1+Control+Delete exec $config_dir/lock.sh pick # power menu bindsym Mod1+$mod+Delete exec $config_dir/lock.sh pick # power menu bindsym $mod+p exec --no-startup-id $config_dir/killPanel.sh # restart xfce4-panel bindsym $mod+Print exec scrot ~/scratch/'%Y-%m-%d_%H:%M:%S.png' mode "launch" { bindsym e exec emacsclient -c -n; mode "default" bindsym f exec firefox; mode "default" bindsym t exec thunar; mode "default" bindsym --release Shift+t exec $config_dir/passthrough "Emacs" "super+t" thunar; mode "default" bindsym x exec gajim --show; mode "default" bindsym Escape mode "default" bindsym Return mode "default" bindsym grave mode "default" } bindsym $mod+x mode "launch" bindsym $mod+space exec --no-startup-id "rofi -show drun" bindsym $mod+d exec --no-startup-id "rofi -show run" bindsym $mod+t exec --no-startup-id "rofi -show sworkspace" bindsym $mod+Shift+t exec --no-startup-id "rofi -show mworkspace" bindsym $mod+n exec $config_dir/rename_workspace.py bindsym $mod+c exec --no-startup-id rofi-pass --last-used bindsym $mod+Shift+c exec --no-startup-id "$config_dir/pass_typer.py" # Brighness Control bindsym XF86MonBrightnessUp exec light -A 10 bindsym XF86MonBrightnessDown exec light -U 10 bindsym Mod1+XF86MonBrightnessUp exec light -A 1 bindsym Mod1+XF86MonBrightnessDown exec light -U 1 # Keyboard Brightness Control bindsym XF86KbdBrightnessUp exec kbdlight up 10 bindsym XF86KbdBrightnessDown exec kbdlight down 10 bindsym Mod1+XF86KbdBrightnessUp exec kbdlight up 1 bindsym Mod1+XF86KbdBrightnessDown exec kbdlight down 1 # Volume Control bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% bindsym Mod1+XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -1% bindsym Mod1+XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +1% bindsym XF86AudioPrev exec playerctl previous bindsym XF86AudioPlay exec playerctl play-pause bindsym XF86AudioNext exec playerctl next # Screen Rotation bindsym $mod+Mod1+Down exec $config_dir/rotate.sh 0 bindsym $mod+Mod1+Right exec $config_dir/rotate.sh 1 bindsym $mod+Mod1+Up exec $config_dir/rotate.sh 2 bindsym $mod+Mod1+Left exec $config_dir/rotate.sh 3 ## Actual i3 Config ## # Stop all windows from stealing focus when they open no_focus [tiling] no_focus [floating] # Floating windows for_window [class="Wrapper-1.0"] floating enable for_window [class="Pinentry"] floating enable, focus for_window [class="Gcr-prompter"] floating enable, focus ; # Pinentry got renamed to this, I guess? for_window [class="Thunar" title="Rename .*"] focus for_window [class="WSJT-X"] floating disable for_window [class="Freecad" title="Formula editor"] floating enable, focus for_window [class="Freecad" title="Insert length"] floating enable, focus for_window [class="calibre" title="calibre - Preferences.*|User plugins"] floating disable for_window [class="firefox" window_type="dialog"] focus for_window [class="strangeeons" title="Quickscript|Script Output"] floating disable # Font for window titles. font pango:DejaVu Sans Mono 10 # i3 options focus_follows_mouse no default_border pixel 2 for_window [all] title_window_icon padding 2px workspace_auto_back_and_forth yes focus_on_window_activation urgent tiling_drag modifier # Use Mouse+$mod to drag floating windows to their wanted position floating_modifier $mod # kill focused window bindsym $mod+Shift+q kill # toggle border style bindsym $mod+b border toggle 2 # change focus bindsym $mod+h focus left bindsym $mod+j focus down bindsym $mod+k focus up bindsym $mod+l 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 # move focused window bindsym $mod+Shift+h move left bindsym $mod+Shift+j move down bindsym $mod+Shift+k move up bindsym $mod+Shift+l 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 # split in horizontal orientation bindsym $mod+g split h # split in vertical orientation bindsym $mod+v split v # enter fullscreen mode for the focused container bindsym $mod+f fullscreen # change container layout (tabbed, toggle split) bindsym $mod+w layout tabbed bindsym $mod+Shift+s layout toggle split # toggle tiling / floating bindsym $mod+Shift+space floating toggle # change focus between tiling / floating windows bindsym $mod+Control+space focus mode_toggle # focus the parent container bindsym $mod+a focus parent # focus the child container bindsym $mod+z focus child bindsym $mod+Tab workspace back_and_forth # Window swapping mode "swap-dest" { set $swp_cmd swap container with mark quickswap; [con_mark="quickswap"] focus; unmark quickswap; mode default bindsym --whole-window button1 $swp_cmd bindsym --whole-window $mod+Shift+button1 $swp_cmd set $cancel_cmd unmark quickswap; mode "default" bindsym Return $cancel_cmd bindsym Escape $cancel_cmd } bindsym --whole-window $mod+Shift+button1 mark --add quickswap; mode "swap-dest" # Keyboard only bindings (can't use binding mode, since would have to rebind all movement commands bindsym $mod+Mod1+comma mark --add quickswap bindsym $mod+comma swap container with mark quickswap; [con_mark="quickswap"] focus; unmark quickswap # bind workspaces 1-10 to primary monitor, 11-20 to nonprimary monitor workspace 1 output primary workspace 2 output primary workspace 3 output primary workspace 4 output primary workspace 5 output primary workspace 6 output primary workspace 7 output primary workspace 8 output primary workspace 9 output primary workspace 10 output primary workspace 11 output nonprimary workspace 12 output nonprimary workspace 13 output nonprimary workspace 14 output nonprimary workspace 15 output nonprimary workspace 16 output nonprimary workspace 17 output nonprimary workspace 18 output nonprimary workspace 19 output nonprimary workspace 20 output nonprimary # switch to workspace bindsym $mod+1 workspace number 1 bindsym $mod+2 workspace number 2 bindsym $mod+3 workspace number 3 bindsym $mod+4 workspace number 4 bindsym $mod+5 workspace number 5 bindsym $mod+6 workspace number 6 bindsym $mod+7 workspace number 7 bindsym $mod+8 workspace number 8 bindsym $mod+9 workspace number 9 bindsym $mod+0 workspace number 10 bindsym $mod+Mod1+1 workspace number 11 bindsym $mod+Mod1+2 workspace number 12 bindsym $mod+Mod1+3 workspace number 13 bindsym $mod+Mod1+4 workspace number 14 bindsym $mod+Mod1+5 workspace number 15 bindsym $mod+Mod1+6 workspace number 16 bindsym $mod+Mod1+7 workspace number 17 bindsym $mod+Mod1+8 workspace number 18 bindsym $mod+Mod1+9 workspace number 19 bindsym $mod+Mod1+0 workspace number 20 # move focused container to workspace bindsym $mod+Shift+1 move container to workspace number 1 bindsym $mod+Shift+2 move container to workspace number 2 bindsym $mod+Shift+3 move container to workspace number 3 bindsym $mod+Shift+4 move container to workspace number 4 bindsym $mod+Shift+5 move container to workspace number 5 bindsym $mod+Shift+6 move container to workspace number 6 bindsym $mod+Shift+7 move container to workspace number 7 bindsym $mod+Shift+8 move container to workspace number 8 bindsym $mod+Shift+9 move container to workspace number 9 bindsym $mod+Shift+0 move container to workspace number 10 bindsym $mod+Mod1+Shift+1 move container to workspace number 11 bindsym $mod+Mod1+Shift+2 move container to workspace number 12 bindsym $mod+Mod1+Shift+3 move container to workspace number 13 bindsym $mod+Mod1+Shift+4 move container to workspace number 14 bindsym $mod+Mod1+Shift+5 move container to workspace number 15 bindsym $mod+Mod1+Shift+6 move container to workspace number 16 bindsym $mod+Mod1+Shift+7 move container to workspace number 17 bindsym $mod+Mod1+Shift+8 move container to workspace number 18 bindsym $mod+Mod1+Shift+9 move container to workspace number 19 bindsym $mod+Mod1+Shift+0 move container to workspace number 20 # reload the configuration file bindsym $mod+Mod1+Shift+c reload # restart i3 inplace (preserves your layout/session, can be used to upgrade i3) bindsym $mod+Mod1+Shift+r restart # resize window mode "resize" { bindsym h resize shrink width 10 px or 10 ppt bindsym Left resize shrink width 10 px or 10 ppt bindsym j resize grow height 10 px or 10 ppt bindsym Down resize grow height 10 px or 10 ppt bindsym k resize shrink height 10 px or 10 ppt bindsym Up resize shrink height 10 px or 10 ppt bindsym l resize grow width 10 px or 10 ppt bindsym Right resize grow width 10 px or 10 ppt bindsym c exec --no-startup-id $config_dir/compact_workspace_numbers.py; mode "default" bindsym Return mode "default" bindsym Escape mode "default" bindsym grave mode "default" } bindsym $mod+r mode "resize"