# 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 # 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 # ================= # General variables # ================= set $mod Mod1 set $mod2 Mod2 set $alt Mod1 set $winkey Mod4 set $ctrl Control 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 # Use Mouse+$mod to drag floating windows to their wanted position floating_modifier $winkey 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 # Toggle fullscreen bindsym Shift+Prior fullscreen toggle # 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 # back to normal: Enter or Escape or $mod+r 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 # Brightness bindsym XF86MonBrightnessDown exec brightnessctl -e s 5%- bindsym XF86MonBrightnessUp exec brightnessctl -e s +5% # 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@ +5% \ && $refresh_i3status bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5% \ && $refresh_i3status bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle \ && $refresh_i3status bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle \ && $refresh_i3status # TODO # Lockscreen # xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the # screen before suspend. Use loginctl lock-session to lock your screen. set $i3lockwall sh ~/.config/i3/scripts/lock.sh bindsym $winkey+Delete exec --no-startup-id $i3lockwall # 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 $Locker sh ~/.config/i3/scripts/lock .sh && sleep 1 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 $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 Return mode "default" bindsym Escape mode "default" } # bindsym $winkey+Delete mode "$mode_system" # ======= # Styling # ======= # TODO Change cursor style # Start i3bar to display a workspace bar (plus the system information i3status # finds out, if available) bar { status_command i3status --config ~/.config/i3/i3status.conf mode hide position bottom tray_padding 1 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 hide_edge_borders smart # 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