My configurations for the software I use

add more rules, input configurations, and autostart apps to river

yemou.pink d760ac60 6055c547

verified
Changed files
+87 -207
config
river
+87 -207
config/river/init.roc
··· 1 1 #!/usr/bin/env roc 2 - app [main!] { pf: platform "https://github.com/roc-lang/basic-cli/releases/download/0.19.0/Hj-J_zxz7V9YurCSTFcFdu6cQJie4guzsPMUi5kBYUk.tar.br" } 2 + app [main!] { pf: platform "https://github.com/roc-lang/basic-cli/releases/download/0.20.0/X73hGh05nNTkDHU06FHC0YfFaQB1pimX7gncRcao5mU.tar.br" } 3 3 4 4 # TODO: Create a platform that interfaces directly with the river wayland protocol 5 5 # TODO: Check for a cli argument to determine if the autostart commands should be run 6 6 7 7 import pf.Cmd 8 - import pf.Env 9 8 import pf.Stdout 10 9 import pf.Stderr 11 10 11 + tag_to_rtag = |num| 12 + Num.shift_left_by 1 (num - 1) 13 + |> Num.to_str 14 + 12 15 named_tag_to_rtag = |tag_name| 13 16 when tag_name is 14 17 One -> tag_to_rtag 1 ··· 20 23 Seven -> tag_to_rtag 7 21 24 Eight -> tag_to_rtag 8 22 25 Nine -> tag_to_rtag 9 23 - KeePassXC -> tag_to_rtag 10 24 - Nautilus -> tag_to_rtag 11 25 - Thunderbird -> tag_to_rtag 12 26 - All -> (Num.shift_left_by 1 32) - 1 26 + Discord -> tag_to_rtag 10 27 + Games -> tag_to_rtag 11 28 + Hide -> tag_to_rtag 12 29 + KeePassXC -> tag_to_rtag 13 30 + Nautilus -> tag_to_rtag 14 31 + Signal -> tag_to_rtag 15 32 + Steam -> tag_to_rtag 16 33 + Thunderbird -> tag_to_rtag 17 34 + All -> Num.to_str ((Num.shift_left_by 1 32) - 1) 27 35 28 - autostart! = |{}| 29 - home = Env.decode! "HOME" ?? "/" 36 + autostart = [ 37 + "systemctl --user start river-session-pre.target", 38 + "update-session-vars", 39 + "systemctl --user start river-session.target", 40 + "kanshi", 41 + "xrandr --output HDMI-A-5 --primary", 42 + "rivertile -outer-padding 0 -view-padding 0 -main-ratio 0.5", 43 + "swaybg -i /media/nextcloud/wallpapers/dark/evie-s-Pb1KFv4tauY-unsplash.jpg -m fill", 44 + ] 30 45 31 - [ 32 - "systemctl --user start river-session-pre.target", 33 - "update-session-vars", 34 - "systemctl --user start river-session.target", 35 - "kanshi", 36 - "rivertile -outer-padding 0 -view-padding 0 -main-ratio 0.5", 37 - Str.replace_each "swaybg -i $HOME/pic/wallpapers/dark/evie-s-Pb1KFv4tauY-unsplash.jpg -m fill" "$HOME" home, 38 - ] 46 + autostart_apps = [ 47 + "keepassxc", 48 + "org.mozilla.Thunderbird", 49 + ] 39 50 40 51 configurations = [ 52 + { option: "allow-tearing", args: ["enabled"] }, 41 53 { option: "border-color-focused", args: ["0x93a1a1"] }, 42 54 { option: "border-color-unfocused", args: ["0x586e75"] }, 55 + { option: "border-width", args: ["0"] }, 43 56 { option: "focus-follows-cursor", args: ["normal"] }, 44 57 { option: "set-cursor-warp", args: ["on-output-change"] }, 45 58 { option: "xcursor-theme", args: ["Adwaita", "24"] }, 46 - { 47 - option: "input", 48 - args: [ 49 - "pointer-1356-3570-Sony_Interactive_Entertainment_DualSense_Edge_Wireless_Controller_Touchpad", 50 - "events", 51 - "disabled", 52 - ], 53 - }, 59 + { option: "input", args: ["pointer-1356-3570-Sony_Interactive_Entertainment_DualSense_Edge_Wireless_Controller_Touchpad", "events", "disabled"] }, 60 + { option: "input", args: ["pointer-4660-22136-extest_fake_device", "map-to-output", "HDMI-A-5"] }, 54 61 ] 55 62 56 63 rules = [ 64 + { id: "discord", title: "", action: "output", args: ["AOC 2460G4 0x0000075E"] }, 65 + { id: "discord", title: "", action: "tags", args: [named_tag_to_rtag Discord] }, 57 66 { id: "org.gnome.Nautilus", title: "", action: "float", args: [] }, 58 - { id: "org.gnome.Nautilus", title: "", action: "tags", args: [Num.to_str (named_tag_to_rtag Nautilus)] }, 59 - { id: "org.gnome.Nautilus", title: "", action: "float", args: [] }, 67 + { id: "org.gnome.Nautilus", title: "", action: "tags", args: [named_tag_to_rtag Nautilus] }, 68 + { id: "org.keepassxc.KeePassXC", title: "", action: "csd", args: [] }, 60 69 { id: "org.keepassxc.KeePassXC", title: "", action: "float", args: [] }, 61 - { 62 - id: "org.keepassxc.KeePassXC", 63 - title: "KeyChain.kdbx [Locked] - KeePassXC", 64 - action: "tags", 65 - args: [Num.to_str (named_tag_to_rtag KeePassXC)], 66 - }, 67 - { id: "org.mozilla.Thunderbird", title: "", action: "tags", args: [Num.to_str (named_tag_to_rtag Thunderbird)] }, 70 + { id: "org.keepassxc.KeePassXC", title: "KeyChain.kdbx [Locked] - KeePassXC", action: "output", args: ["LG Electronics LG HDR WFHD 0x0000B11B"] }, 71 + { id: "org.keepassxc.KeePassXC", title: "KeyChain.kdbx [Locked] - KeePassXC", action: "tags", args: [named_tag_to_rtag KeePassXC] }, 72 + { id: "org.mozilla.Thunderbird", title: "", action: "output", args: ["LG Electronics LG HDR WFHD 0x0000B11B"] }, 73 + { id: "org.mozilla.Thunderbird", title: "", action: "tags", args: [named_tag_to_rtag Thunderbird] }, 74 + { id: "signal", title: "", action: "output", args: ["AOC 2460G4 0x0000075E"] }, 75 + { id: "signal", title: "", action: "tags", args: [named_tag_to_rtag Signal] }, 76 + { id: "steam", title: "", action: "output", args: ["LG Electronics LG HDR WFHD 0x0000B11B"] }, 77 + { id: "steam", title: "", action: "tags", args: [named_tag_to_rtag Steam] }, 78 + { id: "steam_app_*", title: "", action: "output", args: ["LG Electronics LG HDR WFHD 0x0000B11B"] }, 79 + { id: "steam_app_*", title: "", action: "tags", args: [named_tag_to_rtag Games] }, 68 80 ] 69 81 70 82 modes = [ ··· 80 92 tag_binds = 81 93 List.range { start: At(1), end: At(9) } 82 94 |> List.map( 83 - |tag_num| [ 84 - { 85 - mode: "normal", 86 - mods: [Super], 87 - key: Num.to_str tag_num, 88 - cmd: "toggle-focused-tags", 89 - args: [Num.to_str (tag_to_rtag tag_num)], 90 - }, 91 - { 92 - mode: "normal", 93 - mods: [Super, Shift], 94 - key: Num.to_str tag_num, 95 - cmd: "toggle-view-tags", 96 - args: [Num.to_str (tag_to_rtag tag_num)], 97 - }, 98 - { 99 - mode: "normal", 100 - mods: [Super, Control], 101 - key: Num.to_str tag_num, 102 - cmd: "set-focused-tags", 103 - args: [Num.to_str (tag_to_rtag tag_num)], 104 - }, 105 - { 106 - mode: "normal", 107 - mods: [Super, Shift, Control], 108 - key: Num.to_str tag_num, 109 - cmd: "set-view-tags", 110 - args: [Num.to_str (tag_to_rtag tag_num)], 111 - }, 112 - ], 95 + |tag| 96 + tag_str = Num.to_str tag 97 + [ 98 + { mode: "normal", mods: [Super], key: tag_str, cmd: "toggle-focused-tags", args: [tag_to_rtag tag] }, 99 + { mode: "normal", mods: [Super, Shift], key: tag_str, cmd: "toggle-view-tags", args: [tag_to_rtag tag] }, 100 + { mode: "normal", mods: [Super, Control], key: tag_str, cmd: "set-focused-tags", args: [tag_to_rtag tag] }, 101 + { mode: "normal", mods: [Super, Shift, Control], key: tag_str, cmd: "set-view-tags", args: [tag_to_rtag tag] }, 102 + ], 113 103 ) 114 104 |> List.join 115 105 |> List.concat [ 116 106 # Show all tags 117 - { 118 - mode: "normal", 119 - mods: [Super], 120 - key: "0", 121 - cmd: "set-focused-tags", 122 - args: [Num.to_str (named_tag_to_rtag All)], 123 - }, 124 - { 125 - mode: "normal", 126 - mods: [Super, Shift], 127 - key: "0", 128 - cmd: "set-view-tags", 129 - args: [Num.to_str (named_tag_to_rtag All)], 130 - }, 107 + { mode: "normal", mods: [Super], key: "0", cmd: "set-focused-tags", args: [named_tag_to_rtag All] }, 108 + { mode: "normal", mods: [Super, Shift], key: "0", cmd: "set-view-tags", args: [named_tag_to_rtag All] }, 109 + ] 110 + |> List.concat [ 111 + # Hide applications 112 + { mode: "normal", mods: [Super], key: "H", cmd: "set-view-tags", args: [named_tag_to_rtag Hide] }, 113 + { mode: "normal", mods: [Super, Control], key: "H", cmd: "set-focused-tags", args: [named_tag_to_rtag Hide] }, 131 114 ] 115 + 116 + special_tag_binds = |named_tag, key| [ 117 + { mode: "special-tags", mods: [None], key: key, cmd: "toggle-focused-tags", args: [named_tag_to_rtag named_tag] }, 118 + { mode: "special-tags", mods: [Shift], key: key, cmd: "toggle-view-tags", args: [named_tag_to_rtag named_tag] }, 119 + { mode: "special-tags", mods: [Control], key: key, cmd: "set-focused-tags", args: [named_tag_to_rtag named_tag] }, 120 + { mode: "special-tags", mods: [Shift, Control], key: key, cmd: "set-view-tags", args: [named_tag_to_rtag named_tag] }, 121 + ] 132 122 133 123 keybinds = [ 134 124 # Launch Applications ··· 147 137 { mode: "normal", mods: [Super, Alt], key: "X", cmd: "focus-output", args: ["previous"] }, 148 138 { mode: "normal", mods: [Super, Control], key: "X", cmd: "send-to-output", args: ["next"] }, 149 139 { mode: "normal", mods: [Super, Control, Alt], key: "X", cmd: "send-to-output", args: ["previous"] }, 150 - { 151 - mode: "normal", 152 - mods: [Super, Shift, Control], 153 - key: "X", 154 - cmd: "send-to-output", 155 - args: ["-current-tags", "next"], 156 - }, 157 - { 158 - mode: "normal", 159 - mods: [Super, Shift, Control, Alt], 160 - key: "X", 161 - cmd: "send-to-output", 162 - args: ["-current-tags", "previous"], 163 - }, 140 + { mode: "normal", mods: [Super, Shift, Control], key: "X", cmd: "send-to-output", args: ["-current-tags", "next"] }, 141 + { mode: "normal", mods: [Super, Shift, Control, Alt], key: "X", cmd: "send-to-output", args: ["-current-tags", "previous"] }, 164 142 165 143 # Exit River 166 144 { mode: "normal", mods: [Super, Control], key: "Escape", cmd: "exit", args: [] }, ··· 178 156 { mode: "normal", mods: [Super], key: "Down", cmd: "send-layout-cmd", args: ["rivertile", "main-location bottom"] }, 179 157 { mode: "normal", mods: [Super], key: "Right", cmd: "send-layout-cmd", args: ["rivertile", "main-location right"] }, 180 158 { mode: "normal", mods: [Super], key: "Bracketleft", cmd: "send-layout-cmd", args: ["rivertile", "main-count -1"] }, 181 - { 182 - mode: "normal", 183 - mods: [Super], 184 - key: "Bracketright", 185 - cmd: "send-layout-cmd", 186 - args: ["rivertile", "main-count +1"], 187 - }, 188 - { 189 - mode: "normal", 190 - mods: [Super, Control], 191 - key: "Bracketleft", 192 - cmd: "send-layout-cmd", 193 - args: ["rivertile", "main-ratio -0.05"], 194 - }, 195 - { 196 - mode: "normal", 197 - mods: [Super, Control], 198 - key: "Bracketright", 199 - cmd: "send-layout-cmd", 200 - args: ["rivertile", "main-ratio +0.05"], 201 - }, 159 + { mode: "normal", mods: [Super], key: "Bracketright", cmd: "send-layout-cmd", args: ["rivertile", "main-count +1"] }, 160 + { mode: "normal", mods: [Super, Control], key: "Bracketleft", cmd: "send-layout-cmd", args: ["rivertile", "main-ratio -0.05"] }, 161 + { mode: "normal", mods: [Super, Control], key: "Bracketright", cmd: "send-layout-cmd", args: ["rivertile", "main-ratio +0.05"] }, 202 162 { mode: "normal", mods: [Super], key: "Space", cmd: "zoom", args: [] }, 203 163 { mode: "normal", mods: [Super], key: "Comma", cmd: "focus-view", args: ["previous"] }, 204 164 { mode: "normal", mods: [Super], key: "Period", cmd: "focus-view", args: ["next"] }, ··· 212 172 # Special Tags Mode 213 173 { mode: "normal", mods: [Super], key: "G", cmd: "enter-mode", args: ["special-tags"] }, 214 174 { mode: "special-tags", mods: [None], key: "Escape", cmd: "enter-mode", args: ["normal"] }, 215 - 216 - # KeePassXC Tag 217 - { 218 - mode: "special-tags", 219 - mods: [None], 220 - key: "K", 221 - cmd: "toggle-focused-tags", 222 - args: [Num.to_str (named_tag_to_rtag KeePassXC)], 223 - }, 224 - { 225 - mode: "special-tags", 226 - mods: [Shift], 227 - key: "K", 228 - cmd: "toggle-view-tags", 229 - args: [Num.to_str (named_tag_to_rtag KeePassXC)], 230 - }, 231 - { 232 - mode: "special-tags", 233 - mods: [Control], 234 - key: "K", 235 - cmd: "set-focused-tags", 236 - args: [Num.to_str (named_tag_to_rtag KeePassXC)], 237 - }, 238 - { 239 - mode: "special-tags", 240 - mods: [Shift, Control], 241 - key: "K", 242 - cmd: "set-view-tags", 243 - args: [Num.to_str (named_tag_to_rtag KeePassXC)], 244 - }, 245 - 246 - # Thunderbird Tag 247 - { 248 - mode: "special-tags", 249 - mods: [None], 250 - key: "T", 251 - cmd: "toggle-focused-tags", 252 - args: [Num.to_str (named_tag_to_rtag Thunderbird)], 253 - }, 254 - { 255 - mode: "special-tags", 256 - mods: [Shift], 257 - key: "T", 258 - cmd: "toggle-view-tags", 259 - args: [Num.to_str (named_tag_to_rtag Thunderbird)], 260 - }, 261 - { 262 - mode: "special-tags", 263 - mods: [Control], 264 - key: "T", 265 - cmd: "set-focused-tags", 266 - args: [Num.to_str (named_tag_to_rtag Thunderbird)], 267 - }, 268 - { 269 - mode: "special-tags", 270 - mods: [Shift, Control], 271 - key: "T", 272 - cmd: "set-view-tags", 273 - args: [Num.to_str (named_tag_to_rtag Thunderbird)], 274 - }, 275 - 276 - # Nautilus Tag 277 - { 278 - mode: "special-tags", 279 - mods: [None], 280 - key: "N", 281 - cmd: "toggle-focused-tags", 282 - args: [Num.to_str (named_tag_to_rtag Nautilus)], 283 - }, 284 - { 285 - mode: "special-tags", 286 - mods: [Shift], 287 - key: "N", 288 - cmd: "toggle-view-tags", 289 - args: [Num.to_str (named_tag_to_rtag Nautilus)], 290 - }, 291 - { 292 - mode: "special-tags", 293 - mods: [Control], 294 - key: "N", 295 - cmd: "set-focused-tags", 296 - args: [Num.to_str (named_tag_to_rtag Nautilus)], 297 - }, 298 - { 299 - mode: "special-tags", 300 - mods: [Shift, Control], 301 - key: "N", 302 - cmd: "set-view-tags", 303 - args: [Num.to_str (named_tag_to_rtag Nautilus)], 304 - }, 305 175 ] 306 176 307 - tag_to_rtag = |num| 308 - Num.shift_left_by 1 (num - 1) 309 - 310 177 mod_str = |mod| 311 178 when mod is 312 179 Control -> "Control" ··· 325 192 result = 326 193 Cmd.new "riverctl" 327 194 |> Cmd.args elem 328 - |> Cmd.status! 195 + |> Cmd.exec_exit_code! 329 196 330 197 when result is 331 198 Ok exit_code if exit_code == 0 -> Ok {} ··· 334 201 335 202 main! = |_args| 336 203 autostart_cmds! = 337 - autostart! {} 204 + autostart 205 + |> List.map |cmd| 206 + ["spawn", cmd] 207 + 208 + autostart_apps_cmds = 209 + autostart_apps 338 210 |> List.map |cmd| 339 211 ["spawn", cmd] 340 212 ··· 367 239 368 240 keybind_cmds = 369 241 tag_binds 242 + |> List.concat (special_tag_binds Discord "D") 243 + |> List.concat (special_tag_binds Games "G") 244 + |> List.concat (special_tag_binds KeePassXC "K") 245 + |> List.concat (special_tag_binds Nautilus "N") 246 + |> List.concat (special_tag_binds Signal "M") 247 + |> List.concat (special_tag_binds Steam "S") 248 + |> List.concat (special_tag_binds Thunderbird "T") 370 249 |> List.concat keybinds 371 250 |> List.map |{ mode, mods, key, cmd, args }| 372 251 ["map", mode, Str.join_with (List.map mods mod_str) "+", key, cmd] ··· 378 257 |> List.concat mode_cmds 379 258 |> List.concat pointer_bind_cmds 380 259 |> List.concat keybind_cmds 260 + |> List.concat autostart_apps_cmds 381 261 |> riverctl_runner!