aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIsaac Freund <ifreund@ifreund.xyz>2020-06-01 20:45:40 +0200
committerIsaac Freund <ifreund@ifreund.xyz>2020-06-01 20:45:40 +0200
commit7cadd400514533f9be896be82c5a57dc338e6ac8 (patch)
tree615290fb497a43becc7780556ddfe9a18f2ca455
parent072dd575aa47f9fe4bfe569e8a8745c6936f73c1 (diff)
downloadriver-7cadd400514533f9be896be82c5a57dc338e6ac8.tar.gz
river-7cadd400514533f9be896be82c5a57dc338e6ac8.tar.xz
De-hardcode all mappings
Move the default mappings to contrib/config.sh.
-rwxr-xr-xcontrib/config.sh80
-rw-r--r--river/Config.zig217
2 files changed, 80 insertions, 217 deletions
diff --git a/contrib/config.sh b/contrib/config.sh
new file mode 100755
index 0000000..eb7ec43
--- /dev/null
+++ b/contrib/config.sh
@@ -0,0 +1,80 @@
+#!/bin/sh
+
+# Use the "logo" key as the primary modifier
+mod="Mod4"
+
+# Mod+Shift+Return to start an instance of alacritty
+riverctl map normal $mod+Shift Return spawn alacritty
+
+# Mod+Q to close the focused view
+riverctl map normal $mod Q close
+
+# Mod+E to exit river
+riverctl map normal $mod E exit
+
+# Mod+J and Mod+K to focus the next/previous view in the layout stack
+riverctl map normal $mod J focus next
+riverctl map normal $mod K focus previous
+
+# Mod+Period and Mod+Comma to focus the next/previous output
+riverctl map normal $mod Period focus-output next
+riverctl map normal $mod Comma focus-output previous
+
+# Mod+Shift+{Period,Comma} to send the focused view to the next/previous output
+riverctl map normal $mod+Shift Period send-to-output next
+riverctl map normal $mod+Shift Comma send-to-output previous
+
+# Mod+Return to bump the focused view to the top of the layout stack, making
+# it the new master
+riverctl map normal $mod Return zoom
+
+# Mod+H and Mod+L to decrease/increase the width of the master column by 5%
+riverctl map normal $mod H mod-master-factor -0.05
+riverctl map normal $mod L mod-master-factor +0.05
+
+# Mod+Shift+H and Mod+Shift+L to increment/decrement the number of
+# master views in the layout
+riverctl map normal $mod+Shift H mod-master-count +1
+riverctl map normal $mod+Shift L mod-master-count -1
+
+for i in $(seq 1 9); do
+ # Mod+[1-9] to focus tag [1-9]
+ riverctl map normal $mod $i focus-tag $i
+
+ # Mod+Shift+[1-9] to tag focused view with tag [1-9]
+ riverctl map normal $mod+Shift $i tag-view $i
+
+ # Mod+Ctrl+[1-9] to toggle focus of tag [1-9]
+ riverctl map normal $mod+Control $i toggle-tag-focus $i
+
+ # Mod+Shift+Ctrl+[1-9] to toggle tag [1-9] of focused view
+ riverctl map normal $mod+Shift+Control $i toggle-view-tag $i
+done
+
+# Mod+0 to focus all tags
+riverctl map normal $mod 0 focus-all-tags
+
+# Mod+Shift+0 to tag focused view with all tags
+riverctl map normal $mod+Shift 0 tag-view-all-tags
+
+# Mod+Space to toggle float
+riverctl map normal $mod Space toggle-float
+
+# Mod+{Up,Right,Down,Left} to change master orientation
+riverctl map normal $mod Up layout top-master
+riverctl map normal $mod Right layout right-master
+riverctl map normal $mod Down layout bottom-master
+riverctl map normal $mod Left layout left-master
+
+# Mod+f to change to Full layout
+riverctl map normal $mod F layout full
+
+# 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
+
+# Mod+F11 to enter passthrough mode
+riverctl map normal $mod F11 enter-mode passthrough
+
+# Mod+F11 to return to normal mode
+riverctl map passthrough $mod F11 enter-mode normal
diff --git a/river/Config.zig b/river/Config.zig
index 20b7504..541e82b 100644
--- a/river/Config.zig
+++ b/river/Config.zig
@@ -50,229 +50,12 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void {
self.mode_to_id = std.StringHashMap(usize).init(allocator);
try self.mode_to_id.putNoClobber("normal", 0);
- try self.mode_to_id.putNoClobber("passthrough", 1);
self.modes = std.ArrayList(std.ArrayList(Mapping)).init(allocator);
try self.modes.append(std.ArrayList(Mapping).init(allocator));
- try self.modes.append(std.ArrayList(Mapping).init(allocator));
self.float_filter = std.ArrayList([*:0]const u8).init(allocator);
- const normal_keybinds = &self.modes.items[0];
- const mod = c.WLR_MODIFIER_LOGO;
-
- // Mod+Shift+Return to start an instance of alacritty
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_Return,
- mod | c.WLR_MODIFIER_SHIFT,
- &[_][]const u8{ "spawn", "alacritty" },
- ));
-
- // Mod+Q to close the focused view
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_q,
- mod,
- &[_][]const u8{"close"},
- ));
-
- // Mod+E to exit river
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_e,
- mod,
- &[_][]const u8{"exit"},
- ));
-
- // Mod+J and Mod+K to focus the next/previous view in the layout stack
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_j,
- mod,
- &[_][]const u8{ "focus", "next" },
- ));
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_k,
- mod,
- &[_][]const u8{ "focus", "previous" },
- ));
-
- // Mod+Return to bump the focused view to the top of the layout stack,
- // making it the new master
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_Return,
- mod,
- &[_][]const u8{"zoom"},
- ));
-
- // Mod+H and Mod+L to increase/decrease the width of the master column
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_h,
- mod,
- &[_][]const u8{ "mod_master_factor", "+0.05" },
- ));
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_l,
- mod,
- &[_][]const u8{ "mod_master_factor", "-0.05" },
- ));
-
- // Mod+Shift+H and Mod+Shift+L to increment/decrement the number of
- // master views in the layout
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_h,
- mod | c.WLR_MODIFIER_SHIFT,
- &[_][]const u8{ "mod_master_count", "+1" },
- ));
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_l,
- mod | c.WLR_MODIFIER_SHIFT,
- &[_][]const u8{ "mod_master_count", "+1" },
- ));
-
- comptime var i = 0;
- inline while (i < 9) : (i += 1) {
- const str = &[_]u8{i + '0' + 1};
- // Mod+[1-9] to focus tag [1-9]
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_1 + i,
- mod,
- &[_][]const u8{ "focus_tag", str },
- ));
- // Mod+Shift+[1-9] to tag focused view with tag [1-9]
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_1 + i,
- mod | c.WLR_MODIFIER_SHIFT,
- &[_][]const u8{ "tag_view", str },
- ));
- // Mod+Ctrl+[1-9] to toggle focus of tag [1-9]
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_1 + i,
- mod | c.WLR_MODIFIER_CTRL,
- &[_][]const u8{ "toggle_tag_focus", str },
- ));
- // Mod+Shift+Ctrl+[1-9] to toggle tag [1-9] of focused view
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_1 + i,
- mod | c.WLR_MODIFIER_CTRL | c.WLR_MODIFIER_SHIFT,
- &[_][]const u8{ "toggle_view_tag", str },
- ));
- }
-
- // Mod+0 to focus all tags
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_0,
- mod,
- &[_][]const u8{"focus_all_tags"},
- ));
-
- // Mod+Shift+0 to tag focused view with all tags
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_0,
- mod | c.WLR_MODIFIER_SHIFT,
- &[_][]const u8{"tag_view_all_tags"},
- ));
-
- // Mod+Period and Mod+Comma to focus the next/previous output
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_period,
- mod,
- &[_][]const u8{ "focus_output", "next" },
- ));
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_comma,
- mod,
- &[_][]const u8{ "focus_output", "previous" },
- ));
-
- // Mod+Shift+Period/Comma to send the focused view to the the
- // next/previous output
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_period,
- mod | c.WLR_MODIFIER_SHIFT,
- &[_][]const u8{ "send_to_output", "next" },
- ));
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_comma,
- mod | c.WLR_MODIFIER_SHIFT,
- &[_][]const u8{ "send_to_output", "previous" },
- ));
-
- // Mod+Space to toggle float
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_space,
- mod,
- &[_][]const u8{"toggle_float"},
- ));
-
- // Mod+F11 to enter passthrough mode
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_F11,
- mod,
- &[_][]const u8{ "enter_mode", "passthrough" },
- ));
-
- // Change master orientation with Mod+{Up,Right,Down,Left}
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_Up,
- mod,
- &[_][]const u8{ "layout", "TopMaster" },
- ));
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_Right,
- mod,
- &[_][]const u8{ "layout", "RightMaster" },
- ));
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_Down,
- mod,
- &[_][]const u8{ "layout", "BottomMaster" },
- ));
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_Left,
- mod,
- &[_][]const u8{ "layout", "LeftMaster" },
- ));
-
- // Mod+f to change to Full layout
- try normal_keybinds.append(try Mapping.init(
- allocator,
- c.XKB_KEY_f,
- mod,
- &[_][]const u8{ "layout", "Full" },
- ));
-
- // Mod+F11 to return to normal mode
- try self.modes.items[1].append(try Mapping.init(
- allocator,
- c.XKB_KEY_F11,
- mod,
- &[_][]const u8{ "enter_mode", "normal" },
- ));
-
// Float views with app_id "float"
try self.float_filter.append("float");
}