diff --git a/cachix/cachix/niri.nix b/cachix/cachix/niri.nix deleted file mode 100644 index 08bca63..0000000 --- a/cachix/cachix/niri.nix +++ /dev/null @@ -1,13 +0,0 @@ - -{ - nix = { - settings = { - substituters = [ - "https://niri.cachix.org" - ]; - trusted-public-keys = [ - "niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964=" - ]; - }; - }; -} diff --git a/home/home.nix b/home/home.nix index 8f08377..b0c4408 100644 --- a/home/home.nix +++ b/home/home.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, inputs, niri, ... }: +{ config, lib, pkgs, inputs, ... }: let laptop = builtins.readFile "/etc/hostname" == '' @@ -669,9 +669,9 @@ in { output = [ "DP-1" "eDP-1" ]; position = if laptop then "bottom" else "top"; height = 15; - width = if laptop then 1450 else 2200; + width = if laptop then 1400 else 2200; # Choose the order of the modules "custom/wintitle", - modules-left = [ "niri/workspaces" "niri/window" ]; + modules-left = [ "hyprland/workspaces" "hyprland/window" ]; modules-center = [ "clock" ]; modules-right = [ "cpu" "memory" "pulseaudio" "backlight" "battery" "tray" ]; @@ -679,12 +679,12 @@ in { margin-bottom = if laptop then 4 else 0; margin-left = 6; margin-right = 6; - "niri/window" = { format = "{title}"; icon = true; }; + "hyprland/window" = { format = "{title}"; icon = true; }; workspaces = { format = " {name} "; }; - "niri/workspaces" = { + "hyprland/workspaces" = { format = "{icon}"; format-icons = { - "main" = ""; + "1" = ""; "2" = ""; "3" = "󰈙"; "4" = "󰭹"; @@ -825,7 +825,7 @@ in { padding-bottom: 2px; padding-left: 5px; padding-right: 5px; - margin-right: 0px; + margin-right: 50px; background: @backtransparent; box-shadow: 5px 5px 4px 4px #202020; border-radius: 20px; @@ -1492,7 +1492,7 @@ in { padding.y = 10; dynamic_padding = true; }; - terminal.shell.program = "nu"; + terminal.shell.program = "fish"; font = { normal = { family = "VictorMono Nerd Font"; diff --git a/home/modules/niri.nix b/home/modules/niri.nix index d478029..5ae5d7b 100644 --- a/home/modules/niri.nix +++ b/home/modules/niri.nix @@ -1,102 +1,28 @@ -{ config, lib, pkgs, niri, ... }: +{ config, lib, pkgs, ... }: let laptop = builtins.readFile "/etc/hostname" == "syl\n"; - cosmic-extra-niri = pkgs.writeShellScriptBin "cosmic-extra-niri" '' -set -e - -# From: https://people.debian.org/~mpitt/systemd.conf-2016-graphical-session.pdf - -if command -v systemctl >/dev/null; then - # robustness: if the previous graphical session left some failed units, - # reset them so that they don't break this startup - for unit in $(systemctl --user --no-legend --state=failed --plain list-units | cut -f1 -d' '); do - partof="$(systemctl --user show -p PartOf --value "$unit")" - for target in cosmic-session.target graphical-session.target; do - if [ "$partof" = "$target" ]; then - systemctl --user reset-failed "$unit" - break - fi - done - done -fi - -# use the user's preferred shell to acquire environment variables -# see: https://github.com/pop-os/cosmic-session/issues/23 -if [ -n "''${SHELL}" ]; then - # --in-login-shell: our flag to indicate that we don't need to recurse any further - if [ "''${1}" != "--in-login-shell" ]; then - # `exec -l`: like `login`, prefixes $SHELL with a hyphen to start a login shell - exec bash -c "''${0} --in-login-shell" - fi -fi - -export XDG_CURRENT_DESKTOP="''${XDG_CURRENT_DESKTOP:=niri}" -export XDG_SESSION_TYPE="''${XDG_SESSION_TYPE:=wayland}" -export XCURSOR_THEME="''${XCURSOR_THEME:=Cosmic}" -export _JAVA_AWT_WM_NONREPARENTING=1 -export GDK_BACKEND=wayland,x11 -export MOZ_ENABLE_WAYLAND=1 -export QT_QPA_PLATFORM="wayland;xcb" -export QT_AUTO_SCREEN_SCALE_FACTOR=1 -export QT_ENABLE_HIGHDPI_SCALING=1 - -if command -v systemctl >/dev/null; then - # set environment variables for new units started by user service manager - systemctl --user import-environment XDG_SESSION_TYPE XDG_CURRENT_DESKTOP -fi -# Run cosmic-session -if [[ -z "''${DBUS_SESSION_BUS_ADDRESS}" ]]; then - exec dbus-run-session -- ${pkgs.cosmic-session}/bin/cosmic-session niri -else - exec ${pkgs.cosmic-session}/bin/cosmic-session niri -fi - ''; in { - home.packages = with pkgs; [ - cosmic-extra-niri - ]; programs.niri = { - # enable = true; + enable = true; settings = { - prefer-no-csd = true; - binds = with config.lib.niri.actions; let - in { - "XF86AudioRaiseVolume".action.spawn = ["pamixer" "--allow-boost" "-i" "5"]; - "XF86AudioLowerVolume".action.spawn = ["pamixer" "--allow-boost" "-d" "5"]; - "Super+E".action.spawn = ["${pkgs.nushell}/bin/nu" "/home/chris/nirilof emacs 'emacslient -c'"]; - "Super+Return".action.spawn = "alacritty"; - "Super+B".action = spawn ["${pkgs.nushell}/bin/nu" "/home/chris/nirilof org.qutebrowser.qutebrowser qutebrowser"]; - "Super+Space".action.spawn = "cosmic-launcher"; - "Super+V".action= spawn ["${pkgs.fish}/bin/fish" "-c" "${pkgs.cliphist}/bin/cliphist list | ${pkgs.rofi-wayland}/bin/rofi -p '󱃔 ' -dmenu | ${pkgs.cliphist}/bin/cliphist decode | ${pkgs.wl-clipboard}/bin/wl-copy"]; - "Super+I".action.spawn = ["alacritty" "--class" "btm" "-e" "btm"]; - "Super+A".action.spawn = ["alacritty" "--class" "pulsemixer" "-e" "pulsemixer"]; - "Super+Shift+Q".action = quit; - "Super+O".action = toggle-overview; - "Super+F".action = fullscreen-window; - "Super+Shift+F".action = toggle-windowed-fullscreen; - "Super+C".action = close-window; - "Super+Shift+C".action = center-window; - "Super+P".action.spawn = "/home/chris/bin/rbw.sh"; - "Super+Left".action = focus-column-left; - "Super+H".action = focus-column-left; - "Super+Shift+H".action = move-column-left; - "Super+Right".action = focus-column-right; - "Super+L".action = focus-column-right; - "Super+Shift+L".action = move-column-right; - "Super+Ctrl+L".action = set-column-width "+10%"; - "Super+Ctrl+H".action = set-column-width "-10%"; - "Super+M".action = maximize-column; - "Super+W".action = switch-preset-column-width; - "Super+Comma".action = consume-or-expel-window-left; - "Super+Period".action = consume-or-expel-window-right; + binds = { + "XF86AudioRaiseVolume".action.spawn = ["volup"]; + "XF86AudioLowerVolume".action.spawn = ["voldown"]; + "Mod+E".action.spawn = "emacslof"; + "Mod+B".action.spawn = "qblof"; + "Mod+Shift+Q".action = quit; + "Mod+O".action = toggle-overview; + "Mod+F".action = fullscreen-window; + "Mod+M".action = toggle-windowed-fullscreen; + "Mod+C".action = close-window; + "Mod+Left".action = focus-column-left; + "Mod+Right".action = focus-column-right; }; spawn-at-startup = [ - { argv = ["${pkgs.xwayland-satellite}/bin/xwayland-satellite"]; } { argv = ["waybar"]; } - { argv = ["cosmic-osd"]; } { argv = ["kwalled6"]; } { argv = ["swww-daemon"]; } { argv = ["rbw-agent"]; } @@ -112,47 +38,29 @@ in }; }; window-rules = [ - { + all = { geometry-corner-radius = { - top-left = 16.0; - top-right = 16.0; - bottom-left = 16.0; - bottom-right = 16.0; + top-left = 18; + top-right = 18; + bottom-left = 18; + bottom-right = 18; }; - clip-to-geometry = true; - draw-border-with-background = false; - } - { - matches = [ {app-id = "emacs";} ]; + }; + emacs = { + matches.app-id = "emacs"; open-on-workspace = "main"; - } - { - matches = [{app-id = "org.qutebrowser.qutebrowser";}]; + }; + browser = { + matches.app-id = "org.qutebrowser.qutebrowser"; + open-on-workspace = "main"; + }; + cosmic-files = { + matches.app-id = "com.system76.CosmicFiles"; open-on-workspace = "main"; - } - { - matches = [{app-id = "com.system76.CosmicFiles";}]; open-floating = true; - } - { - matches = [{app-id = "btm";}]; - open-floating = true; - default-column-width.proportion = 0.7; - default-window-height.proportion = 0.7; - } - { - matches = [{app-id = "pulsemixer";}]; - open-floating = true; - } + }; ]; layout = { - center-focused-column = "never"; - preset-column-widths = [ - { proportion = 1. / 3.; } - { proportion = 1. / 2.; } - { proportion = 2. / 3.; } - { proportion = 1. / 1.; } - ]; gaps = 15; struts = { bottom = 5; @@ -163,20 +71,11 @@ in shadow = { enable = true; draw-behind-window = false; - inactive-color = "#00000000"; - softness = 10; - spread = 15; }; border = { - enable = false; - width = 4; - active = { color = "#57c7ff"; }; - inactive = { color = "#5af78e"; }; - }; - focus-ring = { enable = true; width = 4; - active = { color = "#5af78e"; }; + }; }; screenshot-path = "~/pics/screenshot_%Y-%m-%d_%H-%M-%S.png"; @@ -188,11 +87,11 @@ in outputs = { "eDP-1" = { enable = true; - name = "A"; mode = { height = 1504; width = 2256; - refresh = 60.0; + refresh = 60; + name = "A"; }; }; }; diff --git a/modules/desktop.nix b/modules/desktop.nix index 0538dbd..1f124fc 100644 --- a/modules/desktop.nix +++ b/modules/desktop.nix @@ -77,98 +77,30 @@ in }; services.displayManager.cosmic-greeter = { - enable = true; + enable = false; }; - # services.greetd = { - # enable = true; - # settings = rec { - # initial_session = { - # command = "uwsm start hyprland-uwsm.desktop"; - # user = "chris"; - # }; - # default_session = { - # command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time -r --window-padding 2 --cmd 'uwsm start hyprland-uwsm.desktop' -s /etc/greetd/environments"; - # user = "greeter"; - # }; - # cosmic_session = { - # command = "start-cosmic"; - # user = "chris"; - # }; - # hyprland_session = { - # command = "uwsm start hyprland-uwsm.desktop"; - # user = "chris"; - # }; - # }; - # }; - - services.displayManager.sessionPackages = [ - ((pkgs.writeTextFile { - name = "cosmic-on-niri"; - destination = "/share/wayland-sessions/COSMIC-on-niri.desktop"; - text = '' - [Desktop Entry] - Name=COSMIC-on-niri - Comment=This session logs you into the COSMIC desktop on niri - Type=Application - DesktopNames=niri - Exec=${pkgs.writeShellApplication { - name = "start-cosmic-ext-niri"; - runtimeInputs = [ pkgs.systemd pkgs.dbus pkgs.cosmic-session pkgs.bash pkgs.coreutils ]; - text = '' - set -e - # From: https://people.debian.org/~mpitt/systemd.conf-2016-graphical-session.pdf - if command -v systemctl >/dev/null; then - # robustness: if the previous graphical session left some failed units, - # reset them so that they don't break this startup - for unit in $(systemctl --user --no-legend --state=failed --plain list-units | cut -f1 -d' '); do - partof="$(systemctl --user show -p PartOf --value "$unit")" - for target in cosmic-session.target graphical-session.target; do - if [ "$partof" = "$target" ]; then - systemctl --user reset-failed "$unit" - break - fi - done - done - fi - # use the user's preferred shell to acquire environment variables - # see: https://github.com/pop-os/cosmic-session/issues/23 - if [ -n "''${SHELL:-}" ]; then - # --in-login-shell: our flag to indicate that we don't need to recurse any further - if [ "''${1:-}" != "--in-login-shell" ]; then - # `exec -l`: like `login`, prefixes $SHELL with a hyphen to start a login shell - exec bash -c "exec -l ${"'"}''${SHELL}' -c ${"'"}''${0} --in-login-shell'" - fi - fi - export XDG_CURRENT_DESKTOP="''${XDG_CURRENT_DESKTOP:=niri}" - export XDG_SESSION_TYPE="''${XDG_SESSION_TYPE:=wayland}" - export XCURSOR_THEME="''${XCURSOR_THEME:=Cosmic}" - export _JAVA_AWT_WM_NONREPARENTING=1 - export GDK_BACKEND=wayland,x11 - export MOZ_ENABLE_WAYLAND=1 - export QT_QPA_PLATFORM="wayland;xcb" - export QT_AUTO_SCREEN_SCALE_FACTOR=1 - export QT_ENABLE_HIGHDPI_SCALING=1 - if command -v systemctl >/dev/null; then - # set environment variables for new units started by user service manager - systemctl --user import-environment XDG_SESSION_TYPE XDG_CURRENT_DESKTOP - fi - # Run cosmic-session - if [[ -z "''${DBUS_SESSION_BUS_ADDRESS}" ]]; then - exec dbus-run-session -- cosmic-session niri - else - exec cosmic-session niri - fi - ''; - }}/bin/start-cosmic-ext-niri - ''; - } - - ).overrideAttrs - (old: { - passthru.providedSessions = [ "COSMIC-on-niri" ]; - })) - ]; + services.greetd = { + enable = true; + settings = rec { + initial_session = { + command = "uwsm start hyprland-uwsm.desktop"; + user = "chris"; + }; + default_session = { + command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time -r --window-padding 2 --cmd 'uwsm start hyprland-uwsm.desktop' -s /etc/greetd/environments"; + user = "greeter"; + }; + cosmic_session = { + command = "start-cosmic"; + user = "chris"; + }; + hyprland_session = { + command = "uwsm start hyprland-uwsm.desktop"; + user = "chris"; + }; + }; + }; programs.regreet = { enable = true; }; diff --git a/pkgs/desktop-packages.nix b/pkgs/desktop-packages.nix index 8af0df5..7d0ae73 100644 --- a/pkgs/desktop-packages.nix +++ b/pkgs/desktop-packages.nix @@ -173,8 +173,6 @@ esptool wireguard-tools # cosmic-ext-examine - cosmic-settings - xwayland-satellite aider-chat wgsl-analyzer ]; diff --git a/scripts/nirilof b/scripts/nirilof deleted file mode 100755 index 7ee49ce..0000000 --- a/scripts/nirilof +++ /dev/null @@ -1,15 +0,0 @@ -#/usr/bin/env nu - -def main [app: string, command: string] { - let open = try { - niri msg --json windows | from json | where app_id == $app | get id | first - } catch { - 0 - } - - if $open > 0 { - niri msg action focus-window --id $open - } else { - bash -c $"($command) &" - } -}