before we get too crazy

This commit is contained in:
atagen 2026-02-25 14:53:38 +11:00
parent fe668b5b9e
commit 453d780695
21 changed files with 612 additions and 291 deletions

View file

@ -53,3 +53,4 @@ window-rule {
clip-to-geometry true
}
xwayland-satellite { path "%SATELLITE%"; }
spawn-at-startup "systemctl" "--user" "start" "startup-sound.service"

View file

@ -4,13 +4,12 @@ import "launcher" as Launcher
import "logout" as Logout
// singletons
import "title"
import "tags"
import "tags"
import "rice"
import Quickshell
import Quickshell.Wayland
import QtQuick
import QtQuick.Controls
ShellRoot {
@ -18,9 +17,10 @@ ShellRoot {
Variants {
model: Quickshell.screens
Scope {
id: screenScope
property var modelData
PanelWindow {
screen: modelData
screen: screenScope.modelData
id: bg
anchors {
top: true
@ -163,7 +163,6 @@ ShellRoot {
implicitHeight: 22
implicitWidth: (Tags.keys.length !== undefined) ? Tags.keys.length * 13 + 24 : 37;
// implicitWidth:.width + 24
color: "transparent"
Rectangle {

View file

@ -8,7 +8,8 @@ Singleton {
id: data
property var tags: ({})
property var keys: []
Timer {
Timer {
id: reconnectTimer
running: false
repeat: true
@ -43,37 +44,41 @@ Singleton {
return d;
};
let t = {};
for (const k of Object.keys(data.tags)) {
t[k] = Object.assign({}, data.tags[k]);
}
if (event.TagEmpty) {
data.tags = ensure(data.tags, event.TagEmpty);
data.tags[event.TagEmpty].occupied = false;
t = ensure(t, event.TagEmpty);
t[event.TagEmpty].occupied = false;
} else if (event.TagOccupied) {
data.tags = ensure(data.tags, event.TagOccupied);
data.tags[event.TagOccupied].occupied = true;
t = ensure(t, event.TagOccupied);
t[event.TagOccupied].occupied = true;
} else if (event.TagUrgent) {
data.tags = ensure(data.tags, event.TagUrgent);
data.tags[event.TagUrgent].urgent = true;
t = ensure(t, event.TagUrgent);
t[event.TagUrgent].urgent = true;
} else if (event.TagEnabled) {
data.tags = ensure(data.tags, event.TagEnabled);
data.tags[event.TagEnabled].enabled = true;
t = ensure(t, event.TagEnabled);
t[event.TagEnabled].enabled = true;
} else if (event.TagDisabled) {
data.tags = ensure(data.tags, event.TagDisabled);
data.tags[event.TagDisabled].enabled = false;
t = ensure(t, event.TagDisabled);
t[event.TagDisabled].enabled = false;
} else if (event.TagExclusive) {
data.tags = ensure(data.tags, event.TagExclusive);
for (const [k] of Object.keys(data.tags)) {
data.tags[k].enabled = false;
t = ensure(t, event.TagExclusive);
for (const k of Object.keys(t)) {
t[k].enabled = false;
}
data.tags[event.TagExclusive].enabled = true;
t[event.TagExclusive].enabled = true;
} else if (event.TagFullState) {
data["tags"] = event.TagFullState;
for (const [k, v] of Object.entries(data.tags)) {
data.tags[k].id = k;
t = event.TagFullState;
for (const k of Object.keys(t)) {
t[k].id = k;
}
}
data.keys = Object.keys(data.tags);
data.tagsChanged();
data.keysChanged();
data.tags = t;
data.keys = Object.keys(t);
}
}
}

View file

@ -4,6 +4,7 @@
inputs,
mainUser,
getPkgs,
config,
...
}:
let
@ -20,8 +21,10 @@ in
services.stasis.enable = true;
quick.services = {
swaync = "${getExe pkgs.swaynotificationcenter}";
quickshell = "${getExe pkgs.quickshell}";
noti = "${getExe pkgs.swaynotificationcenter}";
shell = "${getExe pkgs.quickshell}";
pwManager = "${getExe config.apps.passwordManager}";
music = "${getExe config.apps.streamPlayer}";
};
environment.files."/home/${mainUser}/.config/quickshell" = {

View file

@ -12,6 +12,7 @@ let
inherit (config) rice;
in
{
imports = [
inputs.niri.nixosModules.niri
inputs.niri-tag.nixosModules.niri-tag
@ -41,17 +42,19 @@ in
(toString borders.gaps)
(toString borders.thickness)
palette.shortHex.bright.yellow
palette.shortHex.normal.yellow
palette.shortHex.normal.white
(lib.getExe xwayland-satellite)
]
template;
in
baseConfig;
};
user.packages = [
niri
xwayland-satellite
];
services.greetd = {
enable = true;
restart = false;
@ -67,11 +70,20 @@ in
initial_session = session;
};
};
programs.niri = {
enable = true;
package = niri;
};
services.niri-tag.enable = true;
services.niri-tag = {
enable = true;
# scratchpads = {
# "${config.apps.streamPlayer}" = 99;
# "${config.apps.passwordManager}" = 101;
# };
};
services.niri-s76-bridge.enable = true;
}