diff --git a/.config/i3/config b/.config/i3/config
index 580ba43..3a3ef92 100644
--- a/.config/i3/config
+++ b/.config/i3/config
@@ -1,16 +1,18 @@
# This file has been auto-generated by i3-config-wizard(1).
# It will not be overwritten, so edit it as you like.
#
-# Should you change your keyboard layout somewhen, delete
+# Should you change your keyboard layout some time, 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!
+# Please see https://i3wm.org/docs/userguide.html for a complete reference!
set $mod Mod4
+# font pango:monospace 8
+
# poweroff stuff
set $mode_system System: (l) lock, (e) logout, (s) suspend, (h) hibernate, (r) reboot, (Shift+s) shutdown
mode "$mode_system" {
@@ -36,7 +38,7 @@ bindsym $mod+Return exec i3-sensible-terminal
bindsym $mod+Shift+Return exec em
# kill focused window
-bindsym $mod+Shift+Q kill
+bindsym $mod+Shift+q kill
# lock screen
bindsym $mod+l exec fuzzy-i3lock
@@ -48,12 +50,22 @@ bindsym $mod+d exec dmenu_run
bindsym $mod+m bar hidden_state toggle
# change focus
+bindsym $mod+b focus left
+bindsym $mod+n focus down
+bindsym $mod+p focus up
+bindsym $mod+f focus right
+
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+b move left 25 px
+bindsym $mod+Shift+n move down 25 px
+bindsym $mod+Shift+p move up 25 px
+bindsym $mod+Shift+f move right 25 px
+
bindsym $mod+Shift+Left move left 25 px
bindsym $mod+Shift+Down move down 25 px
bindsym $mod+Shift+Up move up 25 px
@@ -66,12 +78,12 @@ bindsym $mod+h split h
bindsym $mod+v split v
# enter fullscreen mode for the focused container
-bindsym $mod+f fullscreen
+bindsym $mod+c fullscreen toggle
-# change container layout (stacked, tabbed, default)
+# change container layout (stacked, tabbed, toggle split)
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
-bindsym $mod+e layout default
+bindsym $mod+e layout toggle split
# toggle tiling / floating
bindsym $mod+Shift+space floating toggle
@@ -85,29 +97,42 @@ bindsym $mod+a focus parent
# focus the child container
bindsym $mod+q 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"
+
# switch to workspace
-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
+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 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
-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
+bindsym $mod+Shift+1 move container to workspace $ws1
+bindsym $mod+Shift+2 move container to workspace $ws2
+bindsym $mod+Shift+3 move container to workspace $ws3
+bindsym $mod+Shift+4 move container to workspace $ws4
+bindsym $mod+Shift+5 move container to workspace $ws5
+bindsym $mod+Shift+6 move container to workspace $ws6
+bindsym $mod+Shift+7 move container to workspace $ws7
+bindsym $mod+Shift+8 move container to workspace $ws8
+bindsym $mod+Shift+9 move container to workspace $ws9
+bindsym $mod+Shift+0 move container to workspace $ws10
# reload the configuration file
bindsym $mod+Shift+c reload
@@ -116,21 +141,27 @@ bindsym $mod+Shift+c reload
bindsym $mod+Shift+r restart
# exit i3 (logs you out of your X session)
-bindsym $mod+Shift+e exit
+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'"
# resize window (you can also use the mouse for that)
mode "resize" {
# These bindings trigger as soon as you enter the resize mode
-
bindsym Right resize shrink width 10 px or 10 ppt
- bindsym Down resize grow height 10 px or 10 ppt
- bindsym Up resize shrink height 10 px or 10 ppt
+ bindsym Up resize grow height 10 px or 10 ppt
+ bindsym Down resize shrink height 10 px or 10 ppt
bindsym Left resize grow width 10 px or 10 ppt
+ bindsym $mod+f resize grow width 10 px or 10 ppt
+ bindsym $mod+p resize shrink height 10 px or 10 ppt
+ bindsym $mod+n resize grow height 10 px or 10 ppt
+ bindsym $mod+b resize shrink width 10 px or 10 ppt
+
# back to normal: Enter or Escape
bindsym Return mode "default"
bindsym Escape mode "default"
+ bindsym $mod+r mode "default"
}
+
bindsym $mod+r mode "resize"
# constraining floating window size
@@ -146,12 +177,13 @@ client.unfocused #000000 #005500 #000000 #ff0000
# Start i3bar to display a workspace bar (plus the system information i3status
# finds out, if available)
bar {
- status_command i3status --config ~/.config/i3status/config
- position top
- tray_output primary
- workspace_buttons yes
- mode hide
- modifier $mod
+ status_command i3status-rs ~/.config/i3/status-rs.toml
+ font pango:DejaVu Sans Mono, forkawesome 8
+ position top
+ tray_output primary
+ workspace_buttons yes
+ mode hide
+ modifier $mod
colors {
statusline #00ff00
@@ -160,9 +192,3 @@ bar {
#client.orientation #ff0000
}
}
-
-# exec ssh-agent
-# exec gpg-agent
-# exec xset -b
-# exec xrandr --output VGA-2 --auto --right-of VGA-1
-# exec feh --bg-scale ~/bg.jpg
diff --git a/.config/i3/status-rs.toml b/.config/i3/status-rs.toml
new file mode 100644
index 0000000..44a538b
--- /dev/null
+++ b/.config/i3/status-rs.toml
@@ -0,0 +1,59 @@
+icons = "awesome"
+
+[theme]
+name = "solarized-dark"
+
+[theme.overrides]
+idle_fg = "#00cc00"
+idle_bg = "#222222"
+separator = "|"
+separator_fg = "#00cc00"
+separator_bg = "#222222"
+
+[[block]]
+block = "sound"
+
+[[block]]
+block = "net"
+device = "enp0s25"
+format = "{ip} {speed_down} {speed_up}"
+
+[[block]]
+block = "memory"
+display_type = "memory"
+format_mem = "{Mup}%"
+clickable = false
+
+[[block]]
+block = "memory"
+display_type = "swap"
+format_swap = "{SUp}%"
+clickable = false
+
+[[block]]
+block = "cpu"
+interval = 1
+format = "{barchart} {utilization}% {frequency}GHz"
+
+[[block]]
+block = "temperature"
+collapsed = false
+format = "{min}° - {max}°: {average}°"
+chip = "*-isa-*"
+
+[[block]]
+block = "load"
+interval = 1
+format = "{1m} {5m} {15m}"
+
+[[block]]
+block = "time"
+interval = 1
+format = "%F (%Z) %T"
+timezone = "Europe/Vienna"
+
+[[block]]
+block = "time"
+interval = 1
+format = "(%Z) %T"
+timezone = "Etc/UTC"
diff --git a/.config/i3status/config b/.config/i3status/config
deleted file mode 100644
index b909c11..0000000
--- a/.config/i3status/config
+++ /dev/null
@@ -1,56 +0,0 @@
-general {
- colors = true
- interval = 1
-}
-
-# order += "ipv6"
-order += "ethernet enp0s25"
-order += "wireless wlp2s0"
-order += "battery 0"
-order += "cpu_usage"
-order += "load"
-order += "volume master"
-order += "tztime home"
-order += "tztime utc"
-
-ethernet enp0s25 {
- format_up = "E: %ip (%speed)"
- format_down = "E: down"
-}
-
-wireless wlp2s0 {
- format_up = "W: %quality@%ip"
- format_down = "W: down"
-}
-
-battery 0 {
- last_full_capacity = true
- format = "%status %percentage %remaining %consumption" ## %emptytime"
- path = "/sys/class/power_supply/BAT%d/uevent"
- low_threshold = 20
-}
-
-cpu_usage {
- format = "C: %usage"
-}
-
-load {
- format = "%1min %5min %15min"
-}
-
-volume master {
- format = "♪: %volume"
- device = "default"
- mixer = "Master"
- mixer_idx = 0
-}
-
-tztime home {
- format = "%Y-%m-%d (%Z) %H:%M:%S"
- timezone = "Europe/Vienna"
-}
-
-tztime utc {
- format = "(%Z) %H:%M:%S"
- timezone = "Etc/UTC"
-}
diff --git a/.gitignore.d/i3 b/.gitignore.d/i3
index 8f02c8d..2b80612 100644
--- a/.gitignore.d/i3
+++ b/.gitignore.d/i3
@@ -2,7 +2,10 @@
!/.config
!/.config/i3
!/.config/i3/config
-!/.config/i3status
-!/.config/i3status/config
+!/.config/i3/status-rs.toml
!/.gitignore.d
!/.gitignore.d/i3
+!/.local
+!/.local/bin
+!/.local/bin/fuzzy-i3lock
+!/.local/bin/i3-run
diff --git a/.local/bin/fuzzy-i3lock b/.local/bin/fuzzy-i3lock
new file mode 100755
index 0000000..ae4b552
--- /dev/null
+++ b/.local/bin/fuzzy-i3lock
@@ -0,0 +1,13 @@
+#!/bin/sh -e
+#
+# Show a pixelated screenshot as background image of i3lock
+#
+# See
+# Copied from
+#
+
+screenshot="${TMPDIR:-/tmp}/fuzzy-i3lock.png"
+
+scrot "$screenshot"
+mogrify -scale 10% -scale 1000% "$screenshot"
+exec i3lock -i "$screenshot"
diff --git a/.local/bin/i3-run b/.local/bin/i3-run
new file mode 100755
index 0000000..1baee9a
--- /dev/null
+++ b/.local/bin/i3-run
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# stolen from https://r0tty.org/git/dotfiles/i3
+
+# Make i3 spawn a program, in the current working directory. This is
+# useful for running GUI apps from a terminal without cluttering the
+# terminal with their output.
+
+exec i3-msg -t command exec "cd '$(pwd)' && $@"