Add i3 configs
dblume

dblume commited on 2023-11-11 21:36:18
Showing 4 changed files, with 291 additions and 1 deletions.

... ...
@@ -0,0 +1,233 @@
1
+# i3 config file (v4)
2
+# Please see https://i3wm.org/docs/userguide.html for a complete reference!
3
+
4
+set $mod Mod4
5
+
6
+# Font for window titles. Will also be used by the bar unless a different font
7
+# is used in the bar {} block below.
8
+#font pango:monospace 13
9
+font pango:DejaVu Sans Mono 12
10
+
11
+# Start XDG autostart .desktop files using dex. See also
12
+# https://wiki.archlinux.org/index.php/XDG_Autostart
13
+exec --no-startup-id dex --autostart --environment i3
14
+
15
+# The combination of xss-lock, nm-applet and pactl is a popular choice, so
16
+# they are included here as an example. Modify as you see fit.
17
+
18
+# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
19
+# screen before suspend. Use loginctl lock-session to lock your screen.
20
+exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --color 101030 --nofork
21
+bindsym $mod+Shift+x exec i3lock --color 101030
22
+
23
+# NetworkManager is the most popular way to manage wireless networks on Linux,
24
+# and nm-applet is a desktop environment-independent system tray GUI for it.
25
+exec --no-startup-id nm-applet
26
+
27
+# Use pactl to adjust volume in PulseAudio.
28
+set $refresh_i3status killall -SIGUSR1 i3status
29
+bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status
30
+bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status
31
+bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
32
+bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
33
+# sudo apt install brightnessctl
34
+bindsym XF86MonBrightnessDown exec "brightnessctl --min-value=10 set 5%-"
35
+bindsym XF86MonBrightnessUp exec "brightnessctl set 5%+"
36
+
37
+## sound (from Alex Chen)
38
+# sudo apt install playerctl
39
+#bindsym XF86AudioRaiseVolume exec pamixer -i 5
40
+#bindsym XF86AudioLowerVolume exec pamixer -d 5
41
+#bindsym XF86AudioMute exec pamixer -t
42
+bindsym XF86AudioPlay exec playerctl play-pause
43
+bindsym XF86AudioNext exec playerctl next
44
+bindsym XF86AudioPrev exec playerctl previous
45
+
46
+bindsym $mod+g exec google-chrome --new-window
47
+
48
+# Screenshot if using sway (Wayland) (from Alex Chen)
49
+#bindsym Print exec grim -g "$(slurp)" ~/selection_$(date '+%Y%m%d-%H%M%S').png
50
+#bindsym shift+Print exec grim -o $(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name') ~/fullscreen_$(date '+%Y%m%d-%H%M%S').png
51
+
52
+# Use Mouse+$mod to drag floating windows to their wanted position
53
+floating_modifier $mod
54
+
55
+# move tiling windows via drag & drop by left-clicking into the title bar,
56
+# or left-clicking anywhere into the window while holding the floating modifier.
57
+tiling_drag modifier titlebar
58
+
59
+# start a terminal
60
+bindsym $mod+Return exec i3-sensible-terminal
61
+
62
+# kill focused window
63
+bindsym $mod+Shift+q kill
64
+
65
+# start dmenu (a program launcher)
66
+bindsym $mod+d exec --no-startup-id dmenu_run
67
+# A more modern dmenu replacement is rofi:
68
+# bindcode $mod+40 exec "rofi -modi drun,run -show drun"
69
+# There also is i3-dmenu-desktop which only displays applications shipping a
70
+# .desktop file. It is a wrapper around dmenu, so you need that installed.
71
+# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop
72
+
73
+# change focus
74
+bindsym $mod+h focus left
75
+bindsym $mod+j focus down
76
+bindsym $mod+k focus up
77
+bindsym $mod+l focus right
78
+
79
+# alternatively, you can use the cursor keys:
80
+bindsym $mod+Left focus left
81
+bindsym $mod+Down focus down
82
+bindsym $mod+Up focus up
83
+bindsym $mod+Right focus right
84
+
85
+# move focused window
86
+bindsym $mod+Shift+h move left
87
+bindsym $mod+Shift+j move down
88
+bindsym $mod+Shift+k move up
89
+bindsym $mod+Shift+l move right
90
+
91
+# alternatively, you can use the cursor keys:
92
+bindsym $mod+Shift+Left move left
93
+bindsym $mod+Shift+Down move down
94
+bindsym $mod+Shift+Up move up
95
+bindsym $mod+Shift+Right move right
96
+
97
+bindsym $mod+Tab workspace back_and_forth
98
+bindsym $mod+Ctrl+l workspace next
99
+bindsym $mod+Ctrl+h workspace prev
100
+bindsym $mod+Ctrl+Right workspace next
101
+bindsym $mod+Ctrl+Left workspace prev
102
+bindsym $mod+Shift+Ctrl+l move window to workspace next; workspace next
103
+bindsym $mod+Shift+Ctrl+h move window to workspace prev; workspace prev
104
+
105
+# split in horizontal orientation
106
+bindsym $mod+s split h
107
+
108
+# split in vertical orientation
109
+bindsym $mod+v split v
110
+
111
+# enter fullscreen mode for the focused container
112
+bindsym $mod+f fullscreen toggle
113
+
114
+# change container layout (stacked, tabbed, toggle split)
115
+#bindsym $mod+Shift+s layout stacking
116
+bindsym $mod+w layout tabbed
117
+bindsym $mod+e layout toggle split
118
+
119
+# toggle tiling / floating
120
+bindsym $mod+Shift+space floating toggle
121
+
122
+# change focus between tiling / floating windows
123
+bindsym $mod+space focus mode_toggle
124
+
125
+# focus the parent container
126
+bindsym $mod+a focus parent
127
+
128
+# focus the child container
129
+#bindsym $mod+d focus child
130
+
131
+# Define names for default workspaces for which we configure key bindings later on.
132
+# We use variables to avoid repeating the names in multiple places.
133
+set $ws1 "1"
134
+set $ws2 "2"
135
+set $ws3 "3"
136
+set $ws4 "4"
137
+set $ws5 "5"
138
+set $ws6 "6"
139
+set $ws7 "7"
140
+set $ws8 "8"
141
+set $ws9 "9"
142
+set $ws10 "10"
143
+
144
+# switch to workspace
145
+bindsym $mod+1 workspace number $ws1
146
+bindsym $mod+2 workspace number $ws2
147
+bindsym $mod+3 workspace number $ws3
148
+bindsym $mod+4 workspace number $ws4
149
+bindsym $mod+5 workspace number $ws5
150
+bindsym $mod+6 workspace number $ws6
151
+bindsym $mod+7 workspace number $ws7
152
+bindsym $mod+8 workspace number $ws8
153
+bindsym $mod+9 workspace number $ws9
154
+bindsym $mod+0 workspace number $ws10
155
+
156
+# move focused container to workspace
157
+bindsym $mod+Shift+1 move container to workspace number $ws1; workspace number $ws1
158
+bindsym $mod+Shift+2 move container to workspace number $ws2; workspace number $ws2
159
+bindsym $mod+Shift+3 move container to workspace number $ws3; workspace number $ws3
160
+bindsym $mod+Shift+4 move container to workspace number $ws4; workspace number $ws4
161
+bindsym $mod+Shift+5 move container to workspace number $ws5; workspace number $ws5
162
+bindsym $mod+Shift+6 move container to workspace number $ws6; workspace number $ws6
163
+bindsym $mod+Shift+7 move container to workspace number $ws7; workspace number $ws7
164
+bindsym $mod+Shift+8 move container to workspace number $ws8; workspace number $ws8
165
+bindsym $mod+Shift+9 move container to workspace number $ws9; workspace number $ws9
166
+bindsym $mod+Shift+0 move container to workspace number $ws10; workspace number $ws10
167
+
168
+# reload the configuration file
169
+bindsym $mod+Shift+c reload
170
+# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
171
+bindsym $mod+Shift+r restart
172
+# exit i3 (logs you out of your X session)
173
+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'"
174
+
175
+# resize window (you can also use the mouse for that)
176
+mode "resize" {
177
+        # These bindings trigger as soon as you enter the resize mode
178
+
179
+        # Pressing left will shrink the window’s width.
180
+        # Pressing right will grow the window’s width.
181
+        # Pressing up will shrink the window’s height.
182
+        # Pressing down will grow the window’s height.
183
+        bindsym h resize shrink width 2 px or 2 ppt
184
+        bindsym j resize grow height 2 px or 2 ppt
185
+        bindsym k resize shrink height 2 px or 2 ppt
186
+        bindsym l resize grow width 2 px or 2 ppt
187
+
188
+        # same bindings, but for the arrow keys
189
+        bindsym Left resize shrink width 2 px or 2 ppt
190
+        bindsym Down resize grow height 2 px or 2 ppt
191
+        bindsym Up resize shrink height 2 px or 2 ppt
192
+        bindsym Right resize grow width 2 px or 2 ppt
193
+
194
+        # back to normal: Enter or Escape or $mod+r
195
+        bindsym Return mode "default"
196
+        bindsym Escape mode "default"
197
+        bindsym $mod+r mode "default"
198
+}
199
+bindsym $mod+r mode "resize"
200
+
201
+set $bg-color 	         #2f343f
202
+set $inactive-bg-color   #2f343f
203
+set $text-color          #f3f4f5
204
+set $inactive-text-color #676E7D
205
+set $urgent-bg-color     #E53935
206
+
207
+# From https://github.com/bookercodes/dotfiles/blob/ubuntu/.i3/config
208
+# window colors
209
+#                       border              background         text                 indicator
210
+#client.focused          $bg-color           $bg-color          $text-color          #00ff00
211
+#client.unfocused        $inactive-bg-color $inactive-bg-color $inactive-text-color  #00ff00
212
+#client.focused_inactive $inactive-bg-color $inactive-bg-color $inactive-text-color  #00ff00
213
+#client.urgent           $urgent-bg-color    $urgent-bg-color   $text-color          #00ff00
214
+hide_edge_borders none
215
+
216
+# Start i3bar to display a workspace bar (plus the system information i3status
217
+# finds out, if available)
218
+bar {
219
+    status_command i3status
220
+}
221
+
222
+# sudo apt install maim xclip
223
+# Screenshots
224
+bindsym Print exec --no-startup-id maim "/home/$USER/Pictures/$(date -Iseconds)"
225
+bindsym $mod+Print exec --no-startup-id maim --window $(xdotool getactivewindow) "/home/$USER/Pictures/$(date -Iseconds)"
226
+bindsym Shift+Print exec --no-startup-id maim --select "/home/$USER/Pictures/$(date -Iseconds)"
227
+## Clipboard Screenshots
228
+bindsym Ctrl+Print exec --no-startup-id maim | xclip -selection clipboard -t image/png
229
+bindsym Ctrl+$mod+Print exec --no-startup-id maim --window $(xdotool getactivewindow) | xclip -selection clipboard -t image/png
230
+bindsym Ctrl+Shift+Print exec --no-startup-id maim --select | xclip -selection clipboard -t image/png
231
+
232
+# sudo apt install brightnessctl playerctl feh
233
+exec feh --bg-scale /home/david/Pictures/chinesemoon.png
... ...
@@ -0,0 +1,55 @@
1
+# i3status configuration file.
2
+# see "man i3status" for documentation.
3
+
4
+# It is important that this file is edited as UTF-8.
5
+# The following line should contain a sharp s:
6
+# ß
7
+# If the above line is not correctly displayed, fix your editor first!
8
+
9
+general {
10
+        colors = true
11
+        interval = 5
12
+}
13
+
14
+#order += "ipv6"
15
+order += "wireless _first_"
16
+#order += "ethernet _first_"
17
+order += "battery all"
18
+#order += "disk /"
19
+order += "load"
20
+#order += "memory"
21
+order += "tztime local"
22
+
23
+wireless _first_ {
24
+        # format_up = ": (%quality at %essid) %ip"
25
+        format_up = " %quality %ip"
26
+        format_down = ": down"
27
+}
28
+
29
+ethernet _first_ {
30
+        format_up = "E: %ip (%speed)"
31
+        format_down = "E: down"
32
+}
33
+
34
+battery all {
35
+        format = " %status %percentage %remaining"
36
+}
37
+
38
+disk "/" {
39
+        format = "%avail"
40
+}
41
+
42
+load {
43
+        #format = "  %1min"
44
+        format = "  %1min"
45
+}
46
+
47
+memory {
48
+        format = "%used | %available"
49
+        threshold_degraded = "1G"
50
+        format_degraded = "MEMORY < %available"
51
+}
52
+
53
+tztime local {
54
+        format = " %Y-%m-%d %H:%M"
55
+}
... ...
@@ -59,6 +59,7 @@ See [config.dlma.com](http://config.dlma.com) for more.
59 59
 9. .gdbinit
60 60
 10. .visidatarc, to hide [visidata's](https://www.visidata.org/) menu at the top, for the old school UI.
61 61
 11. .config/gitui/key\_bindings.ron, for vim key bindings in [gitui](https://github.com/extrawurst/gitui).
62
+11. [i3](https://i3wm.org/) configs.
62 63
 
63 64
 #### Optional manual steps for fresh setups
64 65
 
... ...
@@ -5,7 +5,8 @@ declare -r SCRIPT_NAME=$(basename "$BASH_SOURCE")
5 5
 declare -r backup_dir=$HOME/backup_of_dotfiles_$(date "+%Y-%m-%d_%H%M%S")
6 6
 declare -a dotfiles=(".bashrc" ".bash_profile" ".vimrc" ".editrc" ".gitconfig"
7 7
                      ".gitignore" ".inputrc" ".tmux.conf" ".ssh/config" ".ripgreprc"
8
-                     ".gdbinit" ".config/gitui/key_bindings.ron" ".visidatarc")
8
+                     ".gdbinit" ".config/gitui/key_bindings.ron" ".visidatarc"
9
+                     ".config/i3/config" ".config/i3status/config")
9 10
 declare -i DRY_RUN=0
10 11
 
11 12
 ## exit the shell (with status 2) after printing the message
12 13