summary refs log tree commit diff
path: root/.config/river/init
blob: 320d3cf8c18f7576a674f0f88e2d81640184b221 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#!/bin/sh

# Note: the "Mod4" modifier is also known as Logo, GUI, Windows, Mod4, etc.
riverctl input "1739:0:Synaptics_TM3289-021" natural-scroll enabled
riverctl input "1739:0:Synaptics_TM3289-021" pointer-accel 0
riverctl input "1739:0:Synaptics_TM3289-021" tap enabled
riverctl input "1739:0:Synaptics_TM3289-021" accel-profile adaptive

# run application launcher
riverctl map normal Mod4 D spawn 'menu -run'

# start an instance of foot (https://codeberg.org/dnkl/foot)
riverctl map normal Mod4 Return spawn foot

# Mod4+Q to close the focused view
riverctl map normal Mod4+Shift Q close

# Mod4+Shift+E to exit river
riverctl map normal Mod4+Shift E exit

# Mod4+J and Mod4+K to focus the next/previous view in the layout stack
riverctl map normal Mod4 J focus-view next
riverctl map normal Mod4 K focus-view previous

# Mod4+Shift+J and Mod4+Shift+K to swap the focused view with the next/previous
# view in the layout stack
riverctl map normal Mod4+Shift J swap next
riverctl map normal Mod4+Shift K swap previous

# Mod4+Period and Mod4+Comma to focus the next/previous output
riverctl map normal Mod4 Period focus-output next
riverctl map normal Mod4 Comma focus-output previous

# Mod4+Shift+{Period,Comma} to send the focused view to the next/previous output
riverctl map normal Mod4+Shift Period send-to-output next
riverctl map normal Mod4+Shift Comma send-to-output previous

# bump the focused view to the top of the layout stack
riverctl map normal Mod4+Shift Return zoom

# Mod4+H and Mod4+L to decrease/increase the main ratio of rivertile(1)
riverctl map normal Mod4 H send-layout-cmd rivertile "main-ratio -0.05"
riverctl map normal Mod4 L send-layout-cmd rivertile "main-ratio +0.05"

# Mod4+Shift+H and Mod4+Shift+L to increment/decrement the main count of rivertile(1)
riverctl map normal Mod4+Shift H send-layout-cmd rivertile "main-count +1"
riverctl map normal Mod4+Shift L send-layout-cmd rivertile "main-count -1"

# Mod4+Alt+{H,J,K,L} to move views
# riverctl map normal Mod4+Alt H move left 100
# riverctl map normal Mod4+Alt J move down 100
# riverctl map normal Mod4+Alt K move up 100
# riverctl map normal Mod4+Alt L move right 100

# snap views to screen edges
riverctl map normal Mod4+Control H snap left
riverctl map normal Mod4+Control J snap down
riverctl map normal Mod4+Control K snap up
riverctl map normal Mod4+Control L snap right

# Mod4+Alt+Shif+{H,J,K,L} to resize views
# riverctl map normal Mod4+Alt+Shift H resize horizontal -100
# riverctl map normal Mod4+Alt+Shift J resize vertical 100
# riverctl map normal Mod4+Alt+Shift K resize vertical -100
# riverctl map normal Mod4+Alt+Shift L resize horizontal 100

# Mod4 + Left Mouse Button to move views
riverctl map-pointer normal Mod4 BTN_LEFT move-view

# Mod4 + Right Mouse Button to resize views
riverctl map-pointer normal Mod4 BTN_RIGHT resize-view

riverctl focus-follows-cursor normal

for i in $(seq 1 9); do
	tags=$((1 << (i - 1)))

	# focus tag [0-8]
	riverctl map normal Mod4 "$i" set-focused-tags "$tags"
	# tag focused view with tag [0-8]
	riverctl map normal Mod4+Shift "$i" set-view-tags "$tags"
	# toggle focus of tag [0-8]
	riverctl map normal Mod4+Control "$i" toggle-focused-tags "$tags"
	# toggle tag [0-8] of focused view
	riverctl map normal Mod4+Shift+Control "$i" toggle-view-tags "$tags"
done

# Mod4+0 to focus all tags
# Mod4+Shift+0 to tag focused view with all tags
all_tags=$(((1 << 32) - 1))
riverctl map normal Mod4 0 set-focused-tags $all_tags
riverctl map normal Mod4+Shift 0 set-view-tags $all_tags
riverctl map normal Mod4+Control+Shift 0 toggle-view-tags $all_tags

# Mod4+Space to toggle float
riverctl map normal Mod4+Control Space toggle-float

# Mod4+F to toggle fullscreen
riverctl map normal Mod4 F toggle-fullscreen
# Mod4+{Up,Right,Down,Left} to change layout orientation
riverctl map normal Mod4 Up send-layout-cmd rivertile "main-location top"
riverctl map normal Mod4 Right send-layout-cmd rivertile "main-location right"
riverctl map normal Mod4 Down send-layout-cmd rivertile "main-location bottom"
riverctl map normal Mod4 Left send-layout-cmd rivertile "main-location left"

# Declare a passthrough mode. This mode has only a single mapping to return to
# normal mode. This makes it useful for testing a nested wayland compositor
riverctl declare-mode passthrough
# enter passthrough mode
riverctl map normal Mod4 F11 enter-mode passthrough
# return to normal mode
riverctl map passthrough Mod4 F11 enter-mode normal

# bindsym Return mode "default"
# bindsym Escape mode "default"
# bindsym q mode "default"
riverctl declare-mode menu
riverctl map normal Mod4 M enter-mode menu
riverctl map menu None A spawn 'riverctl spawn soundswitch; riverctl enter mode normal'
riverctl map menu None M spawn 'riverctl spawn mnts; riverctl enter mode normal'
riverctl map menu None N spawn 'riverctl spawn notifmenu; riverctl enter mode normal'
riverctl map menu None P spawn 'riverctl spawn passmenu; riverctl enter mode normal'
riverctl map menu None R spawn 'riverctl spawn rcmenu; riverctl enter mode normal'
riverctl map menu None X spawn 'riverctl spawn "menu -drun"; riverctl enter mode normal'
riverctl map menu None Return enter-mode normal
riverctl map menu None Escape enter-mode normal
riverctl map menu None Q enter-mode normal

# Various media key mapping examples for both normal and locked mode which do
# not have a modifier
for mode in normal locked; do
	riverctl map $mode None XF86AudioRaiseVolume spawn 'soundswitch -V'
	riverctl map $mode None XF86AudioLowerVolume spawn 'soundswitch -v'
	riverctl map $mode None XF86AudioMute spawn 'soundswitch -m'

	# Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl)
	riverctl map $mode None XF86AudioMedia spawn 'playerctl -p playerctld play-pause'
	riverctl map $mode None XF86AudioPlay spawn 'playerctl -p playerctld play-pause'
	riverctl map $mode None XF86AudioPrev spawn 'playerctl -p playerctld previous'
	riverctl map $mode None XF86AudioNext spawn 'playerctl -p playerctld next'

	# Control screen backlight brighness with light (https://github.com/haikarainen/light)
	riverctl map $mode None XF86MonBrightnessUp spawn 'light -A 5'
	riverctl map $mode None XF86MonBrightnessDown spawn 'light -U 5'

	riverctl map $mode None XF86Display spawn 'kanshictl reload'
	riverctl map $mode None XF86Keyboard spawn 'light -S 0'
	riverctl map $mode None XF86Favorites spawn 'light -S 100'
done

# Set background and border color
riverctl background-color 0x002b36
riverctl border-color-focused 0x70649a
riverctl border-color-unfocused 0x1c1c1c
riverctl border-color-urgent 0x9f353a
riverctl border-width 2

# Set keyboard repeat rate
riverctl set-repeat 70 200

# Make certain views start floating
# riverctl float-filter-add app-id float
# riverctl float-filter-add title "popup title with spaces"

# Set app-ids and titles of views which should use client side decorations
# riverctl csd-filter-add app-id "gedit"

#riverctl spawn 'once -- s6-svscan ~/.local/share/s6'
riverctl spawn 'dbus-update-activation-environment DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP'
riverctl spawn 'light -S 80'
#riverctl spawn 'sleep 1.4 && kanshictl reload'

# Set and exec into the default layout generator, rivertile.
# River will send the process group of the init executable SIGTERM on exit.
riverctl default-layout rivertile
exec rivertile -view-padding 5 -outer-padding 0