# vim: filetype=i3config # https://i3wm.org/docs/userguide.html # set modifiers set $mod Mod4 set $alt Mod1 # use mouse+$mod to drag floating windows to their wanted position floating_modifier $alt ## autostart exec --no-startup-id xsettingsd & exec --no-startup-id picom -b exec --no-startup-id flashfocus & exec --no-startup-id nextcloud & exec --no-startup-id copyq & exec --no-startup-id redshift & exec --no-startup-id nm-applet & exec --no-startup-id udiskie --automount --file-manager thunar --tray --notify & exec --no-startup-id /usr/lib/pam_kwallet_init exec --no-startup-id remind -z -k'dunstify --appname="remind" --icon="view-calendar" "⏰ reminder!" "%s" &' ~/.reminders & exec --no-startup-id $HOME/.config/polybar/launch.sh & # start the screensaver, '' at the end is not a typo exec --no-startup-id xidlehook --not-when-fullscreen --not-when-audio --timer normal 300 'betterlockscreen -l dimblur -t "Welcome Back"' '' # swap caps lock and escape, set keyboard layout exec --no-startup-id setxkbmap -model pc105 -layout us -variant colemak -option caps:backspace # tap ctrl to esc, hold ctrl to ctrl exec --no-startup-id xcape -e 'Control_L=Escape' & # set the wallpaper exec --no-startup-id ~/.fehbg # font for window titles font pango:Iosevka 11 gaps inner 5 gaps outer 0 ## bindings ### dunstctl - dunst shortcuts have been deprecated # close notifications with mod+x bindcode $mod+53 exec --no-startup-id dunstctl close bindcode $mod+shift+53 exec --no-startup-id dunstctl close-all # give context menu with mod+o bindcode $mod+47 exec --no-startup-id dunstctl context # show history items with mod+0 (like the old times) bindcode $mod+19 exec --no-startup-id dunstctl history-pop # done, {task,time}warrior control suite bindcode $mod+42 exec --no-startup-id ~/.local/bin/done # type the contents of the clipboard with mod+p bindcode --release $mod+27 exec --no-startup-id ~/.local/bin/type_clipboard.sh # launch emoji picker with mod+c bindcode $mod+54 exec --no-startup-id rofimoji --skin-tone neutral # get the mouse out of the way bindcode $mod+32 exec --no-startup-id xdotool mousemove 1920 1080 # bookmark from clipboard bindcode $mod+30 exec --no-startup-id ~/.local/bin/bukuadd_c # use flameshot with print screen bindsym Print exec flameshot gui # make the currently focused window a scratchpad bindcode $mod+Shift+20 move scratchpad # show the first scratchpad window bindcode $mod+20 scratchpad show # pause notifications for a while with mod+shift+y bindcode $mod+Shift+32 exec ~/.local/bin/toggle_notifications.sh ## shortcuts for frequent programs # zotero on mod+shift+z bindcode $mod+Shift+52 exec zotero # thunar on mod+shift+t bindcode $mod+Shift+41 exec thunar # start a terminal bindsym $mod+Return exec kitty # start rofi with mod+s bindcode $mod+40 exec rofi -show drun # launch the poweroff menu bindsym $mod+Shift+Escape exec --no-startup-id ~/.local/bin/power.sh # kill focused window bindcode $mod+Shift+24 kill bindsym --whole-window $mod+button2 kill # change focus on mod+hnei (qwerty hjkl) bindcode $mod+43 focus left bindcode $mod+44 focus down bindcode $mod+45 focus up bindcode $mod+46 focus right # move focused window on mod+shift+hnei bindcode $mod+Shift+43 move left bindcode $mod+Shift+44 move down bindcode $mod+Shift+45 move up bindcode $mod+Shift+46 move right # split in horizontal orientation with mod+b bindcode $mod+56 split h # split in vertical orientation with mod+v bindcode $mod+55 split v # enter fullscreen mode for the focused container with mod+t bindcode $mod+41 fullscreen toggle # change container layout (stacked, tabbed, toggle split) bindcode $mod+39 layout stacking bindcode $mod+25 layout tabbed bindcode $mod+26 layout toggle split # toggle tiling / floating bindsym $mod+Shift+space floating toggle # toggle sticky floating window with mod+a bindcode $mod+38 sticky toggle # change focus between tiling / floating windows bindsym $mod+space focus mode_toggle # Define names for default workspaces for which we configure key bindings later on. # We use variables to avoid repeating the names in multiple places. # Workspace icons are added at polybar 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 "0" set $wsmusic "music" set $wszotero "zotero" set $wsdesktop "desktop" set $wsbrowser "browser" # 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 $wssteam bindsym $mod+m workspace $wsmusic bindcode $mod+49 workspace $wszotero bindcode $mod+60 workspace $wsdesktop bindcode $mod+21 workspace $wsbrowser # 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 $wssteam bindsym $mod+Shift+m move container to workspace $wsmusic bindcode $mod+Shift+49 move container to workspace $wszotero bindcode $mod+Shift+60 move container to workspace $wsdesktop bindcode $mod+Shift+21 move container to workspace $wsbrowser # reload the configuration file bindcode $mod+Shift+54 reload # restart i3 inplace (preserves your layout/session, can be used to upgrade i3) bindcode $mod+Shift+27 restart default_border pixel 0 default_floating_border pixel 2 for_window [class="Zotero" instance="Toplevel" title="Quick Format Citation"] floating enable for_window [class="Zotero" instance="Toplevel" title="Progress"] floating enable for_window [class="Zotero" window_role="pref"] floating enable for_window [class="zoom" title="Chat"] floating enable for_window [class="Dia" window_role="toolbox_window"] floating enable for_window [class="Pavucontrol" title="Volume Control"] floating enable assign [class="^firefox$"] $wsbrowser assign [class="^Zotero$"] $wszotero for_window [class="Spotify"] move --no-auto-back-and-forth container to workspace $wsmusic # class border background text indicator child_border client.focused #ae81ff #080808 #85dc85 #ff5454 #ae81ff client.focused_inactive #ae81ff #9e9e9e #080808 #ff5454 #5f676a client.unfocused #ae81ff #323437 #b2b2b2 #ff5454 #222222 client.urgent #ae81ff #900000 #b2b2b2 #ff5454 #900000 client.placeholder #ae81ff #0c0c0c #b2b2b2 #ff5454 #0c0c0c client.background #ffffff # config hide_edge_borders none workspace_auto_back_and_forth yes focus_follows_mouse no mouse_warping none focus_wrapping no