commit aacff32bb14b9d9a80d9ef143ca7b25d610676c8
parent 8e0188b724e0c13bf0ff7e72442fc53dee2674b8
Author: Chris Bracken <chris@bracken.jp>
Date: Wed, 22 Apr 2020 13:53:13 -0700
i3: organise config consistent with Sway config
Makes it easier to keep the two in sync.
Diffstat:
M | .i3/config | | | 303 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------- |
M | .xinitrc | | | 1 | - |
2 files changed, 207 insertions(+), 97 deletions(-)
diff --git a/.i3/config b/.i3/config
@@ -4,16 +4,16 @@
# Should you change your keyboard layout somewhen, delete
# this file and re-run i3-config-wizard(1).
#
-
# 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 pango:IPAGothic 12, DejaVu Sans Mono 10
+############################################################
+# Startup
+
+# Configure Xresources settings.
+exec --no-startup-id xrdb ~/.Xresources
# Use Japanese keyboard layout with caps-lock as control.
exec --no-startup-id setxkbmap -layout jp -option ctrl:nocaps
@@ -21,80 +21,130 @@ exec --no-startup-id setxkbmap -layout jp -option ctrl:nocaps
# Use 'natural' mouse-wheel scrolling.
exec --no-startup-id xmodmap -e "pointer = 1 2 3 5 4 6 7 8 9 10 11 12"
-# 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:DejaVu Sans Mono 10
+# Set desktop background.
+exec --no-startup-id xsetroot -solid "#333333"
-# Use Mouse+$mod to drag floating windows to their wanted position
-floating_modifier $mod
+# Start compton compositor.
+exec --no-startup-id compton --config ~/.config/compton.conf -b
-# start a terminal
-bindsym $mod+Return exec urxvt
+# Start up Dunst notification system.
+exec --no-startup-id dunst
-# kill focused window
-bindsym $mod+Shift+q kill
+# Set the window title font.
+font pango:IPAGothic 12, DejaVu Sans Mono 10
-# start compton compositor
-exec --no-startup-id compton --config ~/.config/compton.conf -b
-# Lock, suspend
-set $lock_screen i3lock -d -c 000000
+############################################################
+# Variables
+
+# Logo key. Use Mod1 for Alt.
+set $mod Mod4
+
+# Home row direction keys, like vim.
+set $left h
+set $down j
+set $up k
+set $right l
+
+# Your preferred terminal emulator.
+set $term urxvt
+
+# Your preferred application launcher.
+# Note: it's recommended that you pass the final command to i3.
+set $menu dmenu_path | dmenu | xargs i3-msg exec --
+
+# Set lock screen handler.
+set $lock_screen i3lock -c 000000
+
+
+############################################################
+# Idle configuration
+
+# Lock screen after 300 seconds of inactivity, then turn off displays after
+# another 300 seconds, and turn screens back on when resumed. Also lock screen
+# before the computer goes to sleep.
exec --no-startup-id xautolock -time 10 -locker "$lock_screen"
-bindsym Control+$mod+l exec $lock_screen
-# bindsym Control+$mod+s exec dbus-send --system --dest=org.freedesktop.UPower --type=method_call
-
-# start dmenu (a program launcher)
-bindsym $mod+d exec PATH=$HOME/bin:$PATH 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
-
-# audio volume
-bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ '-5%'
-bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ '+5%'
-bindsym Control+$mod+F11 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ '-5%'
-bindsym Control+$mod+F12 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ '+5%'
-
-# change focus
-bindsym $mod+h focus left
-bindsym $mod+j focus down
-bindsym $mod+k focus up
-bindsym $mod+l focus right
-
-# move focused window
-bindsym $mod+Shift+h move left
-bindsym $mod+Shift+j move down
-bindsym $mod+Shift+k move up
-bindsym $mod+Shift+l move right
-
-# horizontal/vertical split
-bindsym $mod+Shift+semicolon split h
-bindsym $mod+semicolon 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
+############################################################
+# Key bindings: Basics
-# changg/recus between tiling / floating windows
-bindsym $mod+space exec ~/bin/ibus-next
+# Start a terminal.
+bindsym $mod+Return exec $term
-# focus the parent container
-bindsym $mod+a focus parent
+# Kill focused window.
+bindsym $mod+Shift+q kill
+
+# Start the launcher.
+bindsym $mod+d exec $menu
+
+# Drag floating windows by holding down $mod and left mouse button.
+# Resize them with right mouse button + $mod.
+# Despite the name, also works for non-floating windows.
+floating_modifier $mod
+
+# Reload the configuration file.
+bindsym $mod+Shift+c reload
+
+# Restart i3 in-place (preserves layout/session, can be used to upgrade i3).
+bindsym $mod+Shift+r restart
+
+# Lock the screen.
+bindsym Control+$mod+l exec $lock_screen
+
+# Exit i3 (logs you out of your X session).
+bindsym $mod+Shift+e exec ~/.i3/exit_check.sh
-# focus the child container
-#bindsym $mod+d focus child
-# switch to workspace
+############################################################
+# Key bindings: Volume control
+
+# Increase and decrease volume.
+bindsym Control+$mod+F12 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5%
+bindsym Control+$mod+F11 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5%
+bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5%
+bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%
+
+# Handle media keys.
+bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle
+bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle
+bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
+bindsym XF86MonBrightnessUp exec brightnessctl set +5%
+bindsym XF86AudioPlay exec playerctl play-pause
+bindsym XF86AudioNext exec playerctl next
+bindsym XF86AudioPrev exec playerctl previous
+
+
+############################################################
+# Key bindings: Moving around
+
+# Move your focus around.
+bindsym $mod+$left focus left
+bindsym $mod+$down focus down
+bindsym $mod+$up focus up
+bindsym $mod+$right focus right
+# Or use $mod+[up|down|left|right].
+bindsym $mod+Left focus left
+bindsym $mod+Down focus down
+bindsym $mod+Up focus up
+bindsym $mod+Right focus right
+
+# Move the focused window with the same, but add Shift
+bindsym $mod+Shift+$left move left
+bindsym $mod+Shift+$down move down
+bindsym $mod+Shift+$up move up
+bindsym $mod+Shift+$right move right
+# Ditto, with arrow 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
+
+
+############################################################
+# Key bindings: Workspaces
+
+# Switch to workspace.
bindsym $mod+1 workspace 1
bindsym $mod+2 workspace 2
bindsym $mod+3 workspace 3
@@ -106,7 +156,7 @@ bindsym $mod+8 workspace 8
bindsym $mod+9 workspace 9
bindsym $mod+0 workspace 10
-# move focused container to workspace
+# Move focused container to workspace.
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
@@ -118,41 +168,102 @@ 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
-# 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/exit_check.sh
-# resize window (you can also use the mouse for that)
+############################################################
+# Key bindings: Layout
+
+# You can "split" the current object of your focus with $mod+b or $mod+v, for
+# horizontal and vertical splits respectively.
+bindsym $mod+b splith
+bindsym $mod+v splitv
+# Ditto, but with $mod-; and $mod-Shift-;.
+bindsym $mod+Shift+semicolon splith
+bindsym $mod+semicolon splitv
+
+# Switch the current container between different layout styles.
+bindsym $mod+s layout stacking
+bindsym $mod+w layout tabbed
+bindsym $mod+e layout toggle split
+
+# Make the current focus fullscreen.
+bindsym $mod+f fullscreen
+
+# Toggle the current focus between tiling and floating mode.
+bindsym $mod+Shift+space floating toggle
+
+# Swap focus between the tiling area and the floating area.
+bindsym $mod+space focus mode_toggle
+
+# Move focus to the parent container.
+bindsym $mod+a focus parent
+
+
+############################################################
+# Key bindings: Scratchpad
+#
+# i3 has a "scratchpad", which is a bag of holding for windows.
+# You can send windows there and get them back later.
+
+# Move the currently focused window to the scratchpad.
+bindsym $mod+Shift+minus move scratchpad
+
+# Show the next scratchpad window or hide the focused scratchpad window.
+# If there are multiple scratchpad windows, this command cycles through them.
+bindsym $mod+minus scratchpad show
+
+
+############################################################
+# Key bindings: Resizing containers
+
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 l 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 h resize grow width 10 px or 10 ppt
-
- # back to normal: Enter or Escape
- bindsym Return mode "default"
- bindsym Escape mode "default"
+ # Shrink or grow the container's width, height.
+ bindsym $left resize shrink width 10px
+ bindsym $down resize grow height 10px
+ bindsym $up resize shrink height 10px
+ bindsym $right resize grow width 10px
+
+ # Ditto, with arrow keys.
+ bindsym Left resize shrink width 10px
+ bindsym Down resize grow height 10px
+ bindsym Up resize shrink height 10px
+ bindsym Right resize grow width 10px
+
+ # Return to default mode on Return or Esc.
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
}
-
bindsym $mod+r mode "resize"
+
+############################################################
+# Key bindings: Input manager
+
+bindsym $mod+i mode "j: japanese; e: english"
+
+mode "j: japanese; e: english" {
+ bindsym j exec ibus engine mozc-jp; mode "default"
+ bindsym e exec ibus engine xkb:jp::jpn; mode "default"
+ bindsym Return mode "default"
+ bindsym Escape mode "default"
+}
+
+
+############################################################
+# Status Bar
+#
+
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
- status_command i3status
-}
+ position top
-# Set desktop background
-exec --no-startup-id xsetroot -solid "#333333"
+ # When the status_command prints a new line to stdout, swaybar updates.
+ # The default just shows the current date and time.
+ status_command i3status
-# lock screen on idle
-exec --no-startup-id xautolock -time 10 -locker "$lock_screen"
+ colors {
+ statusline #ffffff
+ background #323232
+ inactive_workspace #32323200 #32323200 #5c5c5c
+ }
+}
diff --git a/.xinitrc b/.xinitrc
@@ -6,5 +6,4 @@ export XMODIFIERS=@im=ibus
# Start ibus daemon.
ibus-daemon --xim &
-xrdb -load $HOME/.Xresources
/usr/local/bin/i3