about summary refs log tree commit diff
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2019-12-23T11·19+0000
committerWilliam Carroll <wpcarro@gmail.com>2020-01-06T15·25+0000
commit7ae17daa981a6ac3f7d44c148867271a9dc71ada (patch)
tree85ebd6e3757875a1a4f28e8fee7739f23280b0bf
parent25ce422abd8c7b2bd11a7906e3d155f83f53bacc (diff)
Drop support for i3
While I first switched to EXWM warily and thinking it would only be temporary,
it seems like this switch is here to stay. It turns out that EXWM was exactly
the integration I've been looking for. How serendipitous it that I found it when
I did.

Thank you, @tazjin.
-rw-r--r--README.md7
-rw-r--r--configs/shared/.config/fish/config.fish2
-rw-r--r--configs/shared/.config/i3/config329
-rw-r--r--configs/shared/.config/i3/config.bak330
-rwxr-xr-xconfigs/shared/.config/i3/dmenu_timer.sh113
-rwxr-xr-xconfigs/shared/.config/i3/passmenu25
-rw-r--r--configs/shared/.config/i3/workspace_1.json76
-rw-r--r--configs/shared/.config/i3status/config58
-rw-r--r--configs/shared/.config/lf/marks1
-rw-r--r--configs/shared/.config/nvim/init.vim1
-rw-r--r--configs/shared/.emacs.d/wpc/dotfiles.el1
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-keybindings.el1
-rw-r--r--configs/shared/.emacs.d/wpc/packages/wpc-org.el14
-rw-r--r--configs/shared/.emacs.d/wpc/window-manager.el8
-rw-r--r--configs/shared/.irssi/config1
-rw-r--r--configs/shared/.xsessionrc.shared7
-rw-r--r--configs/shared/aliases.zsh2
-rw-r--r--configs/shared/functions.zsh106
-rw-r--r--configs/shared/misc/.config/i3status/config48
-rw-r--r--configs/shared/variables.zsh1
-rwxr-xr-xi3_exit30
21 files changed, 5 insertions, 1156 deletions
diff --git a/README.md b/README.md
index 02215ff7a8d4..0c1223737d27 100644
--- a/README.md
+++ b/README.md
@@ -17,7 +17,6 @@ $ cd ..
 $ gclone FabriceCastel/gvcci
 ```
 
-- TODO: Ensure edits to `i3.base` work as expected.
 - TODO: Integrate Emacs themes into wpgtk.
 - TODO: Integrate Vim themes into wpgtk.
 - TODO: add these to the install script
@@ -85,12 +84,6 @@ $ for p in $(cat nix-env.txt); do
 > done
 ```
 
-1. Install i3
-
-```bash
-$ sudo apt-get install i3
-```
-
 1. Install dotfiles
 
 - TODO: include steps 2-4 in the `make install` command.
diff --git a/configs/shared/.config/fish/config.fish b/configs/shared/.config/fish/config.fish
index 4e5c5f25440a..306ec7dc59c2 100644
--- a/configs/shared/.config/fish/config.fish
+++ b/configs/shared/.config/fish/config.fish
@@ -262,7 +262,6 @@ abbr --add ea e ~/aliases.zsh
 abbr --add ef e ~/functions.zsh
 abbr --add el e ~/variables.zsh
 abbr --add ex e ~/.Xresources
-abbr --add ei e ~/.config/i3/config
 abbr --add em e ~/.tmux.conf
 abbr --add er e ~/Dropbox/dotfiles/README.md
 # TODO: consider DRYing this up with `e`. Unfortunately, `sudo` won't support
@@ -275,7 +274,6 @@ abbr --add sa source ~/aliases.zsh
 abbr --add sf source ~/functions.zsh
 abbr --add sl source ~/variables.zsh
 abbr --add sx xrdb ~/.Xresources
-abbr --add si i3-msg restart
 abbr --add sm tmux source-file ~/.tmux.conf
 abbr --add sn sudo nixos-rebuild switch
 
diff --git a/configs/shared/.config/i3/config b/configs/shared/.config/i3/config
deleted file mode 100644
index e52bf23b3d96..000000000000
--- a/configs/shared/.config/i3/config
+++ /dev/null
@@ -1,329 +0,0 @@
-# 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.
-
-set $mod Mod1
-set $window Mod1+Ctrl
-set $super Mod4
-set $terminal terminator
-set $browser  google-chrome
-
-# 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 10px
-
-# Use Mouse+$mod to drag floating windows to their wanted position
-floating_modifier $mod
-
-# i3-gaps (depends on i3-gaps installation)
-# gaps inner 7
-# gaps outer 0
-# smart_gaps on
-#
-# bindsym $mod+Ctrl+plus   gaps outer current plus  5
-# bindsym $mod+Ctrl+minus  gaps outer current minus 5
-# bindsym $mod+Shift+plus  gaps inner current plus  5
-# bindsym $mod+Shift+minus gaps inner current minus 5
-
-# Support XF86 keys for audio playback and volume control
-bindsym XF86AudioMute        exec --no-startup-id pactl set-sink-mute   @DEFAULT_SINK@ toggle
-bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10%
-bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10%
-bindsym XF86AudioPrev        exec --no-startup-id playerctl previous
-bindsym XF86AudioNext        exec --no-startup-id playerctl next
-bindsym XF86AudioStop        exec --no-startup-id playerctl play-pause
-bindsym XF86AudioPlay        exec --no-startup-id playerctl play-pause
-
-# KBD Principles:
-# $mod+Ctrl+<app_char>       = starting an application
-# where <app_char> is a reserved character for a commonly used application.
-#
-# <app_char> definitions:
-# terminal = t, Return
-# emacs    = e
-# chrome   = c
-# spotify  = s
-# intellij = i
-bindsym $mod+Ctrl+t exec $terminal
-bindsym $mod+Return exec $terminal
-bindsym $mod+Ctrl+e exec emacsclient --create-frame
-bindsym $mod+Ctrl+c exec $browser
-bindsym $mod+Ctrl+s exec spotify
-bindsym $mod+Ctrl+i exec zsh -i -c intellij
-
-# support dmenu-based bookmarks
-# bindsym $mod+Ctrl+b exec rofi -dmenu <$DOTFILES/bookmarks.txt | xargs $browser
-
-set $bookmarks_mode Bookmarks (a) add, (d) delete, (b) browse
-mode "$bookmarks_mode" {
-     bindsym a exec zsh -i -c add_bookmark,  mode "default"
-     bindsym d exec zsh -i -c rm_bookmark,   mode "default"
-     bindsym b exec zsh -i -c open_bookmark, mode "default"
-
-     bindsym Escape mode "default"
-     bindsym Ctrl+g mode "default"
-     bindsym Ctrl+c mode "default"
-}
-bindsym $mod+Ctrl+b mode "$bookmarks_mode"
-
-# pass integration
-bindsym $mod+Ctrl+backslash exec ~/.config/i3/passmenu # mirroring the 1password KBD
-
-# integrate with Emacs's org-mode
-bindsym $mod+o exec zsh -i -c org_capture
-# TODO: Support "coding size", "dialog-size" (for org_capture)
-# TODO: Support way to cycle through predefined sizes.
-for_window [class="GoogleEmacs" instance="floating"] floating enable, resize set height 1200px, resize set width 780px
-
-# Here is a sketch of the cycle sizes idea.
-# TODO: Support this.
-# mode "cycle_sizes_floating_mode" {
-#      # coding mode
-#      bindsym a for_window [mode="floating", class="actively-selected"] resize set height 1200px, resize set width 780px
-#      bindsym b for_window [mode="floating", class="actively-selected"] resize set height 500px, resize set width 500px
-#
-#      bindsym Escape mode "default"
-#      bindsym Ctrl+g mode "default"
-#      bindsym Ctrl+c mode "default"
-# }
-
-# ensure Spotify windows float
-for_window [class="Spotify"] floating enable
-
-# ensure system service that run through XDG start
-exec --no-startup-id dex -ae i3
-
-# rofi configuration
-bindsym $mod+space exec --no-startup-id rofi -show combi
-bindsym $mod+t     exec --no-startup-id ~/.config/i3/dmenu_timer.sh ~/.local/share/sounds/gong.mp3
-
-# switch workspaces
-bindsym $mod+Tab       workspace next
-bindsym $mod+Shift+Tab workspace prev
-
-# file manager
-bindsym $mod+n exec $terminal -x lf ~/Dropbox
-
-# clipboard manager
-# NOTE: Ctrl-c is already covered since `clipmenu` listens for X clipboard
-# events using `clipnotify`.
-# NOTE: `clipmenud` is started in `.xsessionrc.shared`
-# NOTE: This is a bit of a hack intended to support pasting in both the terminal
-# and in GUI applications. `st` expects `ctrl+Shift+v` while GUIs expect
-# `ctrl+v`. In the instances where GUIs don't support `ctrl+Shift+v` already, it
-# acts like `ctrl+v`, so it should "just work".
-bindsym Ctrl+$mod+v exec clipmenu && xdotool key --clearmodifiers ctrl+Shift+v
-
-# Screenshot
-# TODO: Support variants: (a) App (r) Region (f) Fullscreen.
-# TODO: Support hosting to third-party image hosting.
-set $screenshot_mode Screenshot (g) googleplex (l) local
-mode "$screenshot_mode" {
-     bindsym g exec zsh -i -c snipit,     mode "default"
-     bindsym l exec zsh -i -c screenshot, mode "default"
-
-     bindsym Escape mode "default"
-     bindsym Ctrl+g mode "default"
-     bindsym Ctrl+c mode "default"
-}
-bindsym $mod+s mode "$screenshot_mode"
-
-# online documentation
-bindsym $mod+Shift+slash exec $browser https://i3wm.org/docs/userguide.html
-
-# no title bars
-for_window [class="^.*"] border pixel 1
-
-# disable mouse hover focus
-focus_follows_mouse no
-
-# kill focused window
-bindsym $window+q kill
-
-# Toggle focus
-bindsym $window+f floating toggle
-
-# GTK Themes
-exec --no-startup-id gnome-settings-daemon
-
-# wireless selection mechanism
-exec --no-startup-id nm-applet
-
-# set the split direction
-bindsym $mod+v split vertical
-# cannot bind $mod+h because of movement commands
-bindsym $mod+Shift+v split horizontal
-
-# sound applet
-exec --no-startup-id gnome-sound-applet
-
-# change focus
-bindsym $window+h focus left
-bindsym $window+j focus down
-bindsym $window+k focus up
-bindsym $window+l focus 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
-
-# enter fullscreen mode for the focused container
-bindsym $window+z fullscreen toggle
-
-# change container layout (stacked, tabbed, toggle split)
-bindsym $super+e layout toggle split
-bindsym $super+s layout stacking
-bindsym $super+t layout tabbed
-
-# toggle tiling / floating
-bindsym $mod+Shift+f floating toggle
-
-# toggle stickiness
-bindsym $mod+Shift+s sticky toggle
-
-# focus the parent container
-# bindsym $mod+a focus parent
-bindsym $mod+Shift+a focus child
-
-# 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
-
-# edit configuration files
-# TODO: Standardize KBDs for C,R,U,D operations.
-# TODO: Move shell script to /usr/local/bin
-# Create
-# TODO: Choose another KBD. This is temporary.
-bindsym $mod+a       exec zsh -i -c add_config
-# Read
-bindsym $mod+c       exec zsh -i -c edit_config
-# Update
-# TODO: Support operation to update_config label and path
-# Delete
-bindsym $mod+Shift+c exec zsh -i -c rm_config
-
-# 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
-bindsym $mod+Shift+4 move container to workspace $ws4;  workspace $ws4
-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
-
-# move focused container to workspace
-bindsym $mod+Ctrl+1 move container to workspace $ws1
-bindsym $mod+Ctrl+2 move container to workspace $ws2
-bindsym $mod+Ctrl+3 move container to workspace $ws3
-bindsym $mod+Ctrl+4 move container to workspace $ws4
-bindsym $mod+Ctrl+5 move container to workspace $ws5
-bindsym $mod+Ctrl+6 move container to workspace $ws6
-bindsym $mod+Ctrl+7 move container to workspace $ws7
-bindsym $mod+Ctrl+8 move container to workspace $ws8
-bindsym $mod+Ctrl+9 move container to workspace $ws9
-bindsym $mod+Ctrl+0 move container to workspace $ws10
-
-# reload, restart i3
-bindsym $super+r       exec cat ~/.config/i3/config.shared ~/.config/i3/config.device >~/.config/i3/config; reload
-bindsym $super+Shift+r exec cat ~/.config/i3/config.shared ~/.config/i3/config.device >~/.config/i3/config; restart
-
-# logout dialog
-set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown
-mode "$mode_system" {
-    bindsym l       exec --no-startup-id xsecurelock,                        mode "default"
-    bindsym e       exit,                                                    mode "default"
-    bindsym s       exec --no-startup-id xsecurelock && systemctl suspend,   mode "default"
-    bindsym h       exec --no-startup-id xsecurelock && systemctl hibernate, mode "default"
-    bindsym r       exec --no-startup-id systemctl reboot,                   mode "default"
-    bindsym Shift+s exec --no-startup-id systemctl poweroff,                 mode "default"
-
-    # back to normal: Enter or Escape
-    bindsym Escape mode "default"
-    bindsym Ctrl+g mode "default"
-    bindsym Ctrl+c mode "default"
-}
-bindsym Ctrl+Mod1+Delete mode "$mode_system"
-
-# 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 Escape mode "default"
-        bindsym Ctrl+g mode "default"
-        bindsym Ctrl+c mode "default"
-}
-bindsym $mod+Shift+r mode "resize"
-
-# passthrough mode to support Emacs, Tmux, Vim KBDs for window and pane management
-mode "passthrough" {
-     bindsym $mod+Escape mode "default"
-}
-bindsym $mod+Escape mode "passthrough"
-
-# class                 border     backgr     text      indicator child_border
-client.focused          #83526a   #83526a   #8de0e1 #E8C35F  #83526a
-client.focused_inactive #83526a   #83526a   #8de0e1 #E8C35F  #5a3849
-client.unfocused        #5a3849 #5a3849 #8de0e1 #E8C35F  #5a3849
-client.urgent           #E8C35F   #E8C35F   #8de0e1 #E8C35F  #E8C35F
-client.placeholder      #31213f   #629c9d   #8de0e1 #31213f  #629c9d
-client.background       #31213f
-
-bar {
-    status_command i3status
-    font pango:Monospace 10px
-    position top
-    # disable system tray icons
-    tray_output none
-    colors {
-           background #31213f
-           statusline #83526a # text color in status line
-           separator  #83526a
-           # class            border     text       indicator
-           focused_workspace  #83526a   #8de0e1  #31213f
-           active_workspace   #83526a   #5a3849 #83526a
-           inactive_workspace #5a3849 #83526a   #5a3849
-           urgent_workspace   #5a3849 #83526a   #5a3849
-    }
-}
-
-# wpg integration
-exec --no-startup-id ~/.config/wpg/wp_init.sh
\ No newline at end of file
diff --git a/configs/shared/.config/i3/config.bak b/configs/shared/.config/i3/config.bak
deleted file mode 100644
index ccfae1d453b8..000000000000
--- a/configs/shared/.config/i3/config.bak
+++ /dev/null
@@ -1,330 +0,0 @@
-# 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.
-
-set $mod Mod1
-set $window Mod1+Ctrl
-set $super Mod4
-# TODO: Support alacritty or another fast terminal.
-set $terminal terminator
-set $browser  google-chrome
-
-# 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 10px
-
-# Use Mouse+$mod to drag floating windows to their wanted position
-floating_modifier $mod
-
-# i3-gaps (depends on i3-gaps installation)
-# gaps inner 7
-# gaps outer 0
-# smart_gaps on
-#
-# bindsym $mod+Ctrl+plus   gaps outer current plus  5
-# bindsym $mod+Ctrl+minus  gaps outer current minus 5
-# bindsym $mod+Shift+plus  gaps inner current plus  5
-# bindsym $mod+Shift+minus gaps inner current minus 5
-
-# Support XF86 keys for audio playback and volume control
-bindsym XF86AudioMute        exec --no-startup-id pactl set-sink-mute   @DEFAULT_SINK@ toggle
-bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10%
-bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10%
-bindsym XF86AudioPrev        exec --no-startup-id playerctl previous
-bindsym XF86AudioNext        exec --no-startup-id playerctl next
-bindsym XF86AudioStop        exec --no-startup-id playerctl play-pause
-bindsym XF86AudioPlay        exec --no-startup-id playerctl play-pause
-
-# KBD Principles:
-# $mod+Ctrl+<app_char>       = starting an application
-# where <app_char> is a reserved character for a commonly used application.
-#
-# <app_char> definitions:
-# terminal = t, Return
-# emacs    = e
-# chrome   = c
-# spotify  = s
-# intellij = i
-bindsym $mod+Ctrl+t exec $terminal
-bindsym $mod+Return exec $terminal
-bindsym $mod+Ctrl+e exec emacsclient --create-frame
-bindsym $mod+Ctrl+c exec $browser
-bindsym $mod+Ctrl+s exec spotify
-bindsym $mod+Ctrl+i exec zsh -i -c intellij
-
-# support dmenu-based bookmarks
-# bindsym $mod+Ctrl+b exec rofi -dmenu <$DOTFILES/bookmarks.txt | xargs $browser
-
-set $bookmarks_mode Bookmarks (a) add, (d) delete, (b) browse
-mode "$bookmarks_mode" {
-     bindsym a exec zsh -i -c add_bookmark,  mode "default"
-     bindsym d exec zsh -i -c rm_bookmark,   mode "default"
-     bindsym b exec zsh -i -c open_bookmark, mode "default"
-
-     bindsym Escape mode "default"
-     bindsym Ctrl+g mode "default"
-     bindsym Ctrl+c mode "default"
-}
-bindsym $mod+Ctrl+b mode "$bookmarks_mode"
-
-# pass integration
-bindsym $mod+Ctrl+backslash exec ~/.config/i3/passmenu # mirroring the 1password KBD
-
-# integrate with Emacs's org-mode
-bindsym $mod+o exec zsh -i -c org_capture
-# TODO: Support "coding size", "dialog-size" (for org_capture)
-# TODO: Support way to cycle through predefined sizes.
-for_window [class="GoogleEmacs" instance="floating"] floating enable, resize set height 1200px, resize set width 780px
-
-# Here is a sketch of the cycle sizes idea.
-# TODO: Support this.
-# mode "cycle_sizes_floating_mode" {
-#      # coding mode
-#      bindsym a for_window [mode="floating", class="actively-selected"] resize set height 1200px, resize set width 780px
-#      bindsym b for_window [mode="floating", class="actively-selected"] resize set height 500px, resize set width 500px
-#
-#      bindsym Escape mode "default"
-#      bindsym Ctrl+g mode "default"
-#      bindsym Ctrl+c mode "default"
-# }
-
-# ensure Spotify windows float
-for_window [class="Spotify"] floating enable
-
-# ensure system service that run through XDG start
-exec --no-startup-id dex -ae i3
-
-# rofi configuration
-bindsym $mod+space exec --no-startup-id rofi -show combi
-bindsym $mod+t     exec --no-startup-id ~/.config/i3/dmenu_timer.sh ~/.local/share/sounds/gong.mp3
-
-# switch workspaces
-bindsym $mod+Tab       workspace next
-bindsym $mod+Shift+Tab workspace prev
-
-# file manager
-bindsym $mod+n exec $terminal -x lf ~/Dropbox
-
-# clipboard manager
-# NOTE: Ctrl-c is already covered since `clipmenu` listens for X clipboard
-# events using `clipnotify`.
-# NOTE: `clipmenud` is started in `.xsessionrc.shared`
-# NOTE: This is a bit of a hack intended to support pasting in both the terminal
-# and in GUI applications. `st` expects `ctrl+Shift+v` while GUIs expect
-# `ctrl+v`. In the instances where GUIs don't support `ctrl+Shift+v` already, it
-# acts like `ctrl+v`, so it should "just work".
-bindsym Ctrl+$mod+v exec clipmenu && xdotool key --clearmodifiers ctrl+Shift+v
-
-# Screenshot
-# TODO: Support variants: (a) App (r) Region (f) Fullscreen.
-# TODO: Support hosting to third-party image hosting.
-set $screenshot_mode Screenshot (g) googleplex (l) local
-mode "$screenshot_mode" {
-     bindsym g exec zsh -i -c snipit,     mode "default"
-     bindsym l exec zsh -i -c screenshot, mode "default"
-
-     bindsym Escape mode "default"
-     bindsym Ctrl+g mode "default"
-     bindsym Ctrl+c mode "default"
-}
-bindsym $mod+s mode "$screenshot_mode"
-
-# online documentation
-bindsym $mod+Shift+slash exec $browser https://i3wm.org/docs/userguide.html
-
-# no title bars
-for_window [class="^.*"] border pixel 1
-
-# disable mouse hover focus
-focus_follows_mouse no
-
-# kill focused window
-bindsym $window+q kill
-
-# Toggle focus
-bindsym $window+f floating toggle
-
-# GTK Themes
-exec --no-startup-id gnome-settings-daemon
-
-# wireless selection mechanism
-exec --no-startup-id nm-applet
-
-# set the split direction
-bindsym $mod+v split vertical
-# cannot bind $mod+h because of movement commands
-bindsym $mod+Shift+v split horizontal
-
-# sound applet
-exec --no-startup-id gnome-sound-applet
-
-# change focus
-bindsym $window+h focus left
-bindsym $window+j focus down
-bindsym $window+k focus up
-bindsym $window+l focus 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
-
-# enter fullscreen mode for the focused container
-bindsym $window+z fullscreen toggle
-
-# change container layout (stacked, tabbed, toggle split)
-bindsym $super+e layout toggle split
-bindsym $super+s layout stacking
-bindsym $super+t layout tabbed
-
-# toggle tiling / floating
-bindsym $mod+Shift+f floating toggle
-
-# toggle stickiness
-bindsym $mod+Shift+s sticky toggle
-
-# focus the parent container
-# bindsym $mod+a focus parent
-bindsym $mod+Shift+a focus child
-
-# 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
-
-# edit configuration files
-# TODO: Standardize KBDs for C,R,U,D operations.
-# TODO: Move shell script to /usr/local/bin
-# Create
-# TODO: Choose another KBD. This is temporary.
-bindsym $mod+a       exec zsh -i -c add_config
-# Read
-bindsym $mod+c       exec zsh -i -c edit_config
-# Update
-# TODO: Support operation to update_config label and path
-# Delete
-bindsym $mod+Shift+c exec zsh -i -c rm_config
-
-# 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
-bindsym $mod+Shift+4 move container to workspace $ws4;  workspace $ws4
-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
-
-# move focused container to workspace
-bindsym $mod+Ctrl+1 move container to workspace $ws1
-bindsym $mod+Ctrl+2 move container to workspace $ws2
-bindsym $mod+Ctrl+3 move container to workspace $ws3
-bindsym $mod+Ctrl+4 move container to workspace $ws4
-bindsym $mod+Ctrl+5 move container to workspace $ws5
-bindsym $mod+Ctrl+6 move container to workspace $ws6
-bindsym $mod+Ctrl+7 move container to workspace $ws7
-bindsym $mod+Ctrl+8 move container to workspace $ws8
-bindsym $mod+Ctrl+9 move container to workspace $ws9
-bindsym $mod+Ctrl+0 move container to workspace $ws10
-
-# reload, restart i3
-bindsym $super+r       exec cat ~/.config/i3/config.shared ~/.config/i3/config.device >~/.config/i3/config; reload
-bindsym $super+Shift+r exec cat ~/.config/i3/config.shared ~/.config/i3/config.device >~/.config/i3/config; restart
-
-# logout dialog
-set $mode_system System (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown
-mode "$mode_system" {
-    bindsym l       exec --no-startup-id xsecurelock,                        mode "default"
-    bindsym e       exit,                                                    mode "default"
-    bindsym s       exec --no-startup-id xsecurelock && systemctl suspend,   mode "default"
-    bindsym h       exec --no-startup-id xsecurelock && systemctl hibernate, mode "default"
-    bindsym r       exec --no-startup-id systemctl reboot,                   mode "default"
-    bindsym Shift+s exec --no-startup-id systemctl poweroff,                 mode "default"
-
-    # back to normal: Enter or Escape
-    bindsym Escape mode "default"
-    bindsym Ctrl+g mode "default"
-    bindsym Ctrl+c mode "default"
-}
-bindsym Ctrl+Mod1+Delete mode "$mode_system"
-
-# 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 Escape mode "default"
-        bindsym Ctrl+g mode "default"
-        bindsym Ctrl+c mode "default"
-}
-bindsym $mod+Shift+r mode "resize"
-
-# passthrough mode to support Emacs, Tmux, Vim KBDs for window and pane management
-mode "passthrough" {
-     bindsym $mod+Escape mode "default"
-}
-bindsym $mod+Escape mode "passthrough"
-
-# class                 border     backgr     text      indicator child_border
-# client.focused          {active}   {active}   {color15} {color2}  {active}
-# client.focused_inactive {active}   {active}   {color15} {color2}  {inactive}
-# client.unfocused        {inactive} {inactive} {color15} {color2}  {inactive}
-# client.urgent           {color2}   {color2}   {color15} {color2}  {color2}
-# client.placeholder      {color0}   {color8}   {color15} {color0}  {color8}
-# client.background       {color0}
-
-bar {
-    status_command i3status
-    font pango:Monospace 10px
-    position top
-    # disable system tray icons
-    tray_output none
-    colors {
-           # background {color0}
-           # statusline {inactive}
-           # separator  {active}
-           # class            border     text       indicator
-           # focused_workspace  {active}   {color15}  {color0}
-           # active_workspace   {active}   {inactive} {active}
-           # inactive_workspace {inactive} {active}   {inactive}
-           # urgent_workspace   {inactive} {active}   {inactive}
-    }
-}
-
-# wpg integration
-exec --no-startup-id ~/.config/wpg/wp_init.sh
\ No newline at end of file
diff --git a/configs/shared/.config/i3/dmenu_timer.sh b/configs/shared/.config/i3/dmenu_timer.sh
deleted file mode 100755
index 9d62ead73091..000000000000
--- a/configs/shared/.config/i3/dmenu_timer.sh
+++ /dev/null
@@ -1,113 +0,0 @@
-#!/usr/bin/env bash
-
-# Select common timer intervals with dmenu and play an alarm sound when
-# finished. Useful if you bind a KBD in a window manager such as i3. Pass the
-# path to the alarm mp3 as the only argument.
-#
-# Usage: ./dmenu_timer.sh path/to/alarm.mp3
-
-times=$(cat <<EOF
-1 minute
-2 minutes
-3 minutes
-4 minutes
-5 minutes
-10 minutes
-15 minutes
-20 minutes
-30 minutes
-45 minutes
-1 hour
-2 hours
-EOF
-)
-selection=$(echo "$times" | dmenu)
-
-case $selection in
-  '1 minute')
-    notify-send 'Timer' 'Set for 1 minute' && \
-      sleep 1m && \
-      notify-send 'Timer' 'Finished.' && \
-      mpg123 $1 && \
-      exit 0
-    ;;
-  '2 minutes')
-    notify-send 'Timer' 'Set for 2 minute' && \
-      sleep 2m && \
-      notify-send 'Timer' 'Finished.' && \
-      mpg123 $1 && \
-      exit 0
-    ;;
-  '3 minutes')
-    notify-send 'Timer' 'Set for 3 minutes' && \
-      sleep 3m && \
-      notify-send 'Timer' 'Finished.' && \
-      mpg123 $1 && \
-      exit 0
-    ;;
-  '4 minutes')
-    notify-send 'Timer' 'Set for 4 minutes' && \
-      sleep 4m && \
-      notify-send 'Timer' 'Finished.' && \
-      mpg123 $1 && \
-      exit 0
-    ;;
-  '5 minutes')
-    notify-send 'Timer' 'Set for 5 minutes' && \
-      sleep 5m && \
-      notify-send 'Timer' 'Finished.' && \
-      mpg123 $1 && \
-      exit 0
-    ;;
-  '10 minutes')
-    notify-send 'Timer' 'Set for 10 minutes' && \
-      sleep 10m && \
-      notify-send 'Timer' 'Finished.' && \
-      mpg123 $1 && \
-      exit 0
-    ;;
-  '15 minutes')
-    notify-send 'Timer' 'Set for 15 minutes' && \
-      sleep 15m && \
-      notify-send 'Timer' 'Finished.' && \
-      mpg123 $1 && \
-      exit 0
-    ;;
-  '20 minutes')
-    notify-send 'Timer' 'Set for 20 minutes' && \
-      sleep 20m && \
-      notify-send 'Timer' 'Finished.' && \
-      mpg123 $1 && \
-      exit 0
-    ;;
-  '30 minutes')
-    notify-send 'Timer' 'Set for 30 minutes' && \
-      sleep 30m && \
-      notify-send 'Timer' 'Finished.' && \
-      mpg123 $1 && \
-      exit 0
-    ;;
-  '45 minutes')
-    notify-send 'Timer' 'Set for 45 minutes' && \
-      sleep 45m && \
-      notify-send 'Timer' 'Finished.' && \
-      mpg123 $1 && \
-      exit 0
-    ;;
-  '1 hour')
-    notify-send 'Timer' 'Set for 1 hour' && \
-      sleep 1h && \
-      notify-send 'Timer' 'Finished.' && \
-      mpg123 $1 && \
-      exit 0
-    ;;
-  '2 hours')
-    notify-send 'Timer' 'Set for 2 hours' && \
-      sleep 2h && \
-      notify-send 'Timer' 'Finished.' && \
-      mpg123 $1 && \
-      exit 0
-    ;;
-  *)
-    notify-send 'Timer' 'No supported time selected. Exiting...' && exit 1
-esac
diff --git a/configs/shared/.config/i3/passmenu b/configs/shared/.config/i3/passmenu
deleted file mode 100755
index 71c4538fa61a..000000000000
--- a/configs/shared/.config/i3/passmenu
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env bash
-
-shopt -s nullglob globstar
-
-typeit=0
-if [[ $1 == "--type" ]]; then
-	typeit=1
-	shift
-fi
-
-prefix=${PASSWORD_STORE_DIR-~/.password-store}
-password_files=( "$prefix"/**/*.gpg )
-password_files=( "${password_files[@]#"$prefix"/}" )
-password_files=( "${password_files[@]%.gpg}" )
-
-password=$(printf '%s\n' "${password_files[@]}" | dmenu "$@")
-
-[[ -n $password ]] || exit
-
-if [[ $typeit -eq 0 ]]; then
-	pass show -c "$password" 2>/dev/null
-else
-	pass show "$password" | { IFS= read -r pass; printf %s "$pass"; } |
-		xdotool type --clearmodifiers --file -
-fi
\ No newline at end of file
diff --git a/configs/shared/.config/i3/workspace_1.json b/configs/shared/.config/i3/workspace_1.json
deleted file mode 100644
index b5d3f9d8c53f..000000000000
--- a/configs/shared/.config/i3/workspace_1.json
+++ /dev/null
@@ -1,76 +0,0 @@
-// vim:ts=4:sw=4:et
-{
-    // splitv split container with 2 children
-    "border": "normal",
-    "floating": "auto_off",
-    "layout": "splitv",
-    "percent": 0.5,
-    "type": "con",
-    "nodes": [
-        {
-            "border": "pixel",
-            "current_border_width": 3,
-            "floating": "auto_off",
-            "geometry": {
-               "height": 925,
-               "width": 1072,
-               "x": 0,
-               "y": 0
-            },
-            "name": "emacs@wpcarro.lon.corp.google.com",
-            "percent": 0.5,
-            "swallows": [
-               {
-               "class": "^GoogleEmacs$",
-               "instance": "^emacs$",
-               "title": "^google-emacs$"
-               }
-            ],
-            "type": "con"
-        },
-        {
-            "border": "pixel",
-            "current_border_width": 3,
-            "floating": "auto_off",
-            "geometry": {
-               "height": 484,
-               "width": 724,
-               "x": 0,
-               "y": 0
-            },
-            "name": "i3-save-tree",
-            "percent": 0.5,
-            "swallows": [
-               {
-               "class": "^st\\-256color$",
-               "instance": "^st\\-256color$",
-               "title": "^st-term$"
-               }
-            ],
-            "type": "con"
-        }
-    ]
-}
-
-{
-    "border": "pixel",
-    "current_border_width": 3,
-    "floating": "auto_off",
-    "geometry": {
-       "height": 2125,
-       "width": 1914,
-       "x": 1923,
-       "y": 32
-    },
-    "name": "i3: Layout saving in i3 - Google Chrome",
-    "percent": 0.5,
-    "swallows": [
-       {
-       "class": "^Google\\-chrome$",
-       "instance": "^google\\-chrome$",
-       "title": "Chrome",
-       "window_role": "^browser$"
-       }
-    ],
-    "type": "con"
-}
diff --git a/configs/shared/.config/i3status/config b/configs/shared/.config/i3status/config
deleted file mode 100644
index d276046d9720..000000000000
--- a/configs/shared/.config/i3status/config
+++ /dev/null
@@ -1,58 +0,0 @@
-general {
-  markup = pango
-  separator = " "
-  colors = true
-}
-
-/* order += "battery 0" # TODO: remove this if "battery 1" works for Dell */
-order += "battery 1" # trying to support two different laptops
-order += "tztime local"
-order += "tztime lon"
-order += "tztime est"
-order += "tztime pst"
-order += "disk /"
-
-disk "/" {
-  prefix_type = "decimal"
-  format = "%used/%total"
-}
-
-# Useful commands for dealing with timezones:
-# - cat /etc/timezone
-# - man date
-# - timedatectl
-tztime local {
-  format = "%d/%m/%Y"
-}
-
-tztime lon {
-  format = "LON %H:%M"
-  timezone = "Europe/London"
-}
-
-tztime est {
-  format = "NYC %H:%M"
-  timezone = "US/Eastern"
-}
-
-tztime pst {
-  format = "MTV %H:%M"
-  timezone = "US/Pacific"
-}
-
-# TODO: remove this if "battery 1" works for Dell laptop
-/* battery 0 { */
-/*   format = "Battery %percentage" */
-/*   format_down = "" # This hides the battery when there isn't any (e.g. on a Desktop) */
-/*   low_threshold = 30 */
-/*   threshold_type = time */
-/*   integer_battery_capacity = true */
-/* } */
-
-battery 1 {
-  format = "Battery %percentage"
-  format_down = "" # This hides the battery when there isn't any (e.g. on a Desktop)
-  low_threshold = 30
-  threshold_type = time
-  integer_battery_capacity = true
-}
diff --git a/configs/shared/.config/lf/marks b/configs/shared/.config/lf/marks
index aee01d1aa6c3..79c1e2dcf434 100644
--- a/configs/shared/.config/lf/marks
+++ b/configs/shared/.config/lf/marks
@@ -1,4 +1,3 @@
-':/usr/local/google/home/wpcarro/Dropbox/programming/i3-quickterm
 D:~/Dropbox
 G:/usr/local/google/home/wpcarro/Downloads
 M:/usr/local/google/home/wpcarro/Downloads
diff --git a/configs/shared/.config/nvim/init.vim b/configs/shared/.config/nvim/init.vim
index eb7dbf3b5313..57cfe7ea6a20 100644
--- a/configs/shared/.config/nvim/init.vim
+++ b/configs/shared/.config/nvim/init.vim
@@ -253,7 +253,6 @@ nnoremap <leader>ea :vsplit ~/aliases.zsh<CR>
 nnoremap <leader>ef :vsplit ~/functions.zsh<CR>
 nnoremap <leader>el :vsplit ~/variables.zsh<CR>
 nnoremap <leader>ex :vsplit ~/.Xresources<CR>
-nnoremap <leader>ei :vsplit ~/.config/i3/config.shared<CR>
 
 " quickly source your vimrc
 nnoremap <leader>sv :source $MYVIMRC<CR>
diff --git a/configs/shared/.emacs.d/wpc/dotfiles.el b/configs/shared/.emacs.d/wpc/dotfiles.el
index 3ee99196bde9..1fba034aa2a6 100644
--- a/configs/shared/.emacs.d/wpc/dotfiles.el
+++ b/configs/shared/.emacs.d/wpc/dotfiles.el
@@ -23,7 +23,6 @@
     ("variables" . "~/variables.zsh")
     ("Xresources" . "~/.Xresources.shared")
     ("tmux" . "~/.tmux.conf")
-    ("i3" . "~/.config/i3/config") ;; TODO: Remove this one day.
     ("zshrc" . "~/.zshrc")
     ("configuration.nix" . "~/Dropbox/programming/nixify/configuration.nix")
     ("init.el" . "~/.emacs.d/init.el")
diff --git a/configs/shared/.emacs.d/wpc/packages/wpc-keybindings.el b/configs/shared/.emacs.d/wpc/packages/wpc-keybindings.el
index ed508dc7b1fd..bdf50df67840 100644
--- a/configs/shared/.emacs.d/wpc/packages/wpc-keybindings.el
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-keybindings.el
@@ -124,7 +124,6 @@
     "ef" (lambda () (interactive) (wpc/find-file-split "~/functions.zsh"))
     "el" (lambda () (interactive) (wpc/find-file-split "~/variables.zsh"))
     "ex" (lambda () (interactive) (wpc/find-file-split "~/.Xresources"))
-    "ei" (lambda () (interactive) (wpc/find-file-split "~/.config/i3/config.shared"))
     "em" (lambda () (interactive) (wpc/find-file-split "~/.tmux.conf"))
 
     "l"  #'locate
diff --git a/configs/shared/.emacs.d/wpc/packages/wpc-org.el b/configs/shared/.emacs.d/wpc/packages/wpc-org.el
index d1d981a3ea25..6743540974a8 100644
--- a/configs/shared/.emacs.d/wpc/packages/wpc-org.el
+++ b/configs/shared/.emacs.d/wpc/packages/wpc-org.el
@@ -60,19 +60,5 @@
   :config
   (general-add-hook 'org-mode-hook (enable org-bullets-mode)))
 
-;; i3, `org-mode' integration
-;; Heavily influenced by: https://somethingsomething.us/post/i3_and_orgmode/
-;; TODO: Consider generalizing this since we're using "floating".
-(defadvice org-switch-to-buffer-other-window
-    (after supress-window-splitting activate)
-  "Delete the extra window if we're in a capture frame."
-  (if (equal "floating" (wpc/frame-name))
-      (delete-other-windows)))
-
-(add-hook 'org-capture-after-finalize-hook
-          (lambda ()
-            (when (equal "floating" (wpc/frame-name))
-                (delete-frame))))
-
 (provide 'wpc-org)
 ;;; wpc-org.el ends here
diff --git a/configs/shared/.emacs.d/wpc/window-manager.el b/configs/shared/.emacs.d/wpc/window-manager.el
index 07adf8774510..c7ee93aab664 100644
--- a/configs/shared/.emacs.d/wpc/window-manager.el
+++ b/configs/shared/.emacs.d/wpc/window-manager.el
@@ -1,10 +1,10 @@
-;;; window-manager.el --- Functions to ease my transition to EXWM. -*- lexical-binding: t -*-
+;;; window-manager.el --- Functions augmenting my usage of EXWM. -*- lexical-binding: t -*-
 ;; Author: William Carroll <wpcarro@gmail.com>
 
 ;;; Commentary:
-;; It's possible that this module will be entirely temporary.  Creating it after
-;; switching to EXWM to help transfer my reliance from i3 to EXWM.
-;;
+;; I switched to EXWM from i3, and I haven't looked back.  One day I may write a
+;; poem declaring my love for Emacs and EXWM.  For now, I haven't the time.
+
 ;; Wish list:
 ;; - TODO: Support different startup commands and layouts depending on laptop or
 ;;   desktop.
diff --git a/configs/shared/.irssi/config b/configs/shared/.irssi/config
index cfd6adcc0616..838fa13960e3 100644
--- a/configs/shared/.irssi/config
+++ b/configs/shared/.irssi/config
@@ -30,7 +30,6 @@ chatnets = {
 
 channels = (
   { name = "#nixos"; chatnet = "Freenode"; autojoin = "No"; },
-  { name = "#i3"; chatnet = "Freenode"; autojoin = "No"; },
   { name = "#pass"; chatnet = "Freenode"; autojoin = "No"; },
 );
 
diff --git a/configs/shared/.xsessionrc.shared b/configs/shared/.xsessionrc.shared
index ed12786be986..5c9da5b5a3be 100644
--- a/configs/shared/.xsessionrc.shared
+++ b/configs/shared/.xsessionrc.shared
@@ -5,13 +5,6 @@
 
 export DESKTOP_SESSION=cinnamon  # gnome for trusty.
 
-# NOTE: This may break your compose key.
-# See http://g/i3-users/YBexXGbik7E for more details.
-# NOTE: IM_MODULE is an "Input Method" module, which I believe affects the way
-# keyboard events are processed. `xim` is "X Input Method"; other options
-# include: `ibus`, `fcitx`, but I'm unsure what features each offers.
-# export GTK_IM_MODULE=xim
-
 # Desktop background color.
 xsetroot -solid "#333333"
 
diff --git a/configs/shared/aliases.zsh b/configs/shared/aliases.zsh
index b46f4e8db2fa..84f67f108f44 100644
--- a/configs/shared/aliases.zsh
+++ b/configs/shared/aliases.zsh
@@ -221,7 +221,6 @@ alias ea='e ~/aliases.zsh'
 alias ef='e ~/functions.zsh'
 alias el='e ~/variables.zsh'
 alias ex='e ~/.Xresources'
-alias ei='e ~/.config/i3/config'
 alias em='e ~/.tmux.conf'
 # TODO: consider DRYing this up with `e`. Unfortunately, `sudo` won't support
 # aliases.
@@ -234,7 +233,6 @@ alias sa='source ~/aliases.zsh'
 alias sf='source ~/functions.zsh'
 alias sl='source ~/variables.zsh'
 alias sx='xrdb ~/.Xresources'
-alias si='i3-msg restart'
 alias sm='tmux source-file ~/.tmux.conf'
 alias sn='sudo nixos-rebuild switch'
 
diff --git a/configs/shared/functions.zsh b/configs/shared/functions.zsh
index 9f1e3a77e9d0..3fa7376e5b06 100644
--- a/configs/shared/functions.zsh
+++ b/configs/shared/functions.zsh
@@ -431,7 +431,6 @@ snipit() {
   # Take a screenshot and host it at https://screenshot.googleplex.com
   # Adapted from SnipIt to fit my workflow.
   # depends alert_echo
-  # TODO: Ensure C-c works with i3 integration.
   server="https://screenshot.googleplex.com/upload"
   file="${TEMP:-/tmp}/snipit_temp_$$.png"
 
@@ -477,33 +476,6 @@ dkish() {
   docker run -it $@
 }
 
-# Emacs
-dired() {
-  # Opens either the `$(pwd)` or `$1` in Emacs's `dired`.
-  # Uses i3 to focus Emacs.
-  directory=${1:-$(pwd)}
-  echo $directory
-  emacsclient --eval "(dired \"$directory\")" && focus Emacs
-}
-
-emacsclient_floating() {
-  # Creates an Emacs frame that i3 will float.
-  # All additional arguments are forwarded to `emacsclient`.
-  # Usage: emacs_floating [...additional-args]
-  # depends emacsclient
-  emacsclient \
-    --create-frame \
-    --frame-parameters '(quote (name . "floating"))' \
-    "$@"
-}
-
-org_capture() {
-  # Spawns an Emacs frame running org-capture.
-  # Usage: org_capture
-  # depends emacsclient_floating
-  emacsclient_floating --eval '(org-capture)'
-}
-
 # gist
 gistp() {
   # Creates a gist with the contents of the clipboard.
@@ -684,8 +656,7 @@ update_x11_forwarding() {
 }
 
 monzo_balance() {
-  # Return the balance of my Monzo bank account. Intended to be used in my i3
-  # status bar.
+  # Return the balance of my Monzo bank account.
   # Usage: monzo_balance
   # Depends:
   #   - ~/Dropbox/monzo_creds.json.gpg (encrypted asymmetrically for yourself)
@@ -699,7 +670,6 @@ monzo_balance() {
                        "Authorization: Bearer ${access_token}" \
                        "account_id==${account_id}" | \
                     jq .balance)
-
   echo "£$balance"
 }
 
@@ -1129,12 +1099,6 @@ cider() {
     --app="https://cider.corp.google.com/?ws=$(citc_workspace)"
 }
 
-# i3
-focus() {
-  # Focuses an i3 window by application name.
-  i3-msg "[class=\"$1\"] focus" >/dev/null
-}
-
 # C
 runc() {
   # Compile and run $1. Pass $1 as file.c.
@@ -1208,71 +1172,3 @@ gvcci() {
   # TODO: Why do I need this?
   sleep 0.1 && feh --bg-scale $1
 }
-
-
-################################################################################
-# Configuration file management
-################################################################################
-
-# Easily management the myriad of configuration files required to set my
-# preferences. This is intended to be integrated with i3.
-# TODO: Support editing config name.
-# TODO: Support editing config filepath.
-# TODO: Is there a way to get rofi to just display information.
-#       E.g. output of `ls_configs`.
-
-prompt_config() {
-  # Asks the user which file they'd like to edit. Returns the filepath to that
-  # configuration file.
-  local name=$(kv_keys configuration_files | rofi -dmenu)
-  kv_get configuration_files "$name"
-}
-
-add_config() {
-  # Adds a configuration file to the configuration file database.
-
-  # NOTE: Cannot use `local` here if I want to capture the exit code of the
-  # subshell.
-  name=$(rofi_prompt 'Config name')
-  local ec=$?
-
-  if [ $ec -eq 0 ]; then
-    filepath=$(rofi_prompt 'Path to file')
-    ec=$?
-
-    if [ $ec -eq 0 ]; then
-      kv_set configuration_files "$name" "$filepath"
-    else
-      echo 'Failed to get a path for the config. Exiting...'
-      return $ec
-    fi
-  else
-    echo 'Failed to get a name for the config. Exiting...'
-    return $ec
-  fi
-
-}
-
-edit_config() {
-  # Opens the selected configuration file in an editor.
-  # depends emacsclient_floating
-  emacsclient_floating "$(prompt_config)"
-}
-
-rm_config() {
-  # Removes a configuration file from the configuration file database.
-  name=$(kv_keys configuration_files | rofi -dmenu)
-  local ec=$?
-
-  if [ $ec -eq 0 ]; then
-    kv_delete configuration_files "$name"
-  else
-    echo 'Failed to get a name for the config. Exiting...'
-    return $ec
-  fi
-}
-
-ls_configs() {
-  # Lists
-  kv_entries configuration_files
-}
diff --git a/configs/shared/misc/.config/i3status/config b/configs/shared/misc/.config/i3status/config
deleted file mode 100644
index f6df49ef48d4..000000000000
--- a/configs/shared/misc/.config/i3status/config
+++ /dev/null
@@ -1,48 +0,0 @@
-general {
-  markup = "pango"
-  separator = " "
-  colors = true
-}
-
-order += "battery 0"
-order += "tztime local"
-order += "tztime lon"
-order += "tztime est"
-order += "tztime pst"
-order += "disk /"
-
-disk "/" {
-  prefix_type = "decimal"
-  format = "%used/%total"
-}
-
-# Useful commands for dealing with timezones:
-# - cat /etc/timezone
-# - man date
-# - timedatectl
-tztime local {
-  format = "%d/%m/%Y"
-}
-
-tztime lon {
-  format = "LON %H:%M"
-  timezone = "Europe/London"
-}
-
-tztime est {
-  format = "NYC %H:%M"
-  timezone = "US/Eastern"
-}
-
-tztime pst {
-  format = "MTV %H:%M"
-  timezone = "US/Pacific"
-}
-
-battery 0 {
-  format = "Battery %percentage"
-  format_down = "" # This hides the battery when there isn't any (e.g. on a Desktop)
-  low_threshold = 30
-  threshold_type = time
-  integer_battery_capacity = true
-}
\ No newline at end of file
diff --git a/configs/shared/variables.zsh b/configs/shared/variables.zsh
index 7fac031ae883..e561999dbf31 100644
--- a/configs/shared/variables.zsh
+++ b/configs/shared/variables.zsh
@@ -63,5 +63,4 @@ a="$HOME/aliases.zsh"
 f="$HOME/functions.zsh"
 l="$HOME/variables.zsh" # v is taken by vim
 x="$HOME/.Xresources"
-i="$HOME/.config/i3/config"
 n="/etc/nixos/configuration.nix"
diff --git a/i3_exit b/i3_exit
deleted file mode 100755
index f411d4e57c95..000000000000
--- a/i3_exit
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-lock() {
-    i3lock
-}
-
-case "$1" in
-    lock)
-        xsecurelock
-        ;;
-    logout)
-        i3-msg exit
-        ;;
-    suspend)
-        lock && systemctl suspend
-        ;;
-    hibernate)
-        lock && systemctl hibernate
-        ;;
-    reboot)
-        systemctl reboot
-        ;;
-    shutdown)
-        systemctl poweroff
-        ;;
-    *)
-        echo "Usage: $0 {lock|logout|suspend|hibernate|reboot|shutdown}"
-        exit 2
-esac
-
-exit 0