# i3 config file (v4) # Configuration by Tibo De Peuter 2022 # Preferred keyboard layout: azerty # ========= # Autostart # ========= # Increase font size for everything except applications exec xrandr --dpi 125 -vsync # Start XDG autostart .desktop files using dex. See also # https://wiki.archlinux.org/index.php/XDG_Autostart exec --no-startup-id dex --autostart --environment i3 # Start f.lux exec --no-startup-id xflux -l 51.018613 -g 3.752184 -k 3000 -r 1 # Set background exec --no-startup-id sh ~/.config/i3/scripts/background.sh # Automatically switch horizontal/vertical # exec_always --no-startup-id autotiling # ================= # General variables # ================= set $alt Mod1 set $winkey Mod4 set $refresh_i3status killall -SIGUSR1 i3status # ================= # Window shortcuts # ================= # 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 focus_follows_mouse no # Change focus bindsym $winkey+Left focus left bindsym $winkey+Down focus down bindsym $winkey+Up focus up bindsym $winkey+Right focus right # Change focus (alternative keys) bindsym $winkey+q focus left bindsym $winkey+s focus down bindsym $winkey+z focus up bindsym $winkey+d focus right bindsym $alt+Tab focus next bindsym $alt+Shift+Tab focus prev # Move focused window bindsym $winkey+Shift+Left move left bindsym $winkey+Shift+Down move down bindsym $winkey+Shift+Up move up bindsym $winkey+Shift+Right move right # Move focused window (alternative keys) bindsym $winkey+j move left bindsym $winkey+k move down bindsym $winkey+i move up bindsym $winkey+l move right # Layouts bindsym $winkey+w layout toggle split bindsym $winkey+x layout tabbed bindsym $winkey+b focus mode_toggle bindsym $winkey+f floating toggle bindsym $winkey+Next move scratchpad bindsym $winkey+Prior scratchpad show bindsym $winkey+Control_L+Shift+space focus mode_toggle # Split in horizontal orientation bindsym $winkey+h split h # Split in vertical orientation bindsym $winkey+v split v # Resize window menu mode "resize" { bindsym j resize grow width 10 px or 10 ppt bindsym k resize grow height 10 px or 10 ppt bindsym l resize shrink width 10 px or 10 ppt bindsym i resize shrink height 10 px or 10 ppt bindsym Shift+j resize grow width 50 px or 50 ppt bindsym Shift+k resize grow height 50 px or 50 ppt bindsym Shift+l resize shrink width 50 px or 50 ppt bindsym Shift+i resize shrink height 50 px or 50 ppt # Alternative keys bindsym Left resize shrink width 10 px or 10 ppt bindsym Down resize grow height 10 px or 10 ppt bindsym Up resize shrink height 10 px or 10 ppt bindsym Right resize grow width 10 px or 10 ppt bindsym Shift+Left resize shrink width 50 px or 50 ppt bindsym Shift+Down resize grow height 50 px or 50 ppt bindsym Shift+Up resize shrink height 50 px or 50 ppt bindsym Shift+Right resize grow width 50 px or 50 ppt # Window movement bindsym $winkey+j move left bindsym $winkey+k move down bindsym $winkey+l move right bindsym $winkey+i move up # Alternative keys bindsym $winkey+Left move left bindsym $winkey+Down move down bindsym $winkey+Right move right bindsym $winkey+Up move up # Go back bindsym Return mode "default" bindsym Escape mode "default" bindsym $winkey+r mode "default" } bindsym $winkey+r mode "resize" # ========== # Workspaces # ========== # Define names for default workspaces for which we configure key bindings later on. 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" # switch to workspace bindsym $winkey+ampersand workspace number $ws1 bindsym $winkey+eacute workspace number $ws2 bindsym $winkey+quotedbl workspace number $ws3 bindsym $winkey+apostrophe workspace number $ws4 bindsym $winkey+parenleft workspace number $ws5 bindsym $winkey+section workspace number $ws6 bindsym $winkey+egrave workspace number $ws7 bindsym $winkey+exclam workspace number $ws8 bindsym $winkey+ccedilla workspace number $ws9 bindsym $winkey+agrave workspace number $ws10 bindsym $winkey+Control+Right workspace next bindsym $winkey+Control+Left workspace prev # move focused container to workspace bindsym $winkey+Shift+ampersand move container to workspace number $ws1; \ workspace number $ws1 bindsym $winkey+Shift+eacute move container to workspace number $ws2; \ workspace number $ws2 bindsym $winkey+Shift+quotedbl move container to workspace number $ws3; \ workspace number $ws3 bindsym $winkey+Shift+apostrophe move container to workspace number $ws4; \ workspace number $ws4 bindsym $winkey+Shift+5 move container to workspace number $ws5; \ workspace number $ws5 bindsym $winkey+Shift+section move container to workspace number $ws6; \ workspace number $ws6 bindsym $winkey+Shift+egrave move container to workspace number $ws7; \ workspace number $ws7 bindsym $winkey+Shift+exclam move container to workspace number $ws8; \ workspace number $ws8 bindsym $winkey+Shift+ccedilla move container to workspace number $ws9; \ workspace number $ws9 bindsym $winkey+Shift+agrave move container to workspace number $ws10; \ workspace number $ws10 bindsym $winkey+Control+Shift+Right move container to workspace next; workspace next bindsym $winkey+Control+Shift+Left move container to workspace prev; workspace prev # ============== # System Control # ============== # Reload statusbar if there are changes to i.e. volume # exec --no-startup-id i3-msg -t command reload # Reload the configuration file bindsym $alt+Shift+c reload # Restart i3 inplace (preserves your layout/session, can be used to upgrade i3) bindsym $alt+Shift+r restart # Exit i3 (logs you out of your X session) bindsym $alt+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'" # kill focused window bindsym $winkey+Shift+q kill # Start a terminal bindsym $winkey+Return exec i3-sensible-terminal # Start rofi (a program launcher) bindsym $alt+space exec --no-startup-id rofi -show # Set notification script set $notify sh ~/.config/i3/scripts/notify.sh # Brightness bindsym XF86MonBrightnessDown exec brightnessctl -e s 5%- && $notify -b bindsym XF86MonBrightnessUp exec brightnessctl -e s +5% && $notify -b # Media control bindsym F7 exec --no-startup-id playerctl play-pause bindsym Shift+F8 exec --no-startup-id playerctl previous bindsym Shift+F9 exec --no-startup-id playerctl next # Volume control bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +2% \ && $refresh_i3status && $notify -v bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -2% \ && $refresh_i3status && $notify -v bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle \ && $refresh_i3status && $notify -v bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle \ && $refresh_i3status # Lockscreen set $lock sh ~/.config/i3/scripts/lock.sh && brightnessctl set 25% && sleep 1 bindsym $winkey+Delete exec --no-startup-id $lock # exec --no-startup-id xss-lock --transfer-sleep-lock -- exec $i3lockwall --nofork exec --no-startup-id ~/.config/i3/scripts/dimming.sh exec --no-startup-id ~/.config/i3/scripts/locking.sh set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown mode "$mode_system" { bindsym l exec --no-startup-id $lock; mode "default" bindsym e exec --no-startup-id i3-msg exit; mode "default" bindsym s exec --no-startup-id $lock && systemctl suspend; mode "default" bindsym h exec --no-startup-id $lock && 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 Return mode "default" bindsym Escape mode "default" } bindsym Control+$alt+Delete mode "$mode_system" # ======= # Styling # ======= # TODO Change cursor style bar { status_command i3status --config ~/.config/i3/i3status.conf mode hide position bottom tray_padding 0 px workspace_min_width 40 separator_symbol "~" colors { background #1e1e1e statusline #ffffff separator #ffffff focused_workspace #00897b #00897b #ffffff active_workspace #ffffff #ffffff #ffffff inactive_workspace #33393f #33393f #ffffff urgent_workspace #e8442e #e8442e #ffffff binding_mode #1e5774 #1e5773 #ffffff } } title_align center default_border normal 1 hide_edge_borders both # Toggle Show title bindsym $alt+Next border pixel 1 bindsym $alt+Prior border normal 1 # Class border backgr text indic. child_border client.focused #000000 #00897b #ffffff #00897b #000000 client.focused_inactive #000000 #222222 #888888 #484e50 #000000 client.unfocused #000000 #222222 #888888 #292d2e #000000 # ===================== # Window configurations # ===================== for_window [window_role="pop-up"] floating enable for_window [window_role="task_dialog"] floating enable for_window [class="Qalculate-gtk"] floating enable for_window [class="Caprine"] floating enable # Homewritten software testing in IntelliJ for_window [class="be.ugent"] floating enable