about summary refs log blame commit diff
path: root/configs/linux/misc/.config/i3/config
blob: 1feb71dc8195863388e843ec3f15bbbf8cc75ffb (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

             













                                                                               







                                                                              















                                                                           

                                                           



                                                          

                                                           


                                                          
 
                





                                                                                                                   

                            

                                              
 
                  



                                                                   
 




















                                                                                                    

               
                                       




                           
                                                  
 





                                          


                                                                                



                                       
              



                                                   

                     



                                   



                                                                  





                                                         
                            


                                  



                                    

                                                
                                





                                                                                   








             

              
                   










                              










                                                                                                                  


                               


                                                     
                                                      
                                                      



                                                      
                                           
 
                                  

                                                                         
 
        
                       




                                                                           




                           
set $mod Mod1

# Keymapping philosophy:
# When I feel it's appropriate, I try to borrow existing KBDs from OSX or
# Windows. For example, I use Ctrl+Alt+Del to start the screen lock, since this
# is a really well-known KBD. One notable difference is that when I'm borrowing
# OSX KBDs, I prefer using Alt instead of Super since the keyboard that I'm
# using has the Alt key in the same location as the Super key on my mac
# keyboard. I could rebind this, and I just may. But for now, that's worth
# pointing out.
# The reason behind borrowing from Windows and OSX is that some of these
# keybindings are hardwired into my muscle memory. I also tend to work between
# Linux and OSX quite often. Since OSX is much more difficult to remap KBDs
# than it is in Linux, I prefer to support the OSX KBDs to reduce the number of
# KBDs my feeble memory needs to store.

# 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

# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod

# gaps
# gaps inner 20
# gaps outer 0
# smart_gaps on

# KBD Principles:
# $mod+Ctrl+<app_char>       = starting an application vertically
# $mod+Ctrl+Shift+<app_char> = starting an application horizontally
# where <app_char> is a reserved character for a commonly used application.
#
# <app_char> definitions:
# terminal = t, Return
# emacs    = e
# chrome   = c
# spotify  = s
#
# Vertical
bindsym $mod+Ctrl+t            split v; exec gnome-terminal
bindsym $mod+Ctrl+Return       split v; exec gnome-terminal
bindsym $mod+Ctrl+e            split v; exec emacs
bindsym $mod+Ctrl+c            split v; exec google-chrome
bindsym $mod+Ctrl+s            split v; exec spotify
# Horizontal
bindsym $mod+Ctrl+Shift+t      split h; exec gnome-terminal
bindsym $mod+Ctrl+Shift+Return split h; exec gnome-terminal
bindsym $mod+Ctrl+Shift+e      split h; exec emacs
bindsym $mod+Ctrl+Shift+c      split h; exec google-chrome
bindsym $mod+Ctrl+Shift+s      split h; exec spotify

# audio controls
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10%   # MBP Volume Up
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10%   # MBP Volume Down
bindsym XF86AudioMute        exec --no-startup-id pactl set-sink-mute   @DEFAULT_SINK@ toggle # MBP Mute
bindsym F12                  exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10%   # same Fn keys as MBP
bindsym F11                  exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10%   # same Fn keys as MBP
bindsym F10                  exec --no-startup-id pactl set-sink-mute   @DEFAULT_SINK@ toggle # same Fn keys as MBP

# screen brightness controls
bindsym XF86MonBrightnessUp   exec light -A 10
bindsym XF86MonBrightnessDown exec light -U 10

# ensure wallpaper
exec --no-startup-id feh --bg-scale ~/Pictures/cartoon-outdoors.jpg

# ensure system service that run through XDG start
exec dex -ae i3

# rofi window, workspace settings
bindsym Mod4+space exec --no-startup-id i3-dmenu-desktop --dmenu='rofi -i -dmenu -width 40 -lines 8'
bindsym $mod+space exec "rofi -show run"
bindsym $mod+w     exec "rofi -show window"
bindsym $mod+b     exec "rofi -show Workspace"

# music player kbds
bindsym F9 exec --no-startup-id playerctl next       # same Fn keys as MBP
bindsym F8 exec --no-startup-id playerctl play-pause # same Fn keys as MBP
bindsym F7 exec --no-startup-id playerctl previous   # same Fn keys as MBP

# Screenshot
bindsym Ctrl+Print   exec scrot  ~/Pictures/screenshots/%b-%d-%Y_%T.png          # Windows style
# TODO: debug
bindsym $mod+Print   exec scrot --focused ~/Pictures/screenshots/%b-%d-%Y_%T.png # Windows style
bindsym $mod+Shift+3 exec scrot ~/Pictures/screenshots/%b-%d-%Y_%T.png           # OSX style
# TODO: debug
bindsym $mod+Shift+4 exec scrot --select ~/Pictures/screenshots/%b-%d-%Y_%T.png  # OSX style

# online documentation
bindsym $mod+Shift+slash exec google-chrome https://i3wm.org/docs/userguide.html

# no title bars
for_window [class="^.*"] border pixel 2

# disable mouse hover focus
focus_follows_mouse no

# kill focused window
bindsym $mod+q exec ~/.config/i3/i3-and-emacs quit

# GTK Themes
exec --no-startup-id gnome-settings-daemon

# wireless selection mechanism
exec --no-startup-id nm-applet

# lock the screen (Window's famous Ctrl-Alt-Delete)
bindsym $mod+Ctrl+Delete exec "/usr/share/goobuntu-desktop-files/xsecurelock.sh"
bindsym $mod+Shift+q     exec "/usr/share/goobuntu-desktop-files/xsecurelock.sh"

# sound applet
exec --no-startup-id gnome-sound-applet

# change focus
bindsym $mod+h exec ~/.config/i3/i3-and-emacs left
bindsym $mod+j exec ~/.config/i3/i3-and-emacs down
bindsym $mod+k exec ~/.config/i3/i3-and-emacs up
bindsym $mod+l exec ~/.config/i3/i3-and-emacs right

# move focused window
bindsym $mod+Shift+h move left  100
bindsym $mod+Shift+j move down  100
bindsym $mod+Shift+k move up    100
bindsym $mod+Shift+l move right 100

# enable duplicating the current window vertically or horizontally
# bindsym $mod+- split v exec terminator
# bindsym $mod+\ split h exec terminator

# enter fullscreen mode for the focused container
bindsym $mod+z fullscreen toggle

# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+t layout tabbed
bindsym $mod+e layout toggle split

# toggle tiling / floating
bindsym $mod+Shift+f floating toggle

# toggle stickiness
bindsym $mod+Shift+s sticky toggle

# change focus between tiling / floating windows
bindsym $mod+f focus mode_toggle

# focus the parent container
bindsym $mod+a focus parent

# 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"

# jump 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 and follow focused container to workspace
bindsym $mod+Shift+1 move container to workspace $ws1;  workspace $ws1
bindsym $mod+Shift+2 move container to workspace $ws2;  workspace $ws2
# bindsym $mod+Shift+3 move container to workspace $ws3;  workspace $ws3 # commented out to support screenshot KBD
# bindsym $mod+Shift+4 move container to workspace $ws4;  workspace $ws4 # commented out to support screenshot KBD
bindsym $mod+Shift+5 move container to workspace $ws5;  workspace $ws5
bindsym $mod+Shift+6 move container to workspace $ws6;  workspace $ws6
bindsym $mod+Shift+7 move container to workspace $ws7;  workspace $ws7
bindsym $mod+Shift+8 move container to workspace $ws8;  workspace $ws8
bindsym $mod+Shift+9 move container to workspace $ws9;  workspace $ws9
bindsym $mod+Shift+0 move container to workspace $ws10; workspace $ws10

# reload the configuration file
bindsym $mod+Shift+c reload

# resize window (you can also use the mouse for that)
mode "resize" {
        bindsym h resize shrink width  10 px or 10 ppt
        bindsym j resize shrink height 10 px or 10 ppt
        bindsym k resize grow   height 10 px or 10 ppt
        bindsym l resize grow   width  10 px or 10 ppt
        bindsym Return       mode "default"
        bindsym Caps_Lock    mode "default"
        bindsym $mod+Shift+r mode "default"
}
bindsym $mod+Shift+r mode "resize"
# NOTE: this eclipses the restart kbd, so rebind that to something useful
bindsym $mod+r restart

# Colors
set $foreground #8cffa9
set $background #dfdfdf

# window borders
# Format:      border      background  text        indicator   child_border
client.focused $foreground $background $foreground $foreground $foreground

bar {
    status_command i3status
    position top
}