Skip to content

Instantly share code, notes, and snippets.

@jensens
Created February 10, 2015 19:19
Show Gist options
  • Save jensens/eea4e85a50f6b9be0878 to your computer and use it in GitHub Desktop.
Save jensens/eea4e85a50f6b9be0878 to your computer and use it in GitHub Desktop.
.i3/config
# jensens i3wm config
set $mainscreen LVDS1
set $sidescreen VGA1
# i3 config file (v4)
#
# Please see http://i3wm.org/docs/userguide.html for a complete reference!
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. ISO 10646 = Unicode
# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1
# The font above is very space-efficient, that is, it looks good, sharp and
# clear in small sizes. However, if you need a lot of unicode glyphs or
# right-to-left text rendering, you should instead use pango for rendering and
# chose a FreeType font, such as:
font pango: Droid Mono 7.5
# Use Mouse+$mod to drag floating windows to their wanted position
floating_modifier $mod
# appereance
hide_edge_borders both
new_window 1pixel
new_float pixel 5
workspace_layout tabbed
# start a terminal
bindsym $mod+Return exec i3-sensible-terminal
# kill focused window
bindsym $mod+Shift+q kill
# start dmenu (a program launcher)
bindsym $mod+Shift+d exec dmenu_run
# There also is the (new) i3-dmenu-desktop which only displays applications
# shipping a .desktop file. It is a wrapper around dmenu, so you need that
# installed.
bindsym $mod+d exec --no-startup-id i3-dmenu-desktop
# 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
# next/previous workspace
bindsym Mod1+Tab focus right
bindsym Mod1+Shift+Tab focus left
bindsym $mod+Tab workspace back_and_forth
bindsym $mod+m move workspace to output left
# 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
# 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
# name workspaces
set $wsterm 1:Term
set $wsweb 2:Web
set $wsdev 3:Dev
set $wsmail 4:Mail
set $wschat 5:Chat
set $wsfile 6:Files
set $wsoffice 7:Office
set $wsmedia 8:Media
set $wsmisc 9:Misc
set $wsrobot 0:Robot
workspace "$wsterm" output $sidescreen
workspace "$wsweb" output $mainscreen
workspace "$wsdev" output $mainscreen
workspace "$wsmail" output $mainscreen
workspace "$wschat" output $mainscreen
workspace "$wsfile" output $mainscreen
workspace "$wsoffice" output $mainscreen
workspace "$wsmedia" output $mainscreen
workspace "$wsmisc" output $mainscreen
workspace "$wsrobot" output $sidescreen
# switch to workspace
bindsym $mod+1 workspace $wsterm
bindsym $mod+2 workspace $wsweb
bindsym $mod+3 workspace $wsdev
bindsym $mod+4 workspace $wsmail
bindsym $mod+5 workspace $wschat
bindsym $mod+6 workspace $wsfile
bindsym $mod+7 workspace $wsoffice
bindsym $mod+8 workspace $wsmedia
bindsym $mod+9 workspace $wsmisc
bindsym $mod+0 workspace $wsrobot
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace $wsterm
bindsym $mod+Shift+2 move container to workspace $wsweb
bindsym $mod+Shift+3 move container to workspace $wsdev
bindsym $mod+Shift+4 move container to workspace $wsmail
bindsym $mod+Shift+5 move container to workspace $wschat
bindsym $mod+Shift+6 move container to workspace $wsfile
bindsym $mod+Shift+7 move container to workspace $wsoffice
bindsym $mod+Shift+8 move container to workspace $wsmedia
bindsym $mod+Shift+9 move container to workspace $wsmisc
bindsym $mod+Shift+0 move container to workspace $wsrobot
# 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'"
# audio
bindsym XF86AudioRaiseVolume exec amixer -q set Master 2dB+ unmute
bindsym XF86AudioLowerVolume exec amixer -q set Master 2dB- unmute
bindsym XF86AudioMute exec amixer -q set Master toggleq
# screen brightness
bindsym XF86MonBrightnessUp exec /usr/bin/xbacklight -inc 10
bindsym XF86MonBrightnessDown exec /usr/bin/xbacklight -dec 5
bindsym XF86Launch1 exec /home/jensens/.i3/toggle_touchpad.sh
# 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
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
}
bindsym $mod+r mode "resize"
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
status_command i3status
output $mainscreen
}
# floating
for_window [class="Arandr"] floating enable
for_window [class="^Gcalctool$"] floating enable
# assign specific windows to workspaces
assign [class="^Skype$"] → $wschat
assign [class="^Firefox$"] → $wsweb
#assign [class="^Firefox$"] → $wsrobot
assign [class="^Thunderbird$"] → $wsmail
assign [class="^Gnome-terminal$"] → $wsterm
assign [class="^Nautilus$"] → $wsfile
assign [class="^Nemo$"] → $wsfile
assign [class="^banshee$"] → $wsmedia
assign [class="^Gnome-control-center\.real$"] → $wsmedia
assign [class="^Sublime_text$"] → $wsdev
assign [class="^.*jetbrains-pycharm.*$"] → $wsdev
assign [class="^Google-chrome$"] → $wsrobot
assign [class="^libreoffice-writer$"] → $wsoffice
# autostart
exec --no-startup-id i3-msg 'workspace $wsterm; exec /usr/bin/i3-sensible-terminal'
exec --no-startup-id i3-msg 'workspace $wsmail; exec /usr/bin/thunderbird'
exec --no-startup-id i3-msg 'workspace $wsweb; exec /usr/bin/firefox'
exec --no-startup-id i3-msg 'workspace $wsdev; exec /usr/bin/subl'
exec --no-startup-id i3-msg 'workspace $wschat; exec /usr/bin/skype'
exec --no-startup-id i3-msg 'workspace $wsfile; exec /usr/bin/nemo'
exec --no-startup-id i3-msg 'workspace $wsfile; exec /usr/bin/sparkleshare'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment