Compare commits

..

No commits in common. "d6d16bfe7f54d341a618c23be218f45aed28e95a" and "d24af7bef55bcfa9f83f5c49b72410bf03027c4c" have entirely different histories.

6 changed files with 63 additions and 262 deletions

View file

@ -1,13 +0,0 @@
{
nix = {
settings = {
substituters = [
"https://niri.cachix.org"
];
trusted-public-keys = [
"niri.cachix.org-1:Wv0OmO7PsuocRKzfDoJ3mulSl7Z6oezYhGhR+3W2964="
];
};
};
}

View file

@ -1,4 +1,4 @@
{ config, lib, pkgs, inputs, niri, ... }: { config, lib, pkgs, inputs, ... }:
let let
laptop = builtins.readFile "/etc/hostname" == '' laptop = builtins.readFile "/etc/hostname" == ''
@ -669,9 +669,9 @@ in {
output = [ "DP-1" "eDP-1" ]; output = [ "DP-1" "eDP-1" ];
position = if laptop then "bottom" else "top"; position = if laptop then "bottom" else "top";
height = 15; height = 15;
width = if laptop then 1450 else 2200; width = if laptop then 1400 else 2200;
# Choose the order of the modules "custom/wintitle", # Choose the order of the modules "custom/wintitle",
modules-left = [ "niri/workspaces" "niri/window" ]; modules-left = [ "hyprland/workspaces" "hyprland/window" ];
modules-center = [ "clock" ]; modules-center = [ "clock" ];
modules-right = modules-right =
[ "cpu" "memory" "pulseaudio" "backlight" "battery" "tray" ]; [ "cpu" "memory" "pulseaudio" "backlight" "battery" "tray" ];
@ -679,12 +679,12 @@ in {
margin-bottom = if laptop then 4 else 0; margin-bottom = if laptop then 4 else 0;
margin-left = 6; margin-left = 6;
margin-right = 6; margin-right = 6;
"niri/window" = { format = "<span style='italic'>{title}</span>"; icon = true; }; "hyprland/window" = { format = "<span style='italic'>{title}</span>"; icon = true; };
workspaces = { format = " {name} "; }; workspaces = { format = " {name} "; };
"niri/workspaces" = { "hyprland/workspaces" = {
format = "{icon}"; format = "{icon}";
format-icons = { format-icons = {
"main" = ""; "1" = "";
"2" = ""; "2" = "";
"3" = "󰈙"; "3" = "󰈙";
"4" = "󰭹"; "4" = "󰭹";
@ -825,7 +825,7 @@ in {
padding-bottom: 2px; padding-bottom: 2px;
padding-left: 5px; padding-left: 5px;
padding-right: 5px; padding-right: 5px;
margin-right: 0px; margin-right: 50px;
background: @backtransparent; background: @backtransparent;
box-shadow: 5px 5px 4px 4px #202020; box-shadow: 5px 5px 4px 4px #202020;
border-radius: 20px; border-radius: 20px;
@ -1492,7 +1492,7 @@ in {
padding.y = 10; padding.y = 10;
dynamic_padding = true; dynamic_padding = true;
}; };
terminal.shell.program = "nu"; terminal.shell.program = "fish";
font = { font = {
normal = { normal = {
family = "VictorMono Nerd Font"; family = "VictorMono Nerd Font";

View file

@ -1,102 +1,28 @@
{ config, lib, pkgs, niri, ... }: { config, lib, pkgs, ... }:
let let
laptop = builtins.readFile "/etc/hostname" == "syl\n"; 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 in
{ {
home.packages = with pkgs; [
cosmic-extra-niri
];
programs.niri = { programs.niri = {
# enable = true; enable = true;
settings = { settings = {
prefer-no-csd = true; binds = {
binds = with config.lib.niri.actions; let "XF86AudioRaiseVolume".action.spawn = ["volup"];
in { "XF86AudioLowerVolume".action.spawn = ["voldown"];
"XF86AudioRaiseVolume".action.spawn = ["pamixer" "--allow-boost" "-i" "5"]; "Mod+E".action.spawn = "emacslof";
"XF86AudioLowerVolume".action.spawn = ["pamixer" "--allow-boost" "-d" "5"]; "Mod+B".action.spawn = "qblof";
"Super+E".action.spawn = ["${pkgs.nushell}/bin/nu" "/home/chris/nirilof emacs 'emacslient -c'"]; "Mod+Shift+Q".action = quit;
"Super+Return".action.spawn = "alacritty"; "Mod+O".action = toggle-overview;
"Super+B".action = spawn ["${pkgs.nushell}/bin/nu" "/home/chris/nirilof org.qutebrowser.qutebrowser qutebrowser"]; "Mod+F".action = fullscreen-window;
"Super+Space".action.spawn = "cosmic-launcher"; "Mod+M".action = toggle-windowed-fullscreen;
"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"]; "Mod+C".action = close-window;
"Super+I".action.spawn = ["alacritty" "--class" "btm" "-e" "btm"]; "Mod+Left".action = focus-column-left;
"Super+A".action.spawn = ["alacritty" "--class" "pulsemixer" "-e" "pulsemixer"]; "Mod+Right".action = focus-column-right;
"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;
}; };
spawn-at-startup = [ spawn-at-startup = [
{ argv = ["${pkgs.xwayland-satellite}/bin/xwayland-satellite"]; }
{ argv = ["waybar"]; } { argv = ["waybar"]; }
{ argv = ["cosmic-osd"]; }
{ argv = ["kwalled6"]; } { argv = ["kwalled6"]; }
{ argv = ["swww-daemon"]; } { argv = ["swww-daemon"]; }
{ argv = ["rbw-agent"]; } { argv = ["rbw-agent"]; }
@ -112,47 +38,29 @@ in
}; };
}; };
window-rules = [ window-rules = [
{ all = {
geometry-corner-radius = { geometry-corner-radius = {
top-left = 16.0; top-left = 18;
top-right = 16.0; top-right = 18;
bottom-left = 16.0; bottom-left = 18;
bottom-right = 16.0; bottom-right = 18;
}; };
clip-to-geometry = true; };
draw-border-with-background = false; emacs = {
} matches.app-id = "emacs";
{
matches = [ {app-id = "emacs";} ];
open-on-workspace = "main"; open-on-workspace = "main";
} };
{ browser = {
matches = [{app-id = "org.qutebrowser.qutebrowser";}]; matches.app-id = "org.qutebrowser.qutebrowser";
open-on-workspace = "main";
};
cosmic-files = {
matches.app-id = "com.system76.CosmicFiles";
open-on-workspace = "main"; open-on-workspace = "main";
}
{
matches = [{app-id = "com.system76.CosmicFiles";}];
open-floating = true; 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 = { layout = {
center-focused-column = "never";
preset-column-widths = [
{ proportion = 1. / 3.; }
{ proportion = 1. / 2.; }
{ proportion = 2. / 3.; }
{ proportion = 1. / 1.; }
];
gaps = 15; gaps = 15;
struts = { struts = {
bottom = 5; bottom = 5;
@ -163,20 +71,11 @@ in
shadow = { shadow = {
enable = true; enable = true;
draw-behind-window = false; draw-behind-window = false;
inactive-color = "#00000000";
softness = 10;
spread = 15;
}; };
border = { border = {
enable = false;
width = 4;
active = { color = "#57c7ff"; };
inactive = { color = "#5af78e"; };
};
focus-ring = {
enable = true; enable = true;
width = 4; width = 4;
active = { color = "#5af78e"; };
}; };
}; };
screenshot-path = "~/pics/screenshot_%Y-%m-%d_%H-%M-%S.png"; screenshot-path = "~/pics/screenshot_%Y-%m-%d_%H-%M-%S.png";
@ -188,11 +87,11 @@ in
outputs = { outputs = {
"eDP-1" = { "eDP-1" = {
enable = true; enable = true;
name = "A";
mode = { mode = {
height = 1504; height = 1504;
width = 2256; width = 2256;
refresh = 60.0; refresh = 60;
name = "A";
}; };
}; };
}; };

View file

@ -77,98 +77,30 @@ in
}; };
services.displayManager.cosmic-greeter = { services.displayManager.cosmic-greeter = {
enable = true; enable = false;
}; };
# services.greetd = { services.greetd = {
# enable = true; enable = true;
# settings = rec { settings = rec {
# initial_session = { initial_session = {
# command = "uwsm start hyprland-uwsm.desktop"; command = "uwsm start hyprland-uwsm.desktop";
# user = "chris"; user = "chris";
# }; };
# default_session = { default_session = {
# command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time -r --window-padding 2 --cmd 'uwsm start hyprland-uwsm.desktop' -s /etc/greetd/environments"; command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time -r --window-padding 2 --cmd 'uwsm start hyprland-uwsm.desktop' -s /etc/greetd/environments";
# user = "greeter"; user = "greeter";
# }; };
# cosmic_session = { cosmic_session = {
# command = "start-cosmic"; command = "start-cosmic";
# user = "chris"; user = "chris";
# }; };
# hyprland_session = { hyprland_session = {
# command = "uwsm start hyprland-uwsm.desktop"; command = "uwsm start hyprland-uwsm.desktop";
# user = "chris"; 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" ];
}))
];
programs.regreet = { enable = true; }; programs.regreet = { enable = true; };

View file

@ -173,8 +173,6 @@
esptool esptool
wireguard-tools wireguard-tools
# cosmic-ext-examine # cosmic-ext-examine
cosmic-settings
xwayland-satellite
aider-chat aider-chat
wgsl-analyzer wgsl-analyzer
]; ];

View file

@ -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) &"
}
}