mirror of
https://github.com/alyraffauf/nixcfg.git
synced 2024-11-22 03:33:55 -05:00
add initial river configs
This commit is contained in:
parent
34038b6472
commit
6301b11610
|
@ -7,6 +7,7 @@
|
|||
}: {
|
||||
imports = [
|
||||
./hyprland
|
||||
./river
|
||||
./sway
|
||||
./wayland
|
||||
];
|
||||
|
|
157
homeManagerModules/desktop/river/README.md
Normal file
157
homeManagerModules/desktop/river/README.md
Normal file
|
@ -0,0 +1,157 @@
|
|||
# Sway
|
||||
|
||||
## Features
|
||||
|
||||
- Clamshell mode for laptops
|
||||
- Default apps + theme integration
|
||||
- Random wallpapers that cycle every 15 minutes
|
||||
- Slick looks
|
||||
- swayfx support
|
||||
|
||||
## Desktop Utilities
|
||||
|
||||
- Bluetooth: [blueberry.py](https://github.com/linuxmint/blueberry).
|
||||
- Idle daemon: [swayidle](https://github.com/swaywm/swayidle).
|
||||
- Launcher [rofi-wayland](https://github.com/lbonn/rofi).
|
||||
- Notifications: [mako](https://github.com/emersion/mako).
|
||||
- Panel: [waybar](https://github.com/Alexays/Waybar).
|
||||
- Polkit: [mate-polkit](https://github.com/mate-desktop/mate-polkit).
|
||||
- Wallpapers: [swaybg](https://github.com/swaywm/swaybg).
|
||||
- WiFi: [networkmanager-dmenu](https://github.com/firecat53/networkmanager-dmenu).
|
||||
|
||||
## Keybindings
|
||||
|
||||
### Launching Apps
|
||||
|
||||
- SUPER + B: Open Browser.
|
||||
- SUPER + E: Open Text Editor.
|
||||
- SUPER + F: Open File Manager.
|
||||
- SUPER + R: Open Launcher.
|
||||
- SUPER + T: Open Terminal.
|
||||
|
||||
### Screenshots
|
||||
|
||||
- PRINT // CTRL + F12: Take screenshot of monitor or selected area.
|
||||
|
||||
### Session Control
|
||||
|
||||
- SUPER CTRL + L: Lock screen.
|
||||
- SUPER + M: Logout/shutdown dialog.
|
||||
|
||||
### Workspaces
|
||||
|
||||
#### Switching Workspaces
|
||||
|
||||
- SUPER + {1..9}: Switch to numbered workspace.
|
||||
- SUPER + Comma: Switch to previous numbered workspace.
|
||||
- SUPER + Period: Switch to next numbered workspace.
|
||||
- TOUCHPAD: 3 Finger Swipe Left/Up or Right/Down.
|
||||
|
||||
#### Multi-Monitor Workspace Management
|
||||
|
||||
- SUPER CTRL SHIFT + Down: Move current workspace to monitor below.
|
||||
- SUPER CTRL SHIFT + Up: Move current workspace to monitor above.
|
||||
- SUPER CTRL SHIFT + Left: Move current workspace to monitor left.
|
||||
- SUPER CTRL SHIFT + Right: Move current workspace to monitor right.
|
||||
|
||||
______________________________________________________________________
|
||||
|
||||
- SUPER CTRL SHIFT + J: Move current workspace to monitor below.
|
||||
- SUPER CTRL SHIFT + K: Move current workspace to monitor above.
|
||||
- SUPER CTRL SHIFT + H: Move current workspace to monitor left.
|
||||
- SUPER CTRL SHIFT + L: Move current workspace to monitor right.
|
||||
|
||||
### Window Management
|
||||
|
||||
- SUPER + C: Kill focused window.
|
||||
- SUPER + F11: Show/hide top panel.
|
||||
- SUPER + TAB: Open Window list.
|
||||
- SUPER + V: Toggle floating window.
|
||||
- SUPER SHIFT + Backslash: Toggle vertical/horizontal splits.
|
||||
- SUPER SHIFT + G: Toggle tabbed layout.
|
||||
- SUPER SHIFT + W: Toggle fullscreen.
|
||||
|
||||
#### Focus
|
||||
|
||||
- SUPER + Down: Change focus down.
|
||||
- SUPER + Up: Change focus up.
|
||||
- SUPER + Left: Change focus left.
|
||||
- SUPER + Right: Change focus right.
|
||||
|
||||
______________________________________________________________________
|
||||
|
||||
- SUPER + J: Change focus down.
|
||||
- SUPER + K: Change focus up.
|
||||
- SUPER + H: Change focus left.
|
||||
- SUPER + L: Change focus right.
|
||||
|
||||
#### Movement
|
||||
|
||||
- SUPER SHIFT + Down: Move window down.
|
||||
- SUPER SHIFT + Up: Move window up.
|
||||
- SUPER SHIFT + Left: Move window left.
|
||||
- SUPER SHIFT + Right: Move window right.
|
||||
|
||||
______________________________________________________________________
|
||||
|
||||
- SUPER SHIFT + J: Move window down.
|
||||
- SUPER SHIFT + K: Move window up.
|
||||
- SUPER SHIFT + H: Move window left.
|
||||
- SUPER SHIFT + L: Move window right.
|
||||
|
||||
#### Moving between Workspaces
|
||||
|
||||
- SUPER SHIFT + {1..9}: Move to specified numbered workspace.
|
||||
- SUPER SHIFT + Comma: Move to previous numbered workspace.
|
||||
- SUPER SHIFT + Period: Move to next numbered workspace.
|
||||
|
||||
#### Scratchpad
|
||||
|
||||
- SUPER + S: Switch to scratchpad (overlay).
|
||||
- SUPER SHIFT + S: Move window to scratchpad.
|
||||
|
||||
### Modes
|
||||
|
||||
These modes provide special submaps where you are free to use various key binds without pressing the full key combo, because certain keys are assumed.
|
||||
|
||||
#### Resize Mode
|
||||
|
||||
- CTRL ALT + R: Enter resize mode.
|
||||
|
||||
- Down: Resize active window (0,10).
|
||||
- Up: Resize active window (0,-10)
|
||||
- Left: Resize active window (-10,0).
|
||||
- Right: Resize active window (10,0).
|
||||
|
||||
______________________________________________________________________
|
||||
|
||||
- J: Resize active window (0,10).
|
||||
- K: Resize active window (0,-10)
|
||||
- H: Resize active window (-10,0).
|
||||
- L: Resize active window (10,0).
|
||||
|
||||
- ESCAPE: Exit resize mode.
|
||||
|
||||
#### Move Mode
|
||||
|
||||
- CTRL ALT + M: Enter move mode.
|
||||
|
||||
- {1..0}: Move to numbered workspace.
|
||||
- Comma: Move to previous numbered workspace.
|
||||
- Period: Move to next numbered workspace.
|
||||
|
||||
______________________________________________________________________
|
||||
|
||||
- Down: Move window down.
|
||||
- Up: Move window up.
|
||||
- Left: Move window left.
|
||||
- Right: Move window right.
|
||||
|
||||
______________________________________________________________________
|
||||
|
||||
- J: Move window down.
|
||||
- K: Move window up.
|
||||
- H: Move window left.
|
||||
- L: Move window right.
|
||||
|
||||
- ESCAPE: Exit move mode.
|
18
homeManagerModules/desktop/river/default.nix
Normal file
18
homeManagerModules/desktop/river/default.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
config = lib.mkIf config.ar.home.desktop.river.enable {
|
||||
ar.home.theme.gtk.hideTitleBar = true;
|
||||
|
||||
wayland.windowManager.river = import ./settings.nix {inherit config lib pkgs;};
|
||||
|
||||
xdg.portal = {
|
||||
enable = true;
|
||||
configPackages = [pkgs.xdg-desktop-portal-wlr];
|
||||
extraPortals = [pkgs.xdg-desktop-portal-wlr];
|
||||
};
|
||||
};
|
||||
}
|
87
homeManagerModules/desktop/river/settings.nix
Normal file
87
homeManagerModules/desktop/river/settings.nix
Normal file
|
@ -0,0 +1,87 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
cfg = config.ar.home;
|
||||
focused = config.lib.stylix.colors.base0D;
|
||||
helpers = import ../wayland/helpers.nix {inherit config lib pkgs;};
|
||||
modifier = "Super";
|
||||
unfocused = config.lib.stylix.colors.base03;
|
||||
urgent = config.lib.stylix.colors.base08;
|
||||
in {
|
||||
enable = true;
|
||||
|
||||
extraConfig = ''
|
||||
touchpad=`riverctl list-inputs|grep -i touchpad`
|
||||
for t in ''${touchpad[@]}; do
|
||||
riverctl input $t natural-scroll enabled
|
||||
riverctl input $t click-method clickfinger
|
||||
riverctl input $t tap enabled
|
||||
riverctl input $t disable-while-typing enabled
|
||||
done
|
||||
|
||||
for i in $(seq 1 8)
|
||||
do
|
||||
tags=$((1 << ($i - 1)))
|
||||
|
||||
# ${modifier}+[1-9] to focus tag [0-8]
|
||||
riverctl map normal ${modifier} $i set-focused-tags $tags
|
||||
|
||||
# ${modifier}+Shift+[1-9] to tag focused view with tag [0-8]
|
||||
riverctl map normal ${modifier}+Shift $i set-view-tags $tags
|
||||
|
||||
# ${modifier}+Control+[1-9] to toggle focus of tag [0-8]
|
||||
riverctl map normal ${modifier}+Control $i toggle-focused-tags $tags
|
||||
|
||||
# ${modifier}+Shift+Control+[1-9] to toggle tag [0-8] of focused view
|
||||
riverctl map normal ${modifier}+Shift+Control $i toggle-view-tags $tags
|
||||
done
|
||||
'';
|
||||
|
||||
systemd.enable = true;
|
||||
|
||||
settings = {
|
||||
border-color-focused = "0x${focused}";
|
||||
border-color-unfocused = "0x${unfocused}";
|
||||
border-color-urgent = "0x${urgent}";
|
||||
border-width = 4;
|
||||
|
||||
default-layout = "rivertile";
|
||||
|
||||
declare-mode = [
|
||||
"locked"
|
||||
"normal"
|
||||
];
|
||||
|
||||
focus-follows-cursor = "normal";
|
||||
|
||||
map = {
|
||||
normal = {
|
||||
"${modifier} B" = "spawn ${lib.getExe cfg.defaultApps.webBrowser}";
|
||||
"${modifier} C" = "close";
|
||||
"${modifier} E" = "spawn ${lib.getExe cfg.defaultApps.editor}";
|
||||
"${modifier} F" = "spawn ${lib.getExe cfg.defaultApps.fileManager}";
|
||||
"${modifier} M" = ''spawn "${lib.getExe config.programs.rofi.package} -show power-menu -modi 'power-menu:${lib.getExe pkgs.rofi-power-menu} --choices=logout/lockscreen/suspend/shutdown/reboot'"'';
|
||||
"${modifier} R" = "spawn '${lib.getExe config.programs.rofi.package} -show combi'";
|
||||
"${modifier} T" = "spawn ${lib.getExe cfg.defaultApps.terminal}";
|
||||
"${modifier}+Control L" = "spawn ${lib.getExe pkgs.swaylock}";
|
||||
"${modifier}+Shift V" = "toggle-float";
|
||||
};
|
||||
};
|
||||
|
||||
map-pointer.normal = {
|
||||
"${modifier} BTN_LEFT" = "move-view";
|
||||
"${modifier} BTN_RIGHT" = "resize-view";
|
||||
};
|
||||
|
||||
rule-add = {
|
||||
"" = "ssd";
|
||||
};
|
||||
|
||||
spawn = [
|
||||
"rivertile"
|
||||
];
|
||||
};
|
||||
}
|
|
@ -149,6 +149,14 @@ in {
|
|||
};
|
||||
};
|
||||
|
||||
river = {
|
||||
enable = lib.mkOption {
|
||||
description = "River with full desktop session components.";
|
||||
default = false; #osConfig.ar.desktop.river.enable;
|
||||
type = lib.types.bool;
|
||||
};
|
||||
};
|
||||
|
||||
windowManagerBinds = lib.mkOption {
|
||||
description = "Default binds for window management.";
|
||||
|
||||
|
|
|
@ -13,9 +13,9 @@ in {
|
|||
};
|
||||
|
||||
systemd.user.services.gammastep = {
|
||||
Install.WantedBy = lib.mkForce (lib.optional (cfg.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (cfg.desktop.sway.enable) "sway-session.target");
|
||||
Install.WantedBy = lib.mkForce (lib.optional (cfg.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (cfg.desktop.sway.enable) "sway-session.target" ++ lib.optional (cfg.desktop.river.enable) "river-session.target");
|
||||
Service.Restart = lib.mkForce "no";
|
||||
Unit.BindsTo = lib.optional (cfg.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (cfg.desktop.sway.enable) "sway-session.target";
|
||||
Unit.BindsTo = lib.optional (cfg.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (cfg.desktop.sway.enable) "sway-session.target" ++ lib.optional (cfg.desktop.river.enable) "river-session.target";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@ in {
|
|||
systemd.user.services.mako = {
|
||||
Unit = {
|
||||
After = "graphical-session.target";
|
||||
BindsTo = lib.optional (cfg.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (cfg.desktop.sway.enable) "sway-session.target";
|
||||
BindsTo = lib.optional (cfg.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (cfg.desktop.sway.enable) "sway-session.target" ++ lib.optional (cfg.desktop.river.enable) "river-session.target";
|
||||
Description = "Lightweight Wayland notification daemon";
|
||||
Documentation = "man:mako(1)";
|
||||
PartOf = "graphical-session.target";
|
||||
|
@ -51,7 +51,7 @@ in {
|
|||
Type = "dbus";
|
||||
};
|
||||
|
||||
Install.WantedBy = lib.optional (cfg.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (cfg.desktop.sway.enable) "sway-session.target";
|
||||
Install.WantedBy = lib.optional (cfg.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (cfg.desktop.sway.enable) "sway-session.target" ++ lib.optional (cfg.desktop.river.enable) "river-session.target";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ in {
|
|||
systemd.user.services.randomWallpaper = {
|
||||
Unit = {
|
||||
After = "graphical-session.target";
|
||||
BindsTo = lib.optional (config.ar.home.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (config.ar.home.desktop.sway.enable) "sway-session.target";
|
||||
BindsTo = lib.optional (config.ar.home.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (config.ar.home.desktop.sway.enable) "sway-session.target" ++ lib.optional (config.ar.home.desktop.river.enable) "river-session.target";
|
||||
Description = "Lightweight swaybg-based random wallpaper daemon.";
|
||||
PartOf = "graphical-session.target";
|
||||
};
|
||||
|
@ -36,7 +36,7 @@ in {
|
|||
TasksMax = "infinity";
|
||||
};
|
||||
|
||||
Install.WantedBy = lib.optional (config.ar.home.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (config.ar.home.desktop.sway.enable) "sway-session.target";
|
||||
Install.WantedBy = lib.optional (config.ar.home.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (config.ar.home.desktop.sway.enable) "sway-session.target" ++ lib.optional (config.ar.home.desktop.river.enable) "river-session.target";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ in {
|
|||
};
|
||||
|
||||
systemd.user.services.swayidle = {
|
||||
Install.WantedBy = lib.mkForce (lib.optional (cfg.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (cfg.desktop.sway.enable) "sway-session.target");
|
||||
Install.WantedBy = lib.mkForce (lib.optional (cfg.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (cfg.desktop.sway.enable) "sway-session.target" ++ lib.optional (cfg.desktop.river.enable) "river-session.target");
|
||||
|
||||
Service = {
|
||||
Environment = lib.mkForce [
|
||||
|
@ -77,7 +77,7 @@ in {
|
|||
Restart = lib.mkForce "no";
|
||||
};
|
||||
|
||||
Unit.BindsTo = lib.optional (cfg.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (cfg.desktop.sway.enable) "sway-session.target";
|
||||
Unit.BindsTo = lib.optional (cfg.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (cfg.desktop.sway.enable) "sway-session.target" ++ lib.optional (cfg.desktop.river.enable) "river-session.target";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -17,9 +17,9 @@ in {
|
|||
};
|
||||
|
||||
systemd.user.services.swayosd = {
|
||||
Install.WantedBy = lib.mkForce (lib.optional (cfg.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (cfg.desktop.sway.enable) "sway-session.target");
|
||||
Install.WantedBy = lib.mkForce (lib.optional (cfg.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (cfg.desktop.sway.enable) "sway-session.target" ++ lib.optional (cfg.desktop.river.enable) "river-session.target");
|
||||
Service.Restart = lib.mkForce "no";
|
||||
Unit.BindsTo = lib.optional (cfg.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (cfg.desktop.sway.enable) "sway-session.target";
|
||||
Unit.BindsTo = lib.optional (cfg.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (cfg.desktop.sway.enable) "sway-session.target" ++ lib.optional (cfg.desktop.river.enable) "river-session.target";
|
||||
};
|
||||
|
||||
xdg.configFile."swayosd/style.css" = {
|
||||
|
|
|
@ -27,7 +27,9 @@ in {
|
|||
lib.optionals (cfg.desktop.hyprland.enable)
|
||||
["hyprland/workspaces"]
|
||||
++ lib.optionals (cfg.desktop.sway.enable)
|
||||
["sway/workspaces"];
|
||||
["sway/workspaces"]
|
||||
++ lib.optionals (cfg.desktop.river.enable)
|
||||
["river/tags"];
|
||||
|
||||
modules-right = [
|
||||
"tray"
|
||||
|
@ -275,18 +277,23 @@ in {
|
|||
#scratchpad,
|
||||
#session,
|
||||
#submap,
|
||||
#tags,
|
||||
#tray,
|
||||
#workspaces {
|
||||
margin: 0px 5px;
|
||||
padding: 0px 2.5px;
|
||||
}
|
||||
|
||||
#tags button,
|
||||
#workspaces button {
|
||||
border-radius: 0px;
|
||||
}
|
||||
|
||||
#tags button.active,
|
||||
#tags button.focused,
|
||||
#workspaces button.active,
|
||||
#workspaces button.focused {
|
||||
#workspaces button.focused
|
||||
{
|
||||
color: ${config.lib.stylix.colors.withHashtag.base0D};
|
||||
}
|
||||
|
||||
|
@ -318,7 +325,7 @@ in {
|
|||
};
|
||||
|
||||
systemd.user.services.waybar = {
|
||||
Install.WantedBy = lib.mkForce (lib.optional (cfg.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (cfg.desktop.sway.enable) "sway-session.target");
|
||||
Install.WantedBy = lib.mkForce (lib.optional (cfg.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (cfg.desktop.sway.enable) "sway-session.target" ++ lib.optional (cfg.desktop.river.enable) "river-session.target");
|
||||
|
||||
Service = {
|
||||
Environment = lib.mkForce [
|
||||
|
@ -350,7 +357,7 @@ in {
|
|||
Restart = lib.mkForce "no";
|
||||
};
|
||||
|
||||
Unit.BindsTo = lib.optional (cfg.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (cfg.desktop.sway.enable) "sway-session.target";
|
||||
Unit.BindsTo = lib.optional (cfg.desktop.hyprland.enable) "hyprland-session.target" ++ lib.optional (cfg.desktop.sway.enable) "sway-session.target" ++ lib.optional (cfg.desktop.river.enable) "river-session.target";
|
||||
};
|
||||
|
||||
xdg.configFile."nwg-drawer/drawer.css".text = ''
|
||||
|
|
Loading…
Reference in a new issue