# This file has been auto-generated by i3-config-wizard(1). # It will not be overwritten, so edit it as you like. # # Should you change your keyboard layout some time, delete # this file and re-run i3-config-wizard(1). # # i3 config file (v4) # # Please see https://i3wm.org/docs/userguide.html for a complete reference! set $mod Mod4 set $alt Mod1 set $ctrl Control set $shift Shift # 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 # 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 # The combination of xss-lock, nm-applet and pactl is a popular choice, so # they are included here as an example. Modify as you see fit. # 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. exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork # NetworkManager is the most popular way to manage wireless networks on Linux, # and nm-applet is a desktop environment-independent system tray GUI for it. exec --no-startup-id nm-applet # Use pactl to adjust volume in PulseAudio. set $refresh_i3status killall -SIGUSR1 i3status #bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status #bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $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 # 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 bindsym $mod+Return exec i3-sensible-terminal #bindsym $mod+Return exec st # kill focused window #bindsym $mod+Shift+q kill bindsym $mod+q kill # start dmenu (a program launcher) bindsym $mod+d exec --no-startup-id dmenu_run bindsym $mod+b exec --no-startup-id dmenu_run bindsym $mod+space exec --no-startup-id dmenu_run # A more modern dmenu replacement is rofi: # bindcode $mod+40 exec "rofi -modi drun,run -show drun" # There also is i3-dmenu-desktop which only displays applications shipping a # .desktop file. It is a wrapper around dmenu, so you need that installed. # bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop # 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 # 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 # split in horizontal orientation bindsym $mod+h 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 # focus the child container #bindsym $mod+d focus child ## Extra Program Shortcuts ## # Theming. bindsym $mod+t exec lxappearance # Manage files. bindsym $mod+m exec thunar # Internet. #bindsym $mod+i exec firefox bindsym $mod+i exec firefox-flatpak # Lock bindsym $ctrl+$alt+l exec --no-startup-id i3lock -c 000000 -e -f && sleep 1 && xset dpms force off # Code. bindsym $mod+c exec codium-flatpak ## Brightness ## # Use the bracket keys to change the brightness. # light requires sudo privileges unless video group and udev are configured. bindsym $mod+bracketleft exec --no-startup-id "light -U 05 && notify-send 'Brightness - ' $(light -G)" bindsym $mod+bracketright exec --no-startup-id "light -A 05 && notify-send 'Brightness + ' $(light -G)" bindsym $shift+$mod+bracketleft exec --no-startup-id "light -U 20 && notify-send 'Brightness ---' $(light -G)" bindsym $shift+$mod+bracketright exec --no-startup-id "light -A 20 && notify-send 'Brightness +++' $(light -G)" # Also get the actual brightness keys to work!! bindsym XF86MonBrightnessUp exec --no-startup-id "light -A 05 && notify-send 'Brightness + ' $(light -G)" bindsym XF86MonBrightnessDown exec --no-startup-id "light -U 05 && notify-send 'Brightness - ' $(light -G)" bindsym $shift+XF86MonBrightnessUp exec --no-startup-id "light -A 20 && notify-send 'Brightness +++' $(light -G)" bindsym $shift+XF86MonBrightnessDown exec --no-startup-id "light -U 20 && notify-send 'Brightness ---' $(light -G)" ## Volume ## # The volume function is from https://git.hyperling.com/me/env-ansible # Use the comma and period keys to change volume. bindsym $mod+comma exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -05 && notify-send "Volume - " $(volume)' bindsym $mod+period exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume +05 && notify-send "Volume + " $(volume)' bindsym $shift+$mod+comma exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -25 && notify-send "Volume ---" $(volume)' bindsym $shift+$mod+period exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume +25 && notify-send "Volume +++" $(volume)' # Actual volume keys. bindsym XF86AudioMute exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume mute && notify-send "Volume Muted" $(volume)' bindsym XF86AudioRaiseVolume exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume +05 && notify-send "Volume + " $(volume)' bindsym XF86AudioLowerVolume exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -05 && notify-send "Volume - " $(volume)' bindsym $shift+XF86AudioRaiseVolume exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume +25 && notify-send "Volume +++ " $(volume)' bindsym $shift+XF86AudioLowerVolume exec --no-startup-id bash -c 'source /usr/local/bin/volume.function && volume -25 && notify-send "Volume --- " $(volume)' ## Keyboard Brightness ## # Macbooks tend to use 'sysfs/leds/smc::kbd_backlight' # NovaCustom laptop is '' (TBD) bindsym XF86KbdBrightnessUp exec "light -s sysfs/leds/smc::kbd_backlight -A 05 && notify-send 'Keyboard Brightness + ' $(light -s sysfs/leds/smc::kbd_backlight -G)" bindsym XF86KbdBrightnessDown exec "light -s sysfs/leds/smc::kbd_backlight -U 05 && notify-send 'Keyboard Brightness - ' $(light -s sysfs/leds/smc::kbd_backlight -G)" bindsym $shift+XF86KbdBrightnessUp exec "light -s sysfs/leds/smc::kbd_backlight -A 20 && notify-send 'Keyboard Brightness +++' $(light -s sysfs/leds/smc::kbd_backlight -G)" bindsym $shift+XF86KbdBrightnessDown exec "light -s sysfs/leds/smc::kbd_backlight -U 20 && notify-send 'Keyboard Brightness ---' $(light -s sysfs/leds/smc::kbd_backlight -G)" bindsym $mod+apostrophe exec "light -s sysfs/leds/smc::kbd_backlight -A 05 && notify-send 'Keyboard Brightness + ' $(light -s sysfs/leds/smc::kbd_backlight -G)" bindsym $mod+semicolon exec "light -s sysfs/leds/smc::kbd_backlight -U 05 && notify-send 'Keyboard Brightness - ' $(light -s sysfs/leds/smc::kbd_backlight -G)" bindsym $shift+$mod+apostrophe exec "light -s sysfs/leds/smc::kbd_backlight -A 20 && notify-send 'Keyboard Brightness +++' $(light -s sysfs/leds/smc::kbd_backlight -G)" bindsym $shift+$mod+semicolon exec "light -s sysfs/leds/smc::kbd_backlight -U 20 && notify-send 'Keyboard Brightness ---' $(light -s sysfs/leds/smc::kbd_backlight -G)" ## Workspaces ## # Define names for default workspaces for which we configure key bindings later on. # We use variables to avoid repeating the names in multiple places. # Command Line set $ws1 "1 - CMD" # Web Surfing set $ws2 "2 - WEB" # Programming set $ws3 "3 - PRG" # Flutter set $ws4 "4 - FLT" # Chats set $ws5 "5 - CHT" # Editors set $ws6 "6 - EDT" # Entertainment set $ws7 "7 - ENT" # Music set $ws8 "8 - MUS" # Videos set $ws9 "9 - VID" # VPNs set $ws10 "10 - VPN" # switch to workspace 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 # move focused container to workspace 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 ## Keep certain programs in certain tabs. ## assign [class="(?i)Navigator"] $ws2 assign [class="(?i).*Firefox.*"] $ws2 assign [class="(?i).*Codium.*"] $ws3 assign [class="(?i).*Code.*"] $ws4 assign [class="(?i).*VPN.*"] $ws10 assign [class="(?i).*Mullvad.*"] $ws10 ## Workspace Specific Workflows ## bindsym $ctrl+$shift+1 workspace $ws1; exec i3-sensible-terminal; bindsym $ctrl+$shift+2 workspace $ws2; exec firefox-flatpak; bindsym $ctrl+$shift+3 workspace $ws3; exec codium-flatpak; bindsym $ctrl+$shift+4 workspace $ws4; exec code-flatpak; bindsym $ctrl+$shift+5 workspace $ws5; exec "session; dino" ## Reloads, Restarts, Exit ## # 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 # 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'" bindsym $mod+Shift+q exit ## Resizing (Disabled) ## # resize window (you can also use the mouse for that) #mode "resize" { # # These bindings trigger as soon as you enter the resize mode # # # Pressing left will shrink the window’s width. # # Pressing right will grow the window’s width. # # Pressing up will shrink the window’s height. # # Pressing down will grow the window’s height. # bindsym j resize shrink width 10 px or 10 ppt # bindsym k resize grow height 10 px or 10 ppt # bindsym l resize shrink height 10 px or 10 ppt # bindsym semicolon resize grow width 10 px or 10 ppt # # # same bindings, but for the arrow 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 # # # back to normal: Enter or Escape or $mod+r # bindsym Return mode "default" # bindsym Escape mode "default" # bindsym $mod+r mode "default" #} # #bindsym $mod+r mode "resize" ## Taskbar ## # Start i3bar to display a workspace bar (plus the system information i3status # finds out, if available) bar { status_command i3status } ## Startup Applications ## exec i3-sensible-terminal #exec firefox-flatpak exec light -O exec light -N 0