# vim: filetype=i3config # i3 config file (v4) # # Please see http://i3wm.org/docs/userguide.html for a complete reference! # Key Shortcuts {{{1 set $mod Mod4 set $alt Mod1 # Colours {{{1 set $base00 #101218 set $base01 #1f222d set $base02 #252936 set $base03 #7780a1 set $base04 #C0C5CE set $base05 #d1d4e0 set $base06 #C9CCDB set $base07 #ffffff set $base08 #ee829f set $base09 #f99170 set $base0A #ffefcc set $base0B #a5ffe1 set $base0C #97e0ff set $base0D #97bbf7 set $base0E #c0b7f9 set $base0F #fcc09e # Widow Colours # border background text indicator client.focused $base01 $base01 $base07 $base0F client.focused_inactive $base02 $base02 $base03 $base0F client.unfocused $base02 $base02 $base03 $base0F client.urgent $base02 $base08 $base00 $base0F # Fonts {{{1 # 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 #restart i3 {{{1 # restart i3 inplace (preserves your layout/session, can be used to upgrade i3) bindsym $mod+Shift+r restart # Window Controll {{{1 # Floating Mod {{{2 # Use Mouse+$mod to drag floating windows to their wanted position floating_modifier $mod # Killing Windows {{{2 # kill focused window bindsym $mod+q kill # Focus {{{2 # Make i3 use proper vim keys 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 although I can't imagine why bindsym $mod+Left focus left bindsym $mod+Down focus down bindsym $mod+Up focus up bindsym $mod+Right focus right # move focused window with vim keys 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 # Layouts / Floats {{{2 # toggle the split direction bindsym $mod+v split toggle # 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 # Workspaces {{{2 #set workspace names set $workspace1 "1: Browser " set $workspace2 "2: Terminal " set $workspace3 "3" set $workspace4 "4" set $workspace5 "5" set $workspace6 "6" set $workspace7 "7" set $workspace8 "8" set $workspace9 "9" set $workspace10 "10 Chat " # switch to workspace bindsym $mod+1 workspace $workspace1 bindsym $mod+2 workspace $workspace2 bindsym $mod+3 workspace $workspace3 bindsym $mod+4 workspace $workspace4 bindsym $mod+5 workspace $workspace5 bindsym $mod+6 workspace $workspace6 bindsym $mod+7 workspace $workspace7 bindsym $mod+8 workspace $workspace8 bindsym $mod+9 workspace $workspace9 bindsym $mod+0 workspace $workspace10 # move focused container to workspace bindsym $mod+Shift+1 move container to workspace $workspace1, workspace $workspace1 bindsym $mod+Shift+2 move container to workspace $workspace2, workspace $workspace2 bindsym $mod+Shift+3 move container to workspace $workspace3, workspace $workspace3 bindsym $mod+Shift+4 move container to workspace $workspace4, workspace $workspace4 bindsym $mod+Shift+5 move container to workspace $workspace5, workspace $workspace5 bindsym $mod+Shift+6 move container to workspace $workspace6, workspace $workspace6 bindsym $mod+Shift+7 move container to workspace $workspace7, workspace $workspace7 bindsym $mod+Shift+8 move container to workspace $workspace8, workspace $workspace8 bindsym $mod+Shift+9 move container to workspace $workspace9, workspace $workspace9 bindsym $mod+Shift+0 move container to workspace $workspace10, workspace $workspace10 # move workspace to left/right bindsym $mod+control+Left move workspace to output left bindsym $mod+control+Right move workspace to output right bindsym $mod+control+h move workspace to output left bindsym $mod+control+l move workspace to output right # Resizing {{{2 # 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 10 px or 10 ppt bindsym j resize grow height 10 px or 10 ppt bindsym k resize shrink height 10 px or 10 ppt bindsym l resize grow width 10 px or 10 ppt bindsym $mod+h resize shrink width 2 px or 2 ppt bindsym $mod+j resize grow height 2 px or 2 ppt bindsym $mod+k resize shrink height 2 px or 2 ppt bindsym $mod+l resize grow width 2 px or 2 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 bindsym Return mode "default" bindsym Escape mode "default" } bindsym $mod+r mode "resize" # Application Shortcuts {{{1 # Special Keyboard buttons {{{2 bindsym XF86Search exec rofi -show drun bindsym XF86Mail exec thunderbird # Pulse Audio controls {{{3 bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% && pkill -SIGRTMIN+10 i3blocks #increase sound volume bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% && pkill -SIGRTMIN+10 i3blocks #decrease sound volume bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle && pkill -SIGRTMIN+10 i3blocks # mute sound # Volume using alt+scroll {{{4 bindsym --whole-window $alt+button4 exec --no-startup-id pactl set-sink-volume 0 -5% && pkill -SIGRTMIN+10 i3blocks #decrease sound volume bindsym --whole-window $alt+button5 exec --no-startup-id pactl set-sink-volume 0 +5% && pkill -SIGRTMIN+10 i3blocks #increase sound volume # Media player controls {{{3 bindsym XF86AudioPlay exec playerctl play-pause bindsym XF86AudioPause exec playerctl pause bindsym XF86AudioNext exec playerctl next bindsym XF86AudioPrev exec playerctl previous # Screen Brightness {{{3 bindsym XF86MonBrightnessUp exec xbacklight -inc 20 # increase screen brightness bindsym XF86MonBrightnessDown exec xbacklight -dec 20 # decrease screen brightness #calculator button bindsym XF86Calculator exec galculator # Print Screen {{{2 # printscreen bindsym Print exec xfce4-screenshooter -f bindsym ctrl+Print exec xfce4-screenshooter -w bindsym Shift+Print exec xfce4-screenshooter -r # Return {{{2 # start a terminal in current working dir bindsym $mod+Return exec ~/.dotfiles/bin/folder-shell # start Ranger in current working dir bindsym $mod+Shift+Return exec ~/.dotfiles/bin/folder-shell "ranger" # Insert {{{2 bindsym $mod+Shift+Insert exec --no-startup-id rofi -modi "clipboard:greenclip print" -show clipboard -run-command '{cmd}' # A {{{2 # Opens R in Terminal in Scratchpad bindsym $mod+a exec --no-startup-id ddspawn dropdowncalc -f mono:pixelsize=24 # Opens Vim in Terminal in Scratchpad bindsym $mod+shift+a exec --no-startup-id ddspawn dropdownnotepad # B {{{2 # Opens DBeaver bindsym $mod+b exec dbeaver # Opens sitee bindsym $mod+Shift+b exec siteEnv # C {{{2 # Opens Chromium bindsym $mod+c exec chromium-snapshot-bin # Opens Chromium in "Big Mode" bindsym $mod+Shift+c exec google-chrome-stable --force-device-scale-factor=2 # D {{{2 # Start Rofi as program launcher bindsym $mod+d exec rofi -show drun # Start Rofi as ssh launcher bindsym $mod+Shift+d exec rofi -show ssh # E {{{2 # Generates reverse shells bindsym $mod+Shift+e exec ~/.dotfiles/rofi/scripts/rofi-reverse-shells # F {{{2 bindsym control+mod1+f exec thunar # L {{{2 # Opens Logout / Lock / Shutdown etc. prompt bindsym ctrl+shift+l exec --no-startup-id ~/.config/rofi/scripts/rofi-shutdown # M {{{2 # Man page lookup - Opens man page as PDF - Uses Rofi to chose bindsym $mod+m exec man -k . | awk '{ print $1 " " $2 }' | rofi -dmenu -p man -matching regex | awk '{ print $2 " " $1 }' | tr -d '()' | xargs -r man -t | ps2pdf - - | zathura - # Same idea as above but uses TLDR pages bindsym $mod+Shift+m exec "/usr/bin/tldr --list-all | sed 's/, /\\n/g' | rofi -dmenu -p 'TL;DR' -matching regex | xargs -r tldr -m | pandoc -f markdown -t ms | groff -ms - -T pdf | zathura -" # Q {{{2 # Starts Qute Browser bindsym $mod+Shift+q exec qutebrowser # S {{{2 # Looks up http status codes bindsym $mod+Shift+s exec cat ~/.dotfiles/rofi/scripts/http-status-codes | rofi -i -dmenu -p 'HTTP Status Code' | awk '{ print "https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/"$1 }' | xargs -r qutebrowser # U {{{2 #Start Rofi as emoji finder bindsym $mod+u exec ~/.dotfiles/rofi/scripts/rofi-emoji # W {{{2 # WP Lookup bindsym $mod+Shift+w exec wpLookup # Y {{{2 # Opens Zeal bindsym $mod+y exec open-youtube # Z {{{2 # Opens Zeal bindsym $mod+z exec zeal # Blocks {{{1 # Send signals to i3 blocks and zsh to tell them that capslock has been pushed # The message to zsh is technically a "window change" which causes zsh to re-draw the prompt # https://unix.stackexchange.com/questions/440184/update-zsh-ps1-propt-on-keypress bindsym --release Caps_Lock exec pkill -SIGRTMIN+11 i3blocks && pkill -SIGWINCH zsh #Send a message to i3blocks to say that numlock has been pushed bindsym --release Num_Lock exec pkill -SIGRTMIN+11 i3blocks # Start i3bar to display a workspace bar (plus the system information i3status # finds out, if available) bar { status_command i3blocks -c ~/.dotfiles/i3/i3blocks.conf output eDP1 output primary output DP-1 tray_output primary tray_output DP-1 position top colors { separator $base03 background $base01 statusline $base05 # border background text focused_workspace $base01 $base01 $base07 active_workspace $base01 $base02 $base03 inactive_workspace $base01 $base01 $base03 urgent_workspace $base01 $base01 $base08 } } bar { status_command i3blocks -c ~/.dotfiles/i3/i3blocks-secondary.conf output HDMI-1 tray_output none position top colors { separator $base03 background $base01 statusline $base05 # border background text focused_workspace $base01 $base01 $base07 active_workspace $base01 $base02 $base03 inactive_workspace $base01 $base01 $base03 urgent_workspace $base01 $base01 $base08 } } # Gaps {{{1 # Removes the boader on everything for_window [class="^.*"] border pixel 0 # Sets up some tiny gaps gaps outer -2 gaps inner 5 smart_gaps on set $mode_gaps Gaps: (o) outer, (i) inner, (d) default set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global) set $mode_gaps_inner Inner 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 d gaps inner current set 10; gaps outer current set 0 bindsym Shift+d gaps inner all set 10; gaps outer all set 0 bindsym Return mode "default" 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 d gaps inner current set 10 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 Shift+d gaps inner all set 10 bindsym Return mode "default" 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 d 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 Shift+d gaps outer all set 0 bindsym Return mode "default" bindsym Escape mode "default" } # Scratchpad {{{1 # General dropdown window traits. The order can matter. for_window [instance="dropdown_*"] floating enable for_window [instance="dropdown_*"] move scratchpad for_window [instance="dropdown_*"] sticky enable for_window [instance="dropdown_*"] scratchpad show for_window [instance="dropdown_*"] resize set 1200 600 for_window [instance="dropdown_*"] border pixel 20 for_window [instance="dropdown_*"] move position center #Startup {{{1 # Compositor {{{2 exec --no-startup-id compton -f -i 0.95 # Notifications {{{2 exec_always --no-startup-id /usr/bin/dunst # KDE Connect {{{2 exec_always --no-startup-id /usr/lib/kdeconnectd exec_always --no-startup-id indicator-kdeconnect # Monitor Setup {{{2 # Work {{{3 exec --no-startup-id xrandr --output DP-1 --primary --mode 2560x1440 --pos 1920x0 --rotate normal --output HDMI-1 --mode 1920x1080 --pos 0x0 --rotate normal --output HDMI-2 --off # Laptop {{{3 exec --no-startup-id xrandr --output HDMI2 --off --output HDMI1 --off --output DP1 --off --output eDP1 --primary --mode 1920x1080 --pos 0x0 --rotate normal --output VIRTUAL1 --off # Clipboard manager {{{2 exec --no-startup-id greenclip daemon # Restore Background {{{2 exec --no-startup-id nitrogen --restore # Blue light filter {{{2 exec --no-startup-id redshift # Layout Manager exec --no-startup-id i3autolayout