# i3 config file (v4) # # Please see https://i3wm.org/docs/userguide.html for a complete reference! ##### Let's go ##### 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 8 ##### Autostart ##### ## Touchpad tap to click exec --no-startup-id xinput set-prop "ETPS/2 Elantech Touchpad" libinput\ Tapping\ Enabled 1 ## 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 ## 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 exec_always --no-startup-id setxkbmap -layout us,ru exec_always --no-startup-id setxkbmap -option 'altwin:menu_win,caps:escape' 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 -- i3lock --image=/home/username/pics/wp/2b16x9.png --nofork exec --no-startup-id xss-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.png ## Second (first) panel # exec --no-startup-id xfce4-panel --disable-wm-check exec_always --no-startup-id ~/.config/i3/polybar.sh & ## Hide mouse exec --no-startup-id mousetrap -t 5 ## MPD Notifications exec --no-startup-id /usr/bin/musnify-mpd ##### BINDINGS ###### ## Toggle keyboard layout bindsym $mod+space exec --no-startup-id xkb-switch --next ## Touchpad toggle bindsym XF86TouchpadToggle exec --no-startup-id bash ~/.config/script/tpad.sh ## Play/Pause MPD bindsym XF86Mail exec --no-startup-id mpc toggle ## Lock Screen bindsym XF86ScreenSaver exec --no-startup-id betterlockscreen -q -l blur ### Brightness ### # The recommended way is to add the user to the # `video` group and give that group write-privileges for the `brightness` file. # See the ArchWiki for more information: # https://wiki.archlinux.org/index.php/Backlight#ACPI ## Increase brightness bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 5 ## Decrease brightness bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 5 ## 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+equal exec --no-startup-id dunstctl history-pop bindsym Mod1+equal exec --no-startup-id dunstctl history-pop bindsym $mod+ctrl+equal exec --no-startup-id dunstctl close-all bindsym Mod1+ctrl+equal 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+minus move scratchpad ## Show the first scratchpad window bindsym Mod1+minus scratchpad show bindsym $mod+minus scratchpad show ## 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@ +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 ## 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 ## 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 ## Calculator bindcode $mod+Shift+40 exec "rofi -show calc -modi calc -no-show-match -no-sort" ## change focus bindsym $mod+h focus left bindsym $mod+j focus down bindsym $mod+k focus up bindsym $mod+l 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+h move left bindsym $mod+Shift+j move down bindsym $mod+Shift+k move up bindsym $mod+Shift+l 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 ## 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'" ## 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 h resize shrink width 5 px or 5 ppt bindsym j resize grow height 5 px or 5 ppt bindsym k resize shrink height 5 px or 5 ppt bindsym l 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 ## same bindings, but more accurate bindsym Shift+h resize shrink width 1 px or 1 ppt bindsym Shift+j resize grow height 1 px or 1 ppt bindsym Shift+k resize shrink height 1 px or 1 ppt bindsym Shift+l 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:󰭣" ## 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 ## 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 $mod+Tab workspace next bindsym $mod+Shift+Tab workspace prev ### Locker ### set $Locker betterlockscreen -q -l blur && sleep 1 bindsym $mod+Pause mode "$mode_system" bindsym Mod1+Pause mode "$mode_system" set $mode_system System (l) lock, (e) logout, (s) suspend, (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 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 #285577 #ffffff #fdf6e3 #fdf6e3 client.focused_inactive #fdf6e3 #5f676a #ffffff #fdf6e3 #fdf6e3 client.unfocused #fdf6e3 #222222 #888888 #fdf6e3 #fdf6e3 client.urgent #fdf6e3 #9a847c #ffffff #9a847c #fdf6e3 client.placeholder #fdf6e3 #0c0c0c #ffffff #000000 #fdf6e3 client.background #ffffff ##### 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 #fdf6e3 # 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 # } ##### Windows ##### default_border pixel 5 assign [class="qutebrowser"] $ws1 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 workspace_auto_back_and_forth yes ##### GAPS ##### gaps inner 9 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" }