# i3 config file (v4) # # Please see https://i3wm.org/docs/userguide.html for a complete reference! ##### Let's go ##### # Super is default set $mod Mod4 # Font for window titles. Will also be used by the bar unless a different font # is used in the bar {} block below. font pango:Fira Mono Medium 9 ##### Autostart ##### ## 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 ## Xrandr exec --no-startup-id xrandr --output HDMI-A-0 --mode 1024x768 --pos 0x120 --rotate normal \ --output DVI-D-0 --primary --mode 1920x1080 --pos 1024x0 --rotate normal --output HDMI-A-1 --off ## Trackball Xinput Props exec_always --no-startup-id ~/.config/script/kensington.sh ## Xgamma exec --no-startup-id xgamma -b 0.9 ## Redshift exec --no-startup-id redshift -l 59:30 ## Dunst exec_always --no-startup-id dunst ## Compositor exec --no-startup-id picom -b ## Autotiling exec_always --no-startup-id autotiling ## Keyboard layouts exec_always --no-startup-id setxkbmap -layout us,ru exec_always --no-startup-id xkb-switch --i3 ## 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 -- betterlockscreen -q -l blur ## Off screensaver exec_always --no-startup-id xset s off exec_always --no-startup-id xset -dpms ## Wallpaper exec --no-startup-id feh --bg-fill ~/pics/wp/2b16x9.jpg ~/pics/wp/2b4x3.png ## First panel exec_always --no-startup-id ~/.config/i3/polybar.sh & ## Compose-key exec_always --no-startup-id setxkbmap -option compose:menu ## Transmission exec --no-startup-id transmission-daemon ## Hide mouse cursor when idle exec --no-startup-id mousetrap -t 5 ##### BINDINGS ###### ## Calendar bindsym $mod+Escape exec --no-startup-id kitty -1 ikhal ## Play/Pause music bindsym $mod+F1 exec --no-startup-id playerctl play-pause ## Stop music bindsym $mod+F2 exec --no-startup-id playerctl stop ## Next/Prev music bindsym $mod+F3 exec --no-startup-id playerctl previous bindsym $mod+F4 exec --no-startup-id playerctl next ## MPD Volume control bindsym $mod+F7 exec --no-startup-id mpc --host=192.168.0.186 volume -5 bindsym $mod+F8 exec --no-startup-id mpc --host=192.168.0.186 volume +5 bindsym $mod+F6 exec --no-startup-id mpc --host=192.168.0.186 toggleoutput 1 ## Toggle keyboard layout bindsym $mod+space exec --no-startup-id xkb-switch --next # ## DDC/CI Monitor Brightness control # bindsym $mod+XF86AudioRaiseVolume exec --no-startup-id ddcutil setvcp 10 + 10 # bindsym $mod+XF86AudioLowerVolume exec --no-startup-id ddcutil setvcp 10 - 10 ## Screenshot bindsym --release Print exec --no-startup-id scrot bindsym --release Ctrl+Print exec --no-startup-id scrot -s --delay 2 bindsym --release Shift+Print exec --no-startup-id scrot --focused ## Notifications show bindsym $mod+F9 exec --no-startup-id dunstctl history-pop bindsym $mod+Shift+F9 exec --no-startup-id dunstctl close-all ## Switch to urgent window bindsym $mod+x [urgent=latest] focus ## Make the currently focused window a scratchpad bindsym $mod+Shift+F5 move scratchpad ## Show the first scratchpad window bindsym $mod+F5 scratchpad show ## Use pactl to adjust volume in PulseAudio. set $refresh_i3status killall -SIGUSR1 i3status bindsym $mod+F12 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +1% && $refresh_i3status bindsym $mod+F11 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -1% && $refresh_i3status bindsym $mod+F10 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 ## start a terminal bindsym $mod+Return exec --no-startup-id kitty -1 ## kill focused window bindsym $mod+q kill ## start dmenu (a program launcher) # bindsym $mod+d 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 ## Rofi keepass bindsym $mod+z exec --no-startup-id rofi-keepassxc -d ~/docs/key/Passwords.kdbx ## Rofi emoji bindsym $mod+ctrl+d exec "rofi -show emoji -modi emoji" ## Rofi Calculator bindcode $mod+Shift+40 exec "rofi -show calc -modi calc -no-show-match -no-sort" ## 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 ## 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 ## 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 5 px or 5 ppt bindsym k resize grow height 5 px or 5 ppt bindsym l resize shrink height 5 px or 5 ppt bindsym semicolon resize grow width 5 px or 5 ppt ## same bindings, but for the arrow keys bindsym Left resize shrink width 5 px or 5 ppt bindsym Down resize grow height 5 px or 5 ppt bindsym Up resize shrink height 5 px or 5 ppt bindsym Right resize grow width 5 px or 5 ppt ## same bindings, but for the arrow keys and more accurate bindsym Shift+Left resize shrink width 1 px or 1 ppt bindsym Shift+Down resize grow height 1 px or 1 ppt bindsym Shift+Up resize shrink height 1 px or 1 ppt bindsym Shift+Right resize grow width 1 px or 1 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" ##### 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. 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:" set $ws11 "11:﯋" set $ws12 "12:" set $ws13 "13:󰞏" # set $ws1 "﯋" # set $ws2 "" # set $ws3 "" # set $ws4 "" # set $ws5 "" # set $ws6 "" # set $ws7 "" # set $ws8 "" # set $ws9 "" # set $ws10 "" # set $ws11 "" # set $ws12 "" ## switch to workspace bindsym $mod+1 workspace $ws1 bindsym $mod+2 workspace $ws2 bindsym $mod+3 workspace $ws3 bindsym $mod+4 workspace $ws4 bindsym $mod+5 workspace $ws5 bindsym $mod+6 workspace $ws6 bindsym $mod+7 workspace $ws7 bindsym $mod+8 workspace $ws8 bindsym $mod+9 workspace $ws9 bindsym $mod+0 workspace $ws10 bindsym Mod1+F1 workspace $ws11 bindsym Mod1+F2 workspace $ws12 bindsym Mod1+F3 workspace $ws13 ## move focused container to workspace bindsym $mod+Shift+1 move container to workspace $ws1 bindsym $mod+Shift+2 move container to workspace $ws2 bindsym $mod+Shift+3 move container to workspace $ws3 bindsym $mod+Shift+4 move container to workspace $ws4 bindsym $mod+Shift+5 move container to workspace $ws5 bindsym $mod+Shift+6 move container to workspace $ws6 bindsym $mod+Shift+7 move container to workspace $ws7 bindsym $mod+Shift+8 move container to workspace $ws8 bindsym $mod+Shift+9 move container to workspace $ws9 bindsym $mod+Shift+0 move container to workspace $ws10 bindsym Mod1+Shift+F1 move container to workspace $ws11 bindsym Mod1+Shift+F2 move container to workspace $ws12 bindsym $mod+Tab workspace next bindsym $mod+Shift+Tab workspace prev bindsym $mod+p move workspace to output left ##### Monitors ##### set $monitor1 DVI-D-0 set $monitor2 HDMI-A-0 workspace $ws1 output $monitor1 workspace $ws2 output $monitor1 workspace $ws3 output $monitor1 workspace $ws4 output $monitor1 workspace $ws5 output $monitor1 workspace $ws6 output $monitor1 workspace $ws7 output $monitor1 workspace $ws8 output $monitor1 workspace $ws9 output $monitor1 workspace $ws10 output $monitor1 workspace $ws11 output $monitor2 workspace $ws12 output $monitor2 workspace $ws13 output $monitor2 ### Locker ### set $Locker betterlockscreen -q -l blur && sleep 1 bindsym $mod+Pause mode "$mode_system" ### need in /etc/sudoers for work # ## rtcwake # username bigg= NOPASSWD: /usr/bin/rtcwake ### set $mode_system System (l) lock, (e) logout, (s) suspend, (w) wake at 7:15, (r) reboot, (Shift+s) shutdown, (h) hibernate 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 systemctl suspend, mode "default" bindsym w exec --no-startup-id $Locker && sudo rtcwake -m mem --date \ $(/home/username/.config/script/rtcdate.sh), 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 h exec --no-startup-id systemctl hibernate, mode "default" ## exit: Enter or Escape bindsym Return mode "default" bindsym Escape mode "default" } ##### Colors ###### ## class border backgr. text indicator child_border client.focused #fdf6e3 #fdf6e3 #657b83 #fdf6e3 #fdf6e3 client.focused_inactive #fdf6e3 #fdf6e3 #657b83 #fdf6e3 #fdf6e3 client.unfocused #fdf6e3 #fdf6e3 #657b83 #fdf6e3 #fdf6e3 client.urgent #fdf6e3 #9a847c #ffffff #9a847c #fdf6e3 client.placeholder #fdf6e3 #fdf6e3 #657b83 #fdf6e3 #fdf6e3 client.background #fdf6e3 ##### i3bar ##### ## Start i3bar to display a workspace bar (plus the system information i3status ## finds out, if available) # bar { # # status_command i3status # strip_workspace_numbers yes # workspace_buttons yes # status_command i3status-rs # position bottom # separator_symbol | # i3bar_command i3bar --transparency # colors { # background #fdf6e3cc # statusline #657b83 # separator #657b83 # # focused_workspace #fdf6e3 #657b83 #fdf6e3 # active_workspace #fdf6e3 #5f676a #ffffff # inactive_workspace #fdf6e3 #fdf6e3 #657b83 # urgent_workspace #fdf6e3 #9a847c #ffffff # binding_mode #fdf6e3 #9a847c #ffffff # # } # tray_padding 2 # strip_workspace_numbers yes # output DVI-D-0 # } # # bar { # strip_workspace_numbers yes # status_command i3status # workspace_buttons yes # position bottom # separator_symbol | # i3bar_command i3bar --transparency # colors { # background #fdf6e3cc # statusline #657b83 # separator #657b83 # # focused_workspace #fdf6e3 #657b83 #fdf6e3 # active_workspace #fdf6e3 #5f676a #ffffff # inactive_workspace #fdf6e3 #fdf6e3 #657b83 # urgent_workspace #fdf6e3 #9a847c #ffffff # binding_mode #fdf6e3 #9a847c #ffffff # } # # tray_padding 2 # strip_workspace_numbers yes # output HDMI-A-0 # } ##### Windows ##### default_border pixel 7 assign [class="qutebrowser"] $ws11 for_window [class="mpv"] floating enable for_window [class="AzPainter"] floating enable for_window [class="feh"] floating enable for_window [class="Sxiv"] floating enable for_window [class="Zathura"] floating enable for_window [class="imv"] floating enable for_window [class="QjackCtl"] floating enable for_window [class="Mojosetup"] floating enable for_window [class="Unreal Tournament 2004"] border pixel 1 workspace_auto_back_and_forth yes ##### GAPS ##### gaps inner 12 set $mode_gaps Gaps: (o)uter, (i)nner, (h)orizontal, (v)ertical, (t)op, (r)ight, (b)ottom, (l)eft set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global) set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global) set $mode_gaps_horiz Horizontal Gaps: +|-|0 (local), Shift + +|-|0 (global) set $mode_gaps_verti Vertical Gaps: +|-|0 (local), Shift + +|-|0 (global) set $mode_gaps_top Top Gaps: +|-|0 (local), Shift + +|-|0 (global) set $mode_gaps_right Right Gaps: +|-|0 (local), Shift + +|-|0 (global) set $mode_gaps_bottom Bottom Gaps: +|-|0 (local), Shift + +|-|0 (global) set $mode_gaps_left Left Gaps: +|-|0 (local), Shift + +|-|0 (global) bindsym $mod+Shift+g mode "$mode_gaps" mode "$mode_gaps" { bindsym o mode "$mode_gaps_outer" bindsym i mode "$mode_gaps_inner" bindsym h mode "$mode_gaps_horiz" bindsym v mode "$mode_gaps_verti" bindsym t mode "$mode_gaps_top" bindsym r mode "$mode_gaps_right" bindsym b mode "$mode_gaps_bottom" bindsym l mode "$mode_gaps_left" bindsym Return mode "$mode_gaps" bindsym Escape mode "default" } mode "$mode_gaps_outer" { bindsym plus gaps outer current plus 5 bindsym minus gaps outer current minus 5 bindsym 0 gaps outer current set 0 bindsym Shift+plus gaps outer all plus 5 bindsym Shift+minus gaps outer all minus 5 bindsym Shift+0 gaps outer all set 0 bindsym Return mode "$mode_gaps" bindsym Escape mode "default" } mode "$mode_gaps_inner" { bindsym plus gaps inner current plus 5 bindsym minus gaps inner current minus 5 bindsym 0 gaps inner current set 0 bindsym Shift+plus gaps inner all plus 5 bindsym Shift+minus gaps inner all minus 5 bindsym Shift+0 gaps inner all set 0 bindsym Return mode "$mode_gaps" bindsym Escape mode "default" } mode "$mode_gaps_horiz" { bindsym plus gaps horizontal current plus 5 bindsym minus gaps horizontal current minus 5 bindsym 0 gaps horizontal current set 0 bindsym Shift+plus gaps horizontal all plus 5 bindsym Shift+minus gaps horizontal all minus 5 bindsym Shift+0 gaps horizontal all set 0 bindsym Return mode "$mode_gaps" bindsym Escape mode "default" } mode "$mode_gaps_verti" { bindsym plus gaps vertical current plus 5 bindsym minus gaps vertical current minus 5 bindsym 0 gaps vertical current set 0 bindsym Shift+plus gaps vertical all plus 5 bindsym Shift+minus gaps vertical all minus 5 bindsym Shift+0 gaps vertical all set 0 bindsym Return mode "$mode_gaps" bindsym Escape mode "default" } mode "$mode_gaps_top" { bindsym plus gaps top current plus 5 bindsym minus gaps top current minus 5 bindsym 0 gaps top current set 0 bindsym Shift+plus gaps top all plus 5 bindsym Shift+minus gaps top all minus 5 bindsym Shift+0 gaps top all set 0 bindsym Return mode "$mode_gaps" bindsym Escape mode "default" } mode "$mode_gaps_right" { bindsym plus gaps right current plus 5 bindsym minus gaps right current minus 5 bindsym 0 gaps right current set 0 bindsym Shift+plus gaps right all plus 5 bindsym Shift+minus gaps right all minus 5 bindsym Shift+0 gaps right all set 0 bindsym Return mode "$mode_gaps" bindsym Escape mode "default" } mode "$mode_gaps_bottom" { bindsym plus gaps bottom current plus 5 bindsym minus gaps bottom current minus 5 bindsym 0 gaps bottom current set 0 bindsym Shift+plus gaps bottom all plus 5 bindsym Shift+minus gaps bottom all minus 5 bindsym Shift+0 gaps bottom all set 0 bindsym Return mode "$mode_gaps" bindsym Escape mode "default" } mode "$mode_gaps_left" { bindsym plus gaps left current plus 5 bindsym minus gaps left current minus 5 bindsym 0 gaps left current set 0 bindsym Shift+plus gaps left all plus 5 bindsym Shift+minus gaps left all minus 5 bindsym Shift+0 gaps left all set 0 bindsym Return mode "$mode_gaps" bindsym Escape mode "default" }