summaryrefslogtreecommitdiff
path: root/desktop/.config/river/init
blob: 3a417636f3a26c778c7b662871b5ca82358d46c7 (plain)
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
177
178
179
180
181
182
183
184
185
186
187
#!/bin/sh

# TODO Probably better to put this in a script.
emacsclient -e "(progn $(for v in WAYLAND_DISPLAY DISPLAY SSH_AUTH_SOCK; do echo -n "(setenv \"$v\" \"$(eval echo \$${v})\")"; done) (message \"Imported environment\"))" &
riverctl spawn "kanshi"
riverctl spawn "waybar"
riverctl spawn "nm-applet --indicator"
riverctl spawn "swayidle -w timeout 1200 'swaylock -f' timeout 1300 'wlopm --off \*' resume 'wlopm --on \*' before-sleep 'swaylock -f'"
riverctl spawn "dbus-update-activation-environment --systemd WAYLAND_DISPLAY DISPLAY QT_QPT_PLATFORM XDG_CURRENT_DESKTOP=river"
riverctl spawn "systemctl --user import-environment WAYLAND_DISPLAY QT_QPA_PLATFORM DISPLAY"
riverctl spawn "systemctl --user set-environment XDG_CURRENT_DESKTOP=river"
riverctl spawn dunst
riverctl spawn firefox
riverctl input "pointer-20547-7851-Ploopy_Corporation_Trackball_Nano" pointer-accel -0.9

# Super+Shift+Return to start an instance of foot (https://codeberg.org/dnkl/foot)
riverctl map normal Super+Shift Return spawn foot
riverctl map normal Super T spawn "emacsclient -c"
riverctl map normal Super D spawn "rofi -show run"
riverctl map normal Super S spawn "$HOME/bin/rofipass-wayland"

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

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

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

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

# Lock screen
riverctl map normal Super+Shift Z spawn "swaylock"

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

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

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

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

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

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

# Super+Alt+Control+{H,J,K,L} to snap views to screen edges
#riverctl map normal Super+Alt+Control H snap left
#riverctl map normal Super+Alt+Control J snap down
#riverctl map normal Super+Alt+Control K snap up
#riverctl map normal Super+Alt+Control L snap right

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

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

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

# Super + Middle Mouse Button to toggle float
riverctl map-pointer normal Super BTN_MIDDLE toggle-float

function tag_bindings() {
    i=$1
    key=$2
    tags=$((1 << ($i - 1)))
    echo binding key $key to $i

    # Super+[1-9] to focus tag [0-8]
    riverctl map normal Super $key set-focused-tags $tags

    # Super+Shift+[1-9] to tag focused view with tag [0-8]
    riverctl map normal Super+Shift $key set-view-tags $tags

    # Super+Control+[1-9] to toggle focus of tag [0-8]
    riverctl map normal Super+Control $key toggle-focused-tags $tags

    # Super+Shift+Control+[1-9] to toggle tag [0-8] of focused view
    riverctl map normal Super+Shift+Control $key toggle-view-tags $tags
}

tag_bindings 1 apostrophe
tag_bindings 2 comma
tag_bindings 3 period
tag_bindings 4 P
tag_bindings 5 Y
tag_bindings 6 A
tag_bindings 7 O
tag_bindings 8 E
tag_bindings 9 U
tag_bindings 10 I

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

# toggle float
riverctl map normal Super+Shift F toggle-float

# Super+F to toggle fullscreen
riverctl map normal Super F toggle-fullscreen

# Super+{Up,Right,Down,Left} to change layout orientation
riverctl map normal Super Up    send-layout-cmd rivertile "main-location top"
riverctl map normal Super Right send-layout-cmd rivertile "main-location right"
riverctl map normal Super Down  send-layout-cmd rivertile "main-location bottom"
riverctl map normal Super 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

# Super+F11 to enter passthrough mode
riverctl map normal Super F11 enter-mode passthrough

# Super+F11 to return to normal mode
riverctl map passthrough Super F11 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
    # Eject the optical drive (well if you still have one that is)
    riverctl map $mode None XF86Eject spawn 'eject -T'

    # Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer)
    riverctl map $mode None XF86AudioRaiseVolume  spawn 'pamixer -i 5'
    riverctl map $mode None XF86AudioLowerVolume  spawn 'pamixer -d 5'
    riverctl map $mode None XF86AudioMute         spawn 'pamixer --toggle-mute'

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

    # Control screen backlight brightness 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'
done

# Set background and border color
riverctl background-color 0x2a3462
riverctl border-color-focused 0xffcc66
riverctl border-color-unfocused 0x1b1d1e

# Set keyboard repeat rate
riverctl set-repeat 50 300

# Focus follow mouse
riverctl focus-follows-cursor normal

# Make all views with an app-id that starts with "float" and title "foo" start floating.
riverctl float-filter-add app-id 'Rofi'

# Make all views with app-id "bar" and any title use client-side decorations
#riverctl rule-add csd -app-id "bar"

# Set the default layout generator to be rivertile and start it.
# River will send the process group of the init executable SIGTERM on exit.
riverctl default-layout rivertile
rivertile -view-padding 2 -outer-padding 0 &