nix-config/dotfiles/.config/i3/config
Donovan Glover 64646500be
Add .Xresources theme support
This commit adds theme support (through .Xresources) for i3 and polybar.

As an added bonus, theme.cr has been updated to make changing these
colors automatic.

The termite config has been updated to reflect the new settings from
theme.cr.
2017-12-26 23:47:34 -05:00

226 lines
7.7 KiB
INI

##################################################################################
#
# New Start: A modern Arch workflow built with an emphasis on functionality.
# Copyright (C) 2017 Donovan Glover
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
##################################################################################
# Set the command key for i3 to super
set $mod Mod4
# Set the secondary command key to alt
set $alt Mod1
# Use Hack as our preferred font of choice
font pango:Hack 12
# Add a subtle border to all windows (allows us to easily see which one has focus)
for_window [class="^.*"] border pixel 1
new_window pixel 1
####################################################################
# i3 Controls - These are the core keys that you use to manage
# your windows, some of which are already i3 defaults
####################################################################
# ========================= Managing Windows =========================
# Open a new terminal
bindsym $mod+Return exec termite
# Close the currently focused window
bindsym $mod+q kill
bindsym $mod+Shift+q kill
# Change the focus between windows, vim style
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right
# Move the currently focused window, vim style
bindsym $mod+Shift+h move left
bindsym $mod+Shift+j move down
bindsym $mod+Shift+k move up
bindsym $mod+Shift+l move right
# Toggle fullscreen (also bind F11 so certain programs use i3's fullscreen)
bindsym $mod+f fullscreen toggle
bindsym F11 fullscreen toggle
# Switch to an updated window (useful for opening URLs and jumping to the browser)
bindsym $mod+p [urgent=latest] focus
# Open new windows horizontally (to the right) or vertically (below)
bindsym $mod+semicolon split horizontal
bindsym $mod+v split vertical
# ========================= Floating Windows =========================
# Toggle floating mode
bindsym $mod+Shift+space floating toggle
# Hold down $mod and use the pointer to move floating windows around
floating_modifier $mod
# Switch between focusing floating windows and regular windows
bindsym $mod+space focus mode_toggle
# ========================= Program-Specific Windows =========================
for_window [class="^feh$"] floating enable
for_window [instance="^feh$"] floating enable
# ========================= Workspaces =========================
# Easily switch between your two most recently used workspaces
bindsym $alt+a workspace back_and_forth
# Easily switch between all workspaces
bindsym $alt+Tab workspace next
bindsym $alt+Shift+Tab workspace prev
# Easily open a new workspace
bindsym $alt+f exec --no-startup-id ~/.config/i3/new_workspace.sh
# Move directly to workspace N without tabbing through all of them
bindsym $mod+1 workspace 1
bindsym $mod+2 workspace 2
bindsym $mod+3 workspace 3
bindsym $mod+4 workspace 4
bindsym $mod+5 workspace 5
bindsym $mod+6 workspace 6
bindsym $mod+7 workspace 7
bindsym $mod+8 workspace 8
bindsym $mod+9 workspace 9
bindsym $mod+0 workspace 10
# Move the currently focused window to workspace N
bindsym $mod+Shift+1 move container to workspace 1
bindsym $mod+Shift+2 move container to workspace 2
bindsym $mod+Shift+3 move container to workspace 3
bindsym $mod+Shift+4 move container to workspace 4
bindsym $mod+Shift+5 move container to workspace 5
bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+7 move container to workspace 7
bindsym $mod+Shift+8 move container to workspace 8
bindsym $mod+Shift+9 move container to workspace 9
bindsym $mod+Shift+0 move container to workspace 10
# ========================= Resize Mode =========================
# Set the re-size size (rss) to 10
set $rss 10
# Keybindings for resize mode (Enter or Return to exit)
mode "resize" {
bindsym h resize shrink width $rss px or $rss ppt
bindsym j resize grow height $rss px or $rss ppt
bindsym k resize shrink height $rss px or $rss ppt
bindsym l resize grow width $rss px or $rss ppt
bindsym Return mode "default"
bindsym Escape mode "default"
}
# Keybinding to enter resize mode
bindsym $mod+r mode "resize"
# ========================= Lock Screen =========================
# Add a keybinding to instantly lock the screen
bindsym $mod+Ctrl+l exec i3lock -i ~/.config/i3/lock.png
# ========================= i3-Specific =========================
# Restart i3 (layout is preserved and open programs are still open)
# This is particularly useful when you want to test out new i3/config settings
bindsym $mod+Shift+r restart
# ========================= Disabled Keys =========================
# Disable F1 (useful for programs that open a help window)
bindsym F1 nop
# ========================= Program Shortcuts =========================
# Easily open a new browser window with []
bindsym $mod+braceleft exec inox
bindsym $mod+braceright exec waterfox
# ========================= Music Player (cmus) =========================
# Easily pause and resume music playback
bindsym $mod+m exec --no-startup-id cmus-remote --pause
# Easily jump to the next and previous songs
bindsym $mod+b exec --no-startup-id cmus-remote --prev
bindsym $mod+n exec --no-startup-id cmus-remote --next
# ========================= Screenshot tool (shotgun) =========================
# Bind Print Scren to screenshot the desktop and open the output png
bindsym Print exec ~/.config/i3/screenshot.sh
# ========================= Information Bar (polybar) =========================
# Easily show and hide polybar
bindsym $mod+o exec --no-startup-id ~/.config/i3/polybar.sh
####################################################################
# Configuration and keybindings specific to i3-gaps
####################################################################
# Our preferred gap size of choice
set $inner 20
set $outer 5
# Enable gaps with our size of choice
gaps inner $inner
gaps outer $outer
# Only show gaps when there's more than one window open
# smart_gaps on
# Only show borders when there's more than one window open
# smart_borders on
# Make it easy to switch between gaps and no gaps
bindsym $mod+g gaps inner all set 0; gaps outer all set 0
bindsym $mod+Shift+g gaps inner all set $inner; gaps outer all set $outer
# Make it easy to disable and re-enable borders on a per-window basis
bindsym $mod+u border none
bindsym $mod+y border pixel 1
####################################################################
# Sane defaults for border colors in i3 - Here we set the focused
# color to green and everything else to a light grey
####################################################################
set_from_resource $text i3wm.color8
set_from_resource $focused i3wm.color18
set_from_resource $unfocused i3wm.color19
set_from_resource $urgent i3wm.color3
# Colors: Border Background Text Indicator
client.focused $focused $focused $text $focused
client.focused_inactive $unfocused $unfocused $text $unfocused
client.unfocused $unfocused $unfocused $text $unfocused
client.urgent $urgent $urgent $text $urgent
# vim:ft=dosini