Compare commits

...

30 Commits

Author SHA1 Message Date
b2ec3d9cd0 update flake 2026-04-12 21:20:54 -05:00
35fbfa3d95 update flake 2026-04-12 20:58:43 -05:00
c7fe5778db update flake 2026-04-12 20:57:10 -05:00
c51c9752d1 update flake 2026-04-12 20:50:56 -05:00
067ebcae93 update flake 2026-04-12 20:49:15 -05:00
fac3994444 update flake 2026-04-12 20:39:33 -05:00
b396a302d3 update flake 2026-04-11 20:03:09 -05:00
7179e6441f update flake 2026-04-11 20:01:47 -05:00
6902564ac1 renamed package 2026-04-11 07:27:12 -05:00
dbc8351e82 update flake 2026-04-11 06:55:13 -05:00
3e14569edd test 2026-04-10 16:56:54 -05:00
062b6d63bd test 2026-04-10 16:53:41 -05:00
983f0f24de test 2026-04-10 16:48:49 -05:00
2f00ce43be test 2026-04-10 16:45:15 -05:00
cf4da27549 test 2026-04-10 16:41:31 -05:00
2fb2731383 test 2026-04-10 16:30:47 -05:00
37c05f2e36 test 2026-04-10 16:26:25 -05:00
58adc58002 test 2026-04-10 16:09:16 -05:00
b97e9dc547 test 2026-04-10 13:12:00 -05:00
bd134cad26 test 2026-04-10 12:04:06 -05:00
67c56deae2 test 2026-04-10 11:48:20 -05:00
dc14e418f3 test 2026-04-10 11:42:46 -05:00
4584546301 test 2026-04-10 10:28:03 -05:00
3602272e4d test 2026-04-10 00:59:41 -05:00
e153502401 test 2026-04-09 19:01:07 -05:00
1f42ca1eae test 2026-04-09 18:44:20 -05:00
e7de1ccb63 test 2026-04-09 16:59:12 -05:00
18403d3ddf test 2026-04-09 14:31:19 -05:00
be1318c3cb works 2026-04-09 11:19:36 -05:00
f4b032e96f works 2026-04-09 11:16:48 -05:00
26 changed files with 403 additions and 191 deletions

View File

@@ -1,4 +1,4 @@
{ self, ... }: { { self, inputs, ... }: {
perSystem = { self', pkgs, system, ... }: { perSystem = { self', pkgs, system, ... }: {
@@ -26,9 +26,106 @@
}; };
aurora-greeter-hypr-conf = pkgs.writeText "greeter-conf" '' aurora-greeter-hypr-conf = pkgs.writeText "greeter-conf" ''
exec-once=${self.packages.${system}.aurora-greeter}/bin/aurora-greeter exec-once=${self'.packages.aurora-greeter-init}/bin/aurora-greeter-init
misc {
disable_hyprland_logo = false
disable_splash_rendering = true
force_default_wallpaper = 0
}
ecosystem {
no_update_news = true
no_donation_nag = true
}
''; '';
aurora-change-colors = (pkgs.writeShellScriptBin "aurora-change-colors" ''
img=''$(realpath "''$1")
alpha=''${2:-80}
if [[ ''$alpha -lt 0 ]]; then
alpha=0
elif [[ ''$alpha -gt 100 ]]; then
alpha=100
fi
if [[ -f ~/.config/wal/colorschemes/dark/''$(basename "''$img")-''$alpha.json ]]; then
${pkgs.pywal16}/bin/wal -n -f "''$(basename "''$img")-''$alpha"
else
${pkgs.pywal16}/bin/wal -n -i "''$img" -a "''$alpha" --cols16 -p "''$(basename "''$img")-''$alpha"
fi
'');
aurora-set-wallpaper = (pkgs.writeShellScriptBin "aurora-set-wallpaper" ''
if [[ ! -d /tmp/aurora/wallpaper ]]; then
mkdir -p /tmp/aurora/wallpaper
fi
src=''$(realpath "''${1:-$(find /tmp/aurora/wallpaper/*)}")
n=''$(basename "''$src")
ext="''${n''\#''\#*.}"
out=''${3:-/dev/null}
if [[ ! -z $1 ]]; then
rm -rf /tmp/aurora/wallpaper/*
cp ''$src /tmp/aurora/wallpaper/wallpaper.$ext
chmod 666 /tmp/aurora/wallpaper/wallpaper.$ext
fi
img="/tmp/aurora/wallpaper/wallpaper.$ext"
if [[ ''$ext == "gif" || ''$ext == "mp4" ]]; then
yes | ${pkgs.ffmpeg}/bin/ffmpeg -i "''$img" -vframes 1 /tmp/aurora/tmp.jpg >> ''$out
pidof mpvpaper >> $out && pkill mpvpaper
${pkgs.awww}/bin/awww img /tmp/aurora/tmp.jpg -t wipe >> ''$out
sleep 0.6
hyprctl dispatch exec "${pkgs.mpvpaper}/bin/mpvpaper ALL ''$img -o loop" >> ''$out
else
yes | ${pkgs.ffmpeg}/bin/ffmpeg -i "''$img" /tmp/aurora/tmp.jpg >> ''$out
pidof mpvpaper >> $out && pkill mpvpaper
hyprctl dispatch exec "${pkgs.awww}/bin/awww img ''$img -t wipe" >> ''$out
fi
${self'.packages.aurora-change-colors}/bin/aurora-change-colors "''$src" "''$2" >> ''$out
'');
aurora-greeter-init = (pkgs.writeShellScriptBin "aurora-greeter-init" ''
if [[ ! -d /tmp/aurora ]]; then
mkdir /tmp/aurora
fi
hyprctl --batch "\
dispatch exec ${pkgs.awww}/bin/awww-daemon ;\
dispatch exec ${self'.packages.aurora-set-wallpaper}/bin/aurora-set-wallpaper;\
setcursor Bibata-Modern-Classic 16"
sleep 3
hyprctl reload
${self'.packages.aurora-greeter}/bin/aurora-greeter
rm ~/.config/wal/colorschemes/dark/wallpaper*
hyprctl dispatch exit
'');
aurora-init = (pkgs.writeShellScriptBin "aurora-init" ''
if [[ ! -d /tmp/aurora ]]; then
mkdir /tmp/aurora
fi
hyprctl --batch "\
dispatch exec ${pkgs.awww}/bin/awww-daemon ;\
dispatch exec ${self'.packages.aurora-set-wallpaper}/bin/aurora-set-wallpaper;\
setcursor Bibata-Modern-Classic 16"
sleep 3
hyprctl reload
'');
}; };
}; };
@@ -42,20 +139,41 @@
cfg = config.services.aurora-greeter; cfg = config.services.aurora-greeter;
system = pkgs.stdenv.hostPlatform.system; system = pkgs.stdenv.hostPlatform.system;
pkgs-a = import inputs.nixpkgs { inherit system; };
in { in {
environment.systemPackages = [ users.users.aurora = {
createHome = true;
home = "/tmp/aurora/home";
packages = with pkgs; [
self.packages.${system}.aurora-greeter self.packages.${system}.aurora-greeter
self.packages.${system}.aurora-greeter-init
self.packages.${system}.aurora-set-wallpaper
pkgs-a.awww
mpvpaper
ffmpeg
]; ];
isNormalUser = true;
group = "aurora";
};
users.groups.aurora = {};
services.greetd = { services.greetd = {
enable = cfg.enable; enable = cfg.enable;
settings = { settings = {
default_session = { default_session = {
command = "Hyprland -c ${self.packages.${system}.aurora-greeter-hypr-conf}"; command = "start-hyprland -- -c ${self.packages.${system}.aurora-greeter-hypr-conf}";
#user = "greeter"; user = "aurora";
}; };
}; };
}; };

View File

@@ -14,34 +14,40 @@ ClippingWrapperRectangle {
anchors.fill: parent anchors.fill: parent
radius: 10 radius: 10
color: Pywal.special.background //color: "black"
color: Settings.special.background
ColumnLayout { ColumnLayout {
anchors.fill: parent anchors.fill: parent
Text { Text {
id: error id: error
text: "" text: ""
color: Pywal.colors.color13 //color: "red"
color: Settings.colors.color13
visible: false visible: false
} }
Text { Text {
text: "User" text: "User"
color: Pywal.special.foreground //color: "white"
color: Settings.special.foreground
} }
TextInput { TextInput {
id: username id: username
text: "guest" text: "guest"
color: Pywal.special.foreground //color: "white"
color: Settings.special.foreground
} }
Text { Text {
text: "Password" text: "Password"
color: Pywal.special.foreground //color: "white"
color: Settings.special.foreground
} }
TextInput { TextInput {
id: password id: password
text: "test" text: "test"
echoMode: TextInput.Password echoMode: TextInput.Password
color: Pywal.special.foreground //color: "white"
color: Settings.special.foreground
} }
Button { Button {
@@ -69,7 +75,7 @@ ClippingWrapperRectangle {
Greetd.readyToLaunch.connect(() => { Greetd.readyToLaunch.connect(() => {
console.log("readyToLaunch") console.log("readyToLaunch")
Greetd.launch([ "Hyprland" ]) Greetd.launch([ "start-hyprland" ])
}) })
console.log("createSession") console.log("createSession")
Greetd.createSession(username.text) Greetd.createSession(username.text)

View File

@@ -1,32 +1,44 @@
pragma Singleton pragma Singleton
import Quickshell import Quickshell // for PanelWindow
import QtQuick // for Text
import QtQuick.Shapes
import QtQuick.Controls
import QtQuick.Layouts
import Quickshell.Io import Quickshell.Io
import Quickshell.Widgets
import Quickshell.Wayland
import Quickshell.Hyprland
Singleton { Singleton {
property string wallpaper: json.wallpaper id: root
property string alpha: Math.round(parseInt(json.alpha, 10) * 0xFF / 100).toString(16) property string wallpaper: c_json.wallpaper
property JsonObject special: json.special property string alpha: Math.round(parseInt(c_json.alpha, 10) * 0xFF / 100).toString(16)
property JsonObject colors: json.colors
property JsonObject special: c_json.special
property JsonObject colors: c_json.colors
function argb(c) { function argb(c) {
return c.slice(0, 1) + Pywal.alpha + c.slice(1) return c.slice(0, 1) + Settings.alpha + c.slice(1)
} }
FileView { FileView {
path: "/home/nathan/.cache/wal/colors.json" id: pywal
path: "/tmp/aurora/home/.cache/wal/colors.json"
watchChanges: true watchChanges: true
onFileChanged: reload() onFileChanged: reload()
JsonAdapter { JsonAdapter {
id: json id: c_json
property string wallpaper: "/home/nathan/Pictures/Wallpaper/bluescape.jpg" property string wallpaper
property string alpha: "100" property string alpha: "100"

View File

@@ -68,16 +68,26 @@
default = "hyprland-session.target"; default = "hyprland-session.target";
}; };
}; };
settings = mkOption {
type = types.attrsOf types.str;
default = {};
};
}; };
config = let config = let
cfg = config.programs.aurora; cfg = config.programs.aurora;
system = pkgs.stdenv.hostPlatform.system; system = pkgs.stdenv.hostPlatform.system;
pkgs-a = import inputs.nixpkgs { inherit system; };
in { in {
home.packages = with pkgs; [ home.packages = with pkgs; [
swww
pkgs-a.awww
mpvpaper
ffmpeg
bluez bluez
bluez-tools bluez-tools
@@ -91,6 +101,9 @@
hyprsunset hyprsunset
wf-recorder wf-recorder
self.packages.${system}.aurora-set-wallpaper
self.packages.${system}.aurora-init
]; ];
programs.quickshell = { programs.quickshell = {
@@ -111,6 +124,10 @@
target = cfg.systemd.target; target = cfg.systemd.target;
}; };
}; };
home.file.".config/aurora/settings.json".text = builtins.toJSON cfg.settings;
systemd.user.services.quickshell.Service.Environment = [ "AURORA_SETTINGS=${config.home.homeDirectory}/${config.home.file.".config/aurora/settings.json".target}" ];
}; };
}; };
} }

View File

@@ -36,6 +36,13 @@ PanelWindow {
bottom: true bottom: true
} }
IpcHandler {
target: "shell"
function reload() {
Quickshell.reload(false)
}
}
Component.onCompleted: { Component.onCompleted: {
@@ -46,6 +53,8 @@ PanelWindow {
root.hyprcmds.forEach((c) => { Hyprland.dispatch(c) }) root.hyprcmds.forEach((c) => { Hyprland.dispatch(c) })
} }
}) })
Settings.reload()
} }
property int topEx: topRect.reserve property int topEx: topRect.reserve
@@ -54,14 +63,13 @@ PanelWindow {
property int leftEx: leftRect.reserve property int leftEx: leftRect.reserve
property int rightEx: rightRect.reserve property int rightEx: rightRect.reserve
property color bg: (Pywal.special.background) property color bg: (Settings.special.background)
id: root id: root
exclusionMode: ExclusionMode.Ignore exclusionMode: ExclusionMode.Ignore
WlrLayershell.layer: WlrLayer.Top WlrLayershell.layer: WlrLayer.Top
//color: Pywal.special.background
color: "transparent" color: "transparent"
mask: Region { mask: Region {
@@ -121,7 +129,7 @@ PanelWindow {
strokeWidth: 1 strokeWidth: 1
strokeColor: "transparent" strokeColor: "transparent"
fillColor: Pywal.argb(Pywal.special.background) fillColor: root.bg
startX: 0; startY: 0 startX: 0; startY: 0
PathLine { relativeX: 0; relativeY: radius } PathLine { relativeX: 0; relativeY: radius }
@@ -143,7 +151,7 @@ PanelWindow {
strokeWidth: 1 strokeWidth: 1
strokeColor: "transparent" strokeColor: "transparent"
fillColor: Pywal.argb(Pywal.special.background) fillColor: root.bg
startX: 0; startY: 0 startX: 0; startY: 0
@@ -167,7 +175,7 @@ PanelWindow {
strokeWidth: 1 strokeWidth: 1
strokeColor: "transparent" strokeColor: "transparent"
fillColor: Pywal.argb(Pywal.special.background) fillColor: root.bg
startX: 0; startY: 0 startX: 0; startY: 0
@@ -190,7 +198,7 @@ PanelWindow {
ShapePath { ShapePath {
strokeWidth: 1 strokeWidth: 1
strokeColor: "transparent" strokeColor: "transparent"
fillColor: Pywal.argb(Pywal.special.background) fillColor: root.bg
startX: 0; startY: 0 startX: 0; startY: 0

View File

@@ -48,7 +48,7 @@ ColumnLayout {
hoverEnabled: true hoverEnabled: true
onEntered: { onEntered: {
midFO.visible = true Settings.launcherOpen = true
} }
} }

View File

@@ -11,7 +11,7 @@ ClippingWrapperRectangle {
radius: 3 radius: 3
color: Pywal.colors.color2 color: Settings.colors.color2
implicitWidth: 30 implicitWidth: 30
@@ -28,7 +28,7 @@ ClippingWrapperRectangle {
font.pointSize: 14 font.pointSize: 14
color: Pywal.special.foreground color: Settings.special.foreground
rotation: -90 rotation: -90
} }
} }

View File

@@ -20,14 +20,14 @@ ColumnLayout {
implicitHeight: 30 implicitHeight: 30
Layout.alignment: Qt.AlignHCenter | Qt.AlignTop Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
Layout.margins: 5 Layout.margins: 5
color: Pywal.colors.color11 color: Settings.colors.color11
RowLayout { RowLayout {
Text { Text {
text: 'Bluetooth' text: 'Bluetooth'
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
Layout.margins: 5 Layout.margins: 5
color: Pywal.colors.color0 color: Settings.colors.color0
} }
Switch { Switch {
@@ -63,7 +63,7 @@ ColumnLayout {
ClippingWrapperRectangle { ClippingWrapperRectangle {
radius: 5 radius: 5
color: Pywal.colors.color4 color: Settings.colors.color4
implicitWidth: root.width - 3 * scroll.x implicitWidth: root.width - 3 * scroll.x
implicitHeight: 40 implicitHeight: 40
@@ -77,7 +77,7 @@ ColumnLayout {
Layout.margins: 5 Layout.margins: 5
text: rep.model[index].name text: rep.model[index].name
color: Pywal.colors.color0 color: Settings.colors.color0
} }
Button { Button {

View File

@@ -10,7 +10,7 @@ WrapperMouseArea {
ClippingWrapperRectangle { ClippingWrapperRectangle {
id: rect id: rect
color: Pywal.colors.color12 color: Settings.colors.color12
radius: 3 radius: 3
anchors.fill: parent anchors.fill: parent
Text { Text {
@@ -19,7 +19,7 @@ WrapperMouseArea {
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
text: Qt.formatDateTime(clock.date, "dddd HH:mm:ss MM/dd/yyyy") text: Qt.formatDateTime(clock.date, "dddd HH:mm:ss MM/dd/yyyy")
font.pointSize: 11 font.pointSize: 11
color: Pywal.special.background color: Settings.special.background
SystemClock { SystemClock {
id: clock id: clock

View File

@@ -41,7 +41,7 @@ Item {
visible: root.visible visible: root.visible
color: Pywal.special.background color: Settings.special.background
radius: root.radius radius: root.radius
item: main item: main
@@ -49,7 +49,7 @@ Item {
WrapperMouseArea { WrapperMouseArea {
ClippingRectangle { ClippingRectangle {
//anchors.fill: parent //anchors.fill: parent
color: Pywal.special.background color: Settings.special.background
id: main id: main
radius: root.radius radius: root.radius
@@ -80,7 +80,7 @@ Item {
implicitWidth: 40 implicitWidth: 40
implicitHeight: 40 implicitHeight: 40
radius: root.radius radius: root.radius
color: index == selected ? Pywal.colors.color13 : Pywal.colors.color4 color: index == selected ? Settings.colors.color13 : Settings.colors.color4
//LauncherButton { anchors.centerIn: parent } //LauncherButton { anchors.centerIn: parent }
Text { Text {
font.pointSize: 14 font.pointSize: 14
@@ -107,14 +107,14 @@ Item {
return ""; return "";
} }
anchors.centerIn: parent anchors.centerIn: parent
color: Pywal.colors.color0 color: Settings.colors.color0
} }
} }
onEntered: child.color = Qt.binding(() => index == selected ? Pywal.colors.color13 : Pywal.colors.color12) onEntered: child.color = Qt.binding(() => index == selected ? Settings.colors.color13 : Settings.colors.color12)
onExited: child.color = Qt.binding(() => index == selected ? Pywal.colors.color13 : Pywal.colors.color4) onExited: child.color = Qt.binding(() => index == selected ? Settings.colors.color13 : Settings.colors.color4)
onClicked: { onClicked: {
selected = index selected = index
child.color = Qt.binding(() => index == selected ? Pywal.colors.color13 : Pywal.colors.color4) child.color = Qt.binding(() => index == selected ? Settings.colors.color13 : Settings.colors.color4)
} }
hoverEnabled: true hoverEnabled: true
} }
@@ -126,7 +126,7 @@ Item {
implicitWidth: parent.width - tabs.width - 2 * parent.spacing - rTabs.width - 2 * parent.spacing implicitWidth: parent.width - tabs.width - 2 * parent.spacing - rTabs.width - 2 * parent.spacing
implicitHeight: parent.height implicitHeight: parent.height
radius: root.radius radius: root.radius
color: Pywal.colors.color1 color: Settings.colors.color1
NotificationServer { NotificationServer {
id: nserver id: nserver
@@ -205,7 +205,7 @@ Item {
implicitHeight: 40 implicitHeight: 40
radius: root.radius radius: root.radius
property bool use: false property bool use: false
color: use ? Pywal.colors.color13 : Pywal.colors.color4 color: use ? Settings.colors.color13 : Settings.colors.color4
//LauncherButton { anchors.centerIn: parent } //LauncherButton { anchors.centerIn: parent }
Text { Text {
font.pointSize: 14 font.pointSize: 14
@@ -232,11 +232,11 @@ Item {
return ""; return "";
} }
anchors.centerIn: parent anchors.centerIn: parent
color: Pywal.colors.color0 color: Settings.colors.color0
} }
} }
onEntered: child.color = Qt.binding(() => child.use ? Pywal.colors.color13 : Pywal.colors.color12) onEntered: child.color = Qt.binding(() => child.use ? Settings.colors.color13 : Settings.colors.color12)
onExited: child.color = Qt.binding(() => child.use ? Pywal.colors.color13 : Pywal.colors.color4) onExited: child.color = Qt.binding(() => child.use ? Settings.colors.color13 : Settings.colors.color4)
onClicked: { onClicked: {
child.use = !child.use child.use = !child.use

View File

@@ -10,7 +10,7 @@ ClippingWrapperRectangle {
id: root id: root
radius: 3 radius: 3
color: Pywal.colors.color1 color: Settings.colors.color1
implicitWidth: 30; height: 30 implicitWidth: 30; height: 30
Button { Button {
id: button id: button
@@ -19,7 +19,7 @@ ClippingWrapperRectangle {
background: Rectangle { background: Rectangle {
color: Pywal.colors.color9 color: Settings.colors.color9
} }
Process { Process {

View File

@@ -14,11 +14,11 @@ VFlyoutUp {
required property list<string> hyprcmds required property list<string> hyprcmds
visible: false visible: Settings.launcherOpen
item: content item: content
onExited: visible = false onExited: Settings.launcherOpen = false
ClippingRectangle { ClippingRectangle {
id: content id: content
@@ -26,7 +26,7 @@ VFlyoutUp {
implicitWidth: 700 implicitWidth: 700
implicitHeight: wallpaper.height implicitHeight: wallpaper.height
color: Pywal.colors.color1 color: Settings.colors.color1
Wallpaper { Wallpaper {
id: wallpaper id: wallpaper

View File

@@ -5,6 +5,7 @@ import Quickshell.Io
import Quickshell.Widgets import Quickshell.Widgets
WrapperMouseArea { WrapperMouseArea {
ClippingWrapperRectangle { ClippingWrapperRectangle {
radius: 3 radius: 3
implicitWidth: 30; implicitHeight: 30 implicitWidth: 30; implicitHeight: 30
@@ -15,22 +16,16 @@ WrapperMouseArea {
text: " " text: " "
font.pointSize: 16 font.pointSize: 16
color: Pywal.special.foreground color: Settings.special.foreground
} }
color: { color: {
containsMouse containsMouse
? Pywal.colors.color12 ? Settings.colors.color12
: Pywal.colors.color1 : Settings.colors.color1
} }
} }
hoverEnabled: true hoverEnabled: true
Process { onClicked: Settings.launcherOpen = true
id: launcher
running: false
command: ["rofi", "-show", "drun", "-show-icons" ]
}
onClicked: launcher.running = true
} }

View File

@@ -21,7 +21,7 @@ Item {
required property string bg_path required property string bg_path
property color fieldColor: ctx.failed ? Pywal.colors.color6 : Pywal.colors.color1 property color fieldColor: ctx.failed ? Settings.colors.color6 : Settings.colors.color1
IpcHandler { IpcHandler {
target: "lockscreen" target: "lockscreen"
@@ -66,7 +66,7 @@ Item {
anchors.centerIn: parent anchors.centerIn: parent
radius: 10 radius: 10
color: Pywal.special.background color: Settings.special.background
RowLayout { RowLayout {
ClippingWrapperRectangle { ClippingWrapperRectangle {
@@ -85,7 +85,7 @@ Item {
verticalAlignment: TextInput.AlignVCenter verticalAlignment: TextInput.AlignVCenter
font.pointSize: 30 font.pointSize: 30
color: Pywal.special.foreground color: Settings.special.foreground
} }
} }

View File

@@ -15,7 +15,7 @@ ClippingWrapperRectangle {
implicitWidth: parent.width - 2 * Layout.margins implicitWidth: parent.width - 2 * Layout.margins
implicitHeight: 100 implicitHeight: 100
color: Pywal.colors.color4 color: Settings.colors.color4
required property Notification src required property Notification src
@@ -43,14 +43,14 @@ ClippingWrapperRectangle {
Layout.topMargin: 10 Layout.topMargin: 10
Layout.alignment: Qt.AlignLeft | Qt.AlignTop Layout.alignment: Qt.AlignLeft | Qt.AlignTop
Text { Text {
color: Pywal.special.background color: Settings.special.background
Layout.alignment: Qt.AlignLeft | Qt.AlignTop Layout.alignment: Qt.AlignLeft | Qt.AlignTop
text: notif.src.summary text: notif.src.summary
Layout.leftMargin: 10 Layout.leftMargin: 10
font.pointSize: 14 font.pointSize: 14
} }
Text { Text {
color: Pywal.special.background color: Settings.special.background
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
text: notif.src.body text: notif.src.body
Layout.leftMargin: 10 Layout.leftMargin: 10

View File

@@ -18,7 +18,7 @@ ColumnLayout {
ClippingWrapperRectangle { ClippingWrapperRectangle {
color: Pywal.colors.color11 color: Settings.colors.color11
radius: 5 radius: 5
Layout.margins: 5 Layout.margins: 5
Layout.alignment: Qt.AlignVCenter | Qt.AlignTop Layout.alignment: Qt.AlignVCenter | Qt.AlignTop
@@ -27,7 +27,7 @@ ColumnLayout {
RowLayout { RowLayout {
width: parent.width width: parent.width
Text { Text {
color: Pywal.colors.color0 color: Settings.colors.color0
Layout.margins: 5 Layout.margins: 5
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
text: 'Notifications' text: 'Notifications'

View File

@@ -79,22 +79,22 @@ PanelWindow {
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
color: Pywal.special.foreground color: Settings.special.foreground
} }
implicitHeight: 60 implicitHeight: 60
implicitWidth: 60 implicitWidth: 60
color: parent.contansMouse ? Pywal.colors.color12 : Pywal.colors.color4 color: parent.contansMouse ? Settings.colors.color12 : Settings.colors.color4
} }
hoverEnabled: true hoverEnabled: true
onEntered: { onEntered: {
child.color = Pywal.colors.color12 child.color = Settings.colors.color12
} }
onExited: { onExited: {
child.color = Pywal.colors.color4 child.color = Settings.colors.color4
} }
onClicked: { onClicked: {

View File

@@ -21,7 +21,7 @@ ColumnLayout {
onClicked: PowerProfiles.profile = PowerProfile.Performance onClicked: PowerProfiles.profile = PowerProfile.Performance
visible: PowerProfiles.hasPerformanceProfile visible: PowerProfiles.hasPerformanceProfile
background: Rectangle { color: PowerProfiles.profile == PowerProfile.Performance ? Pywal.colors.color13 : Pywal.colors.color4 } background: Rectangle { color: PowerProfiles.profile == PowerProfile.Performance ? Settings.colors.color13 : Settings.colors.color4 }
} }
Button { Button {
Layout.topMargin: 5 Layout.topMargin: 5
@@ -31,7 +31,7 @@ ColumnLayout {
text: 'balanced' text: 'balanced'
onClicked: PowerProfiles.profile = PowerProfile.Balanced onClicked: PowerProfiles.profile = PowerProfile.Balanced
background: Rectangle { color: PowerProfiles.profile == PowerProfile.Balanced ? Pywal.colors.color13 : Pywal.colors.color4 } background: Rectangle { color: PowerProfiles.profile == PowerProfile.Balanced ? Settings.colors.color13 : Settings.colors.color4 }
} }
Button { Button {
Layout.topMargin: 5 Layout.topMargin: 5
@@ -41,6 +41,6 @@ ColumnLayout {
text: 'power saver' text: 'power saver'
onClicked: PowerProfiles.profile = PowerProfile.PowerSaver onClicked: PowerProfiles.profile = PowerProfile.PowerSaver
background: Rectangle { color: PowerProfiles.profile == PowerProfile.PowerSaver ? Pywal.colors.color13 : Pywal.colors.color4 } background: Rectangle { color: PowerProfiles.profile == PowerProfile.PowerSaver ? Settings.colors.color13 : Settings.colors.color4 }
} }
} }

View File

@@ -1,62 +0,0 @@
pragma Singleton
import Quickshell
import Quickshell.Io
Singleton {
property string wallpaper: json.wallpaper
property string alpha: Math.round(parseInt(json.alpha, 10) * 0xFF / 100).toString(16)
property JsonObject special: json.special
property JsonObject colors: json.colors
function argb(c) {
return c.slice(0, 1) + Pywal.alpha + c.slice(1)
}
FileView {
path: "/home/nathan/.cache/wal/colors.json"
watchChanges: true
onFileChanged: reload()
JsonAdapter {
id: json
property string wallpaper: "/home/nathan/Pictures/Wallpaper/bluescape.jpg"
property string alpha: "100"
property JsonObject special: JsonObject {
property string background: "transparent"
property string foreground: "transparent"
property string cursor: "transparent"
}
property JsonObject colors: JsonObject {
property string color0: "transparent"
property string color1: "transparent"
property string color2: "transparent"
property string color3: "transparent"
property string color4: "transparent"
property string color5: "transparent"
property string color6: "transparent"
property string color7: "transparent"
property string color8: "transparent"
property string color9: "transparent"
property string color10: "transparent"
property string color11: "transparent"
property string color12: "transparent"
property string color13: "transparent"
property string color14: "transparent"
property string color15: "transparent"
}
}
}
}

View File

@@ -0,0 +1,120 @@
pragma Singleton
import Quickshell // for PanelWindow
import QtQuick // for Text
import QtQuick.Shapes
import QtQuick.Controls
import QtQuick.Layouts
import Quickshell.Io
import Quickshell.Widgets
import Quickshell.Wayland
import Quickshell.Hyprland
Singleton {
property bool launcherOpen: false
property string wallpaperDir: s_json.wallpaperDir
property string colorsPath: s_json.colorsPath
Process {
id: cc
command: [ s_json.changeColorsCmd ]
running: false
}
property string settingsPath: Quickshell.env("AURORA_SETTINGS")
onSettingsPathChanged: reload()
function reload() {
settings.reload()
root.wallpaperDir = Qt.binding(() => s_json.wallpaperDir)
root.colorsPath = Qt.binding(() => s_json.colorsPath)
root.wallpaper = Qt.binding(() => c_json.wallpaper)
root.colors = Qt.binding(() => c_json.colors)
}
id: root
FileView {
id: settings
path: root.settingsPath
watchChanges: true
onFileChanged: reload()
JsonAdapter {
id: s_json
property string wallpaperDir
property string colorsPath
property string changeColorsCmd
}
}
property string wallpaper: c_json.wallpaper
property string alpha: Math.round(parseInt(c_json.alpha, 10) * 0xFF / 100).toString(16)
property JsonObject special: c_json.special
property JsonObject colors: c_json.colors
function argb(c) {
return c.slice(0, 1) + Settings.alpha + c.slice(1)
}
FileView {
id: pywal
path: root.colorsPath
watchChanges: true
onFileChanged: {
reload()
cc.running = true
}
JsonAdapter {
id: c_json
property string wallpaper
property string alpha: "100"
property JsonObject special: JsonObject {
property string background: "transparent"
property string foreground: "transparent"
property string cursor: "transparent"
}
property JsonObject colors: JsonObject {
property string color0: "transparent"
property string color1: "transparent"
property string color2: "transparent"
property string color3: "transparent"
property string color4: "transparent"
property string color5: "transparent"
property string color6: "transparent"
property string color7: "transparent"
property string color8: "transparent"
property string color9: "transparent"
property string color10: "transparent"
property string color11: "transparent"
property string color12: "transparent"
property string color13: "transparent"
property string color14: "transparent"
property string color15: "transparent"
}
}
}
}

View File

@@ -19,12 +19,12 @@ FloatingWindow {
visible: false visible: false
color: Pywal.special.background color: Settings.special.background
WrapperMouseArea { WrapperMouseArea {
ClippingRectangle { ClippingRectangle {
//anchors.fill: parent //anchors.fill: parent
color: Pywal.special.background color: Settings.special.background
id: main id: main
radius: root.radius radius: root.radius
@@ -55,7 +55,7 @@ FloatingWindow {
implicitWidth: 40 implicitWidth: 40
implicitHeight: 40 implicitHeight: 40
radius: root.radius radius: root.radius
color: index == selected ? Pywal.colors.color13 : Pywal.colors.color4 color: index == selected ? Settings.colors.color13 : Settings.colors.color4
//LauncherButton { anchors.centerIn: parent } //LauncherButton { anchors.centerIn: parent }
Text { Text {
font.pointSize: 14 font.pointSize: 14
@@ -82,14 +82,14 @@ FloatingWindow {
return ""; return "";
} }
anchors.centerIn: parent anchors.centerIn: parent
color: Pywal.colors.color0 color: Settings.colors.color0
} }
} }
onEntered: child.color = Qt.binding(() => index == selected ? Pywal.colors.color13 : Pywal.colors.color12) onEntered: child.color = Qt.binding(() => index == selected ? Settings.colors.color13 : Settings.colors.color12)
onExited: child.color = Qt.binding(() => index == selected ? Pywal.colors.color13 : Pywal.colors.color4) onExited: child.color = Qt.binding(() => index == selected ? Settings.colors.color13 : Settings.colors.color4)
onClicked: { onClicked: {
selected = index selected = index
child.color = Qt.binding(() => index == selected ? Pywal.colors.color13 : Pywal.colors.color4) child.color = Qt.binding(() => index == selected ? Settings.colors.color13 : Settings.colors.color4)
} }
hoverEnabled: true hoverEnabled: true
} }
@@ -101,7 +101,7 @@ FloatingWindow {
implicitWidth: parent.width - tabs.width - 2 * parent.spacing - rTabs.width - 2 * parent.spacing implicitWidth: parent.width - tabs.width - 2 * parent.spacing - rTabs.width - 2 * parent.spacing
implicitHeight: parent.height implicitHeight: parent.height
radius: root.radius radius: root.radius
color: Pywal.colors.color1 color: Settings.colors.color1
Loader { Loader {
anchors.fill: parent anchors.fill: parent
@@ -159,7 +159,7 @@ FloatingWindow {
implicitHeight: 40 implicitHeight: 40
radius: root.radius radius: root.radius
property bool use: false property bool use: false
color: use ? Pywal.colors.color13 : Pywal.colors.color4 color: use ? Settings.colors.color13 : Settings.colors.color4
//LauncherButton { anchors.centerIn: parent } //LauncherButton { anchors.centerIn: parent }
Text { Text {
font.pointSize: 14 font.pointSize: 14
@@ -186,11 +186,11 @@ FloatingWindow {
return ""; return "";
} }
anchors.centerIn: parent anchors.centerIn: parent
color: Pywal.colors.color0 color: Settings.colors.color0
} }
} }
onEntered: child.color = Qt.binding(() => child.use ? Pywal.colors.color13 : Pywal.colors.color12) onEntered: child.color = Qt.binding(() => child.use ? Settings.colors.color13 : Settings.colors.color12)
onExited: child.color = Qt.binding(() => child.use ? Pywal.colors.color13 : Pywal.colors.color4) onExited: child.color = Qt.binding(() => child.use ? Settings.colors.color13 : Settings.colors.color4)
onClicked: { onClicked: {
child.use = !child.use child.use = !child.use

View File

@@ -16,7 +16,7 @@ Item {
ClippingWrapperRectangle { ClippingWrapperRectangle {
radius: 3 radius: 3
anchors.fill: parent anchors.fill: parent
color: Pywal.colors.color4 color: Settings.colors.color4
ColumnLayout { ColumnLayout {
id: lay id: lay
spacing: 4 spacing: 4
@@ -30,7 +30,7 @@ Item {
implicitWidth: 20 implicitWidth: 20
implicitHeight: 20 implicitHeight: 20
color: Pywal.colors.color4 color: Settings.colors.color4
MouseArea { MouseArea {
anchors.fill: parent anchors.fill: parent

View File

@@ -18,7 +18,7 @@ ScrollView {
ClippingWrapperRectangle { ClippingWrapperRectangle {
color: Pywal.colors.color11 color: Settings.colors.color11
radius: 5 radius: 5
Layout.margins: 5 Layout.margins: 5
Layout.alignment: Qt.AlignVCenter | Qt.AlignTop Layout.alignment: Qt.AlignVCenter | Qt.AlignTop
@@ -27,7 +27,7 @@ ScrollView {
RowLayout { RowLayout {
width: parent.width width: parent.width
Text { Text {
color: Pywal.colors.color0 color: Settings.colors.color0
Layout.margins: 5 Layout.margins: 5
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
text: 'Output' text: 'Output'
@@ -71,7 +71,7 @@ ScrollView {
ClippingWrapperRectangle { ClippingWrapperRectangle {
color: Pywal.colors.color11 color: Settings.colors.color11
radius: 5 radius: 5
Layout.margins: 5 Layout.margins: 5
Layout.alignment: Qt.AlignVCenter | Qt.AlignTop Layout.alignment: Qt.AlignVCenter | Qt.AlignTop
@@ -80,7 +80,7 @@ ScrollView {
RowLayout { RowLayout {
width: parent.width width: parent.width
Text { Text {
color: Pywal.colors.color0 color: Settings.colors.color0
Layout.margins: 5 Layout.margins: 5
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
text: 'Input' text: 'Input'

View File

@@ -16,7 +16,7 @@ Flickable {
id: root id: root
property string dir: "/home/nathan/Pictures/Wallpaper/" property string dir: Settings.wallpaperDir
implicitHeight: lay.height implicitHeight: lay.height
implicitWidth: 750 implicitWidth: 750
@@ -26,8 +26,6 @@ Flickable {
flickDeceleration: 5000 flickDeceleration: 5000
contentX: 100
WheelHandler { WheelHandler {
target: root target: root
//property: "contentX" //property: "contentX"
@@ -64,7 +62,7 @@ Flickable {
implicitWidth: 192 * 2; implicitHeight: 108 * 2 implicitWidth: 192 * 2; implicitHeight: 108 * 2
Image { Image {
width: 192 * 2; height: 108 * 2 width: 192 * 2; height: 108 * 2
source: Qt.resolvedUrl(root.dir + rep.model[index]) source: Qt.resolvedUrl(root.dir + "/" + rep.model[index])
fillMode: Image.PreserveAspectCrop fillMode: Image.PreserveAspectCrop
sourceSize.width: 192 * 2 sourceSize.width: 192 * 2
sourceSize.height: 108 * 2 sourceSize.height: 108 * 2
@@ -72,7 +70,7 @@ Flickable {
} }
property Process sw: Process { property Process sw: Process {
command: ["setWallpaper", root.dir + rep.model[index]] command: ["aurora-set-wallpaper", root.dir + "/" + rep.model[index]]
running: false running: false
onRunningChanged: { onRunningChanged: {
root.hyprcmds.forEach((c) => Hyprland.dispatch(c)) root.hyprcmds.forEach((c) => Hyprland.dispatch(c))

View File

@@ -11,7 +11,7 @@ Item {
Component.onCompleted: Hyprland.refreshWorkspaces() Component.onCompleted: Hyprland.refreshWorkspaces()
ClippingWrapperRectangle { ClippingWrapperRectangle {
color: Pywal.colors.color1 color: Settings.colors.color1
radius: 3 radius: 3
anchors.fill: parent anchors.fill: parent
ColumnLayout { ColumnLayout {
@@ -37,10 +37,10 @@ Item {
implicitHeight: 24 implicitHeight: 24
color: { color: {
Hyprland?.focusedWorkspace?.id == rep.model[index].id Hyprland?.focusedWorkspace?.id == rep.model[index].id
? Pywal.colors.color13 ? Settings.colors.color13
: containsMouse : containsMouse
? Pywal.colors.color12 ? Settings.colors.color12
: Pywal.colors.color4 : Settings.colors.color4
} }
Text { Text {
@@ -51,8 +51,8 @@ Item {
color: { color: {
Hyprland?.focusedWorkspace?.id == rep.model[index].id Hyprland?.focusedWorkspace?.id == rep.model[index].id
? Pywal.colors.color1 ? Settings.colors.color1
: Pywal.special.foreground : Settings.special.foreground
} }
} }
} }

36
flake.lock generated
View File

@@ -5,11 +5,11 @@
"nixpkgs-lib": "nixpkgs-lib" "nixpkgs-lib": "nixpkgs-lib"
}, },
"locked": { "locked": {
"lastModified": 1772408722, "lastModified": 1775087534,
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=", "narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3", "rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -23,11 +23,11 @@
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
}, },
"locked": { "locked": {
"lastModified": 1772845525, "lastModified": 1775900011,
"narHash": "sha256-Dp5Ir2u4jJDGCgeMRviHvEQDe+U37hMxp6RSNOoMMPc=", "narHash": "sha256-QUGu6CJYFQ5AWVV0n3/FsJyV+1/gj7HSDx68/SX9pwM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "27b93804fbef1544cb07718d3f0a451f4c4cd6c0", "rev": "b0569dc6ec1e6e7fefd8f6897184e4c191cd768e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -38,11 +38,11 @@
}, },
"import-tree": { "import-tree": {
"locked": { "locked": {
"lastModified": 1772344373, "lastModified": 1773693634,
"narHash": "sha256-OQQ1MhB9t1J71b2wxRRTdH/Qd8UGG0p+dGspfCf5U1c=", "narHash": "sha256-BtZ2dtkBdSUnFPPFc+n0kcMbgaTxzFNPv2iaO326Ffg=",
"owner": "vic", "owner": "vic",
"repo": "import-tree", "repo": "import-tree",
"rev": "10fda59eee7d7970ec443b925f32a1bc7526648c", "rev": "c41e7d58045f9057880b0d85e1152d6a4430dbf1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -53,11 +53,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1772542754, "lastModified": 1775423009,
"narHash": "sha256-WGV2hy+VIeQsYXpsLjdr4GvHv5eECMISX1zKLTedhdg=", "narHash": "sha256-vPKLpjhIVWdDrfiUM8atW6YkIggCEKdSAlJPzzhkQlw=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "8c809a146a140c5c8806f13399592dbcb1bb5dc4", "rev": "68d8aa3d661f0e6bd5862291b5bb263b2a6595c9",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -69,11 +69,11 @@
}, },
"nixpkgs-lib": { "nixpkgs-lib": {
"locked": { "locked": {
"lastModified": 1772328832, "lastModified": 1774748309,
"narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=", "narHash": "sha256-+U7gF3qxzwD5TZuANzZPeJTZRHS29OFQgkQ2kiTJBIQ=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixpkgs.lib", "repo": "nixpkgs.lib",
"rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742", "rev": "333c4e0545a6da976206c74db8773a1645b5870a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -84,11 +84,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1772433332, "lastModified": 1775710090,
"narHash": "sha256-izhTDFKsg6KeVBxJS9EblGeQ8y+O8eCa6RcW874vxEc=", "narHash": "sha256-ar3rofg+awPB8QXDaFJhJ2jJhu+KqN/PRCXeyuXR76E=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "cf59864ef8aa2e178cccedbe2c178185b0365705", "rev": "4c1018dae018162ec878d42fec712642d214fdfa",
"type": "github" "type": "github"
}, },
"original": { "original": {