# i3 config file (v4), written by the mesh (module i3, novox/hq ADR 0208). Replaced at every push; # change the module instead. i3's user guide is the reference. # # Other modules add to this configuration as contributions to node-display-session (novox/hq ADR # 0212): the mesh places their lines near the end, each module's under a line naming it, where every # variable set here ($mod, $ws1 … $ws10) is in scope. A file of yours in ~/.config/i3/config.d/ is read # after them, by the include at the very end, and is yours. # # The reload watcher of this module reloads i3 when this file or a drop-in changes, after checking the # result with i3 -C; it never reloads into a configuration with errors. # Font for window titles, and the bars below: the mesh's monospace face (research 026/04). font pango:JetBrainsMono Nerd Font 11 # XDG autostart entries (~/.config/autostart, /etc/xdg/autostart), started once at login. exec --no-startup-id dex --autostart --environment i3 ######################################### ###### Keys #### ######################################### # To find key symbols: xmodmap -pke / xmodmap -pm set $mod Mod4 set $alt Mod1 set $shift Shift set $ctrl Control # use these keys for focus, movement, and resize directions when reaching for # the arrows is not convenient set $left h set $down j set $up k set $right l # use Mouse+$mod to drag floating windows to their wanted position floating_modifier $mod # move tiling windows via drag & drop by left-clicking into the title bar, # or left-clicking anywhere into the window while holding the floating modifier. tiling_drag modifier titlebar # start a terminal: whichever the terminal module names in $TERMINAL bindsym $mod+Return exec i3-sensible-terminal # kill focused window bindsym $mod+$shift+q kill # change focus bindsym $mod+$left focus left bindsym $mod+$down focus down bindsym $mod+$up focus up bindsym $mod+$right focus right 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+$left move left bindsym $mod+$shift+$down move down bindsym $mod+$shift+$up move up bindsym $mod+$shift+$right move right 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+c split h # split in vertical orientation bindsym $mod+v split v # enter fullscreen mode for the focused container bindsym $mod+f fullscreen toggle # change container layout (stacked, tabbed, toggle split) bindsym $mod+s layout stacking bindsym $mod+w layout tabbed bindsym $mod+e layout toggle split # toggle tiling / floating bindsym $mod+$shift+space floating toggle # change focus between tiling / floating windows bindsym $mod+space focus mode_toggle # focus the parent container bindsym $mod+a focus parent # alt-tab functionality bindsym $mod+Tab workspace back_and_forth ######################################### ###### Workspace mgmt #### ######################################### 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" bindsym $mod+1 workspace number $ws1 bindsym $mod+2 workspace number $ws2 bindsym $mod+3 workspace number $ws3 bindsym $mod+4 workspace number $ws4 bindsym $mod+5 workspace number $ws5 bindsym $mod+6 workspace number $ws6 bindsym $mod+7 workspace number $ws7 bindsym $mod+8 workspace number $ws8 bindsym $mod+9 workspace number $ws9 bindsym $mod+0 workspace number $ws10 bindsym $mod+$shift+1 move container to workspace number $ws1 bindsym $mod+$shift+2 move container to workspace number $ws2 bindsym $mod+$shift+3 move container to workspace number $ws3 bindsym $mod+$shift+4 move container to workspace number $ws4 bindsym $mod+$shift+5 move container to workspace number $ws5 bindsym $mod+$shift+6 move container to workspace number $ws6 bindsym $mod+$shift+7 move container to workspace number $ws7 bindsym $mod+$shift+8 move container to workspace number $ws8 bindsym $mod+$shift+9 move container to workspace number $ws9 bindsym $mod+$shift+0 move container to workspace number $ws10 ######################################### ###### Window mgmt #### ######################################### set $resize_px 10 px bindsym $mod+$ctrl+$left resize shrink width $resize_px bindsym $mod+$ctrl+$down resize grow height $resize_px bindsym $mod+$ctrl+$up resize shrink height $resize_px bindsym $mod+$ctrl+$right resize grow width $resize_px ######################################### ###### Session mgmt #### ######################################### 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'" # Lock the screen through logind, so the one locker the lock screen's module runs handles it (and # suspend and lid close too). bindsym $mod+Delete exec --no-startup-id loginctl lock-session # 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 restart ######################################### ###### Borders #### ######################################### default_border pixel 1 smart_borders on ######################################### ###### Gaps #### ######################################### gaps inner 0 gaps outer 0 # Only the accent-bearing slots are themed; background and text keep i3's own defaults. Borders are # `pixel`, so no title bar shows: the colour says which window has focus. # border background text indicator child_border client.focused #de5200 #de5200 #1E2127 #de5200 #de5200 client.urgent #900000 #900000 #ffffff #900000 #900000 ######################################### ###### Until their modules carry them ## ######################################### # Each line below belongs to something other than i3, named on its line. When that module is written # it contributes the line to node-display-session, and the line goes from here in the same change. # The launcher, the clipboard, the wallpaper, the bars, a machine model's keys and the peripherals' # tray already contribute theirs (rofi, clipmenu, feh, i3status-rust, asus-zephyrus-g14, # polychromatic). # the operator's scripts: volume, games volume, sessions, screenshot bindsym XF86AudioRaiseVolume exec --no-startup-id volume-notify up bindsym XF86AudioLowerVolume exec --no-startup-id volume-notify down bindsym XF86AudioMute exec --no-startup-id volume-notify mute bindsym XF86AudioMicMute exec --no-startup-id mic-notify bindsym $ctrl+XF86AudioRaiseVolume exec --no-startup-id set-games-volume 5 bindsym $ctrl+XF86AudioLowerVolume exec --no-startup-id set-games-volume -5 bindsym $mod+$shift+Return exec --no-startup-id ~/scripts/i3-sessions/launcher.sh bindsym --release $ctrl+$shift+x exec --no-startup-id $XDG_CONFIG_HOME/i3/scripts/screenshot.sh ######################################### ###### Other modules' lines #### ######################################### # Placed by the mesh from every other module's contribution (novox/hq ADR 0212): the launcher, the # clipboard, the wallpaper, the bars, a machine model's keys, the peripherals' tray. Each module's # under a line naming it. ${contribution:node-display-session:config} ######################################### ###### Your own files #### ######################################### include ~/.config/i3/config.d/*.conf