Compare commits
42 Commits
6ea4782a80
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| b2ec3d9cd0 | |||
| 35fbfa3d95 | |||
| c7fe5778db | |||
| c51c9752d1 | |||
| 067ebcae93 | |||
| fac3994444 | |||
| b396a302d3 | |||
| 7179e6441f | |||
| 6902564ac1 | |||
| dbc8351e82 | |||
| 3e14569edd | |||
| 062b6d63bd | |||
| 983f0f24de | |||
| 2f00ce43be | |||
| cf4da27549 | |||
| 2fb2731383 | |||
| 37c05f2e36 | |||
| 58adc58002 | |||
| b97e9dc547 | |||
| bd134cad26 | |||
| 67c56deae2 | |||
| dc14e418f3 | |||
| 4584546301 | |||
| 3602272e4d | |||
| e153502401 | |||
| 1f42ca1eae | |||
| e7de1ccb63 | |||
| 18403d3ddf | |||
| be1318c3cb | |||
| f4b032e96f | |||
| 76a5bf5917 | |||
| bd4e2c4d1d | |||
| 2d42f93952 | |||
| d97862289b | |||
| 888a607ff7 | |||
| 7a15a983af | |||
| adcd560180 | |||
| 27db5bd480 | |||
| cecf6df20a | |||
| db4132a489 | |||
| 8c912861e3 | |||
| 02d6688a74 |
39
config/aurora-greeter/Bar.qml
Normal file
39
config/aurora-greeter/Bar.qml
Normal file
@@ -0,0 +1,39 @@
|
||||
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
|
||||
import Quickshell.Services.Greetd
|
||||
import Quickshell.Services.Pam
|
||||
import qs.modules
|
||||
|
||||
PanelWindow {
|
||||
|
||||
id: root
|
||||
|
||||
anchors {
|
||||
top: true
|
||||
left: true
|
||||
right: true
|
||||
bottom: true
|
||||
}
|
||||
|
||||
margins {
|
||||
top: root.screen.height * 0.4
|
||||
bottom: root.screen.height * 0.4
|
||||
left: root.screen.width * 0.4
|
||||
right: root.screen.width * 0.4
|
||||
}
|
||||
|
||||
focusable: true
|
||||
|
||||
color: "transparent"
|
||||
|
||||
Lock {
|
||||
}
|
||||
|
||||
}
|
||||
182
config/aurora-greeter/default.nix
Normal file
182
config/aurora-greeter/default.nix
Normal file
@@ -0,0 +1,182 @@
|
||||
{ self, inputs, ... }: {
|
||||
|
||||
|
||||
perSystem = { self', pkgs, system, ... }: {
|
||||
packages = {
|
||||
|
||||
aurora-greeter = pkgs.writeShellScriptBin "aurora-greeter" ''
|
||||
${pkgs.quickshell}/bin/quickshell -p ${self'.packages.aurora-greeter-dots}/share/shell.qml
|
||||
'';
|
||||
|
||||
aurora-greeter-dots = pkgs.stdenv.mkDerivation {
|
||||
|
||||
name = "aurora-greeter-dots";
|
||||
|
||||
src = ./.;
|
||||
|
||||
buildInputs = [];
|
||||
|
||||
buildPhase = ''
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/share
|
||||
cp -r $src/* $out/share
|
||||
'';
|
||||
};
|
||||
|
||||
aurora-greeter-hypr-conf = pkgs.writeText "greeter-conf" ''
|
||||
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
|
||||
'');
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
flake.nixosModules.default = { config, lib, pkgs, ... }: {
|
||||
|
||||
options.services.aurora-greeter = with lib; {
|
||||
enable = mkEnableOption "aurora-greeter";
|
||||
};
|
||||
|
||||
config = let
|
||||
cfg = config.services.aurora-greeter;
|
||||
|
||||
system = pkgs.stdenv.hostPlatform.system;
|
||||
|
||||
pkgs-a = import inputs.nixpkgs { inherit system; };
|
||||
in {
|
||||
|
||||
users.users.aurora = {
|
||||
|
||||
createHome = true;
|
||||
|
||||
home = "/tmp/aurora/home";
|
||||
|
||||
packages = with pkgs; [
|
||||
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 = {
|
||||
enable = cfg.enable;
|
||||
|
||||
settings = {
|
||||
|
||||
default_session = {
|
||||
command = "start-hyprland -- -c ${self.packages.${system}.aurora-greeter-hypr-conf}";
|
||||
user = "aurora";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
86
config/aurora-greeter/modules/Lock.qml
Normal file
86
config/aurora-greeter/modules/Lock.qml
Normal file
@@ -0,0 +1,86 @@
|
||||
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
|
||||
import Quickshell.Services.Greetd
|
||||
|
||||
ClippingWrapperRectangle {
|
||||
|
||||
anchors.fill: parent
|
||||
radius: 10
|
||||
|
||||
//color: "black"
|
||||
color: Settings.special.background
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
Text {
|
||||
id: error
|
||||
text: ""
|
||||
//color: "red"
|
||||
color: Settings.colors.color13
|
||||
visible: false
|
||||
}
|
||||
Text {
|
||||
text: "User"
|
||||
//color: "white"
|
||||
color: Settings.special.foreground
|
||||
}
|
||||
TextInput {
|
||||
id: username
|
||||
text: "guest"
|
||||
//color: "white"
|
||||
color: Settings.special.foreground
|
||||
}
|
||||
Text {
|
||||
text: "Password"
|
||||
//color: "white"
|
||||
color: Settings.special.foreground
|
||||
}
|
||||
TextInput {
|
||||
id: password
|
||||
text: "test"
|
||||
echoMode: TextInput.Password
|
||||
//color: "white"
|
||||
color: Settings.special.foreground
|
||||
}
|
||||
|
||||
Button {
|
||||
text: "Login"
|
||||
|
||||
onClicked: {
|
||||
if(Greetd.available) {
|
||||
Greetd.authMessage.connect((m, e, rr, er) => {
|
||||
console.log(m)
|
||||
if(e) {
|
||||
if(er) {
|
||||
error.visible = true
|
||||
error.text = m
|
||||
}
|
||||
} else if(rr) {
|
||||
console.log("send password")
|
||||
Greetd.respond(password.text)
|
||||
}
|
||||
})
|
||||
|
||||
Greetd.authFailure.connect((m) => {
|
||||
error.visible = true
|
||||
error.text = m
|
||||
})
|
||||
|
||||
Greetd.readyToLaunch.connect(() => {
|
||||
console.log("readyToLaunch")
|
||||
Greetd.launch([ "start-hyprland" ])
|
||||
})
|
||||
console.log("createSession")
|
||||
Greetd.createSession(username.text)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,28 +1,44 @@
|
||||
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.Widgets
|
||||
import Quickshell.Wayland
|
||||
import Quickshell.Hyprland
|
||||
|
||||
|
||||
Singleton {
|
||||
|
||||
id: root
|
||||
|
||||
property string wallpaper: json.wallpaper
|
||||
property string wallpaper: c_json.wallpaper
|
||||
|
||||
property string alpha: json.alpha
|
||||
property string alpha: Math.round(parseInt(c_json.alpha, 10) * 0xFF / 100).toString(16)
|
||||
|
||||
property JsonObject special: json.special
|
||||
property JsonObject colors: json.colors
|
||||
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 {
|
||||
|
||||
path: "/home/nathan/.cache/wal/colors.json"
|
||||
id: pywal
|
||||
|
||||
path: "/tmp/aurora/home/.cache/wal/colors.json"
|
||||
|
||||
watchChanges: true
|
||||
|
||||
onFileChanged: reload()
|
||||
|
||||
JsonAdapter {
|
||||
id: json
|
||||
property string wallpaper: "/home/nathan/Pictures/Wallpaper/bluescape.jpg"
|
||||
id: c_json
|
||||
property string wallpaper
|
||||
|
||||
property string alpha: "100"
|
||||
|
||||
18
config/aurora-greeter/shell.qml
Normal file
18
config/aurora-greeter/shell.qml
Normal file
@@ -0,0 +1,18 @@
|
||||
//@ pragma Env QS_NO_RELOAD_POPUP=1
|
||||
//@ pragma Env QSG_RENDER_LOOP=threaded
|
||||
//@ pragma Env QT_QUICK_FLICKABLE_WHEEL_DECELERATION=10000
|
||||
|
||||
//@ pragma UseQApplication
|
||||
|
||||
import QtQuick
|
||||
import Quickshell // for ShellRoot
|
||||
import Quickshell.Hyprland
|
||||
import qs.modules
|
||||
|
||||
ShellRoot {
|
||||
|
||||
Bar {
|
||||
id: bar
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,4 +1,9 @@
|
||||
{ ... }: {
|
||||
{ self, inputs, ... }: {
|
||||
|
||||
imports = [
|
||||
inputs.home-manager.flakeModules.home-manager
|
||||
];
|
||||
|
||||
|
||||
|
||||
perSystem = { self', pkgs, system, ... }: {
|
||||
@@ -27,4 +32,102 @@
|
||||
default = self'.packages.aurora;
|
||||
};
|
||||
};
|
||||
|
||||
flake.nixosModules.default = { config, lib, pkgs, ... }: {
|
||||
|
||||
config = {
|
||||
|
||||
services = {
|
||||
upower.enable = true;
|
||||
gvfs.enable = true;
|
||||
power-profiles-daemon.enable = true;
|
||||
};
|
||||
|
||||
environment.etc."pam.d/aurora-lock.conf".text = ''
|
||||
auth required pam_unix.so
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
flake.homeModules.default = { config, lib, pkgs, ... }: {
|
||||
|
||||
options.programs.aurora = with lib; {
|
||||
enable = mkEnableOption "aurora";
|
||||
|
||||
package = mkPackageOption self.packages.${pkgs.stdenv.hostPlatform.system} "aurora" {
|
||||
default = [ "aurora" ];
|
||||
|
||||
example = ''aurora.packages."x86_64-linux".hybar'';
|
||||
};
|
||||
|
||||
systemd = {
|
||||
enable = mkEnableOption "aurora systemd unit";
|
||||
|
||||
target = mkOption {
|
||||
type = types.str;
|
||||
default = "hyprland-session.target";
|
||||
};
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = types.attrsOf types.str;
|
||||
default = {};
|
||||
};
|
||||
};
|
||||
|
||||
config = let
|
||||
cfg = config.programs.aurora;
|
||||
|
||||
system = pkgs.stdenv.hostPlatform.system;
|
||||
|
||||
pkgs-a = import inputs.nixpkgs { inherit system; };
|
||||
in {
|
||||
|
||||
home.packages = with pkgs; [
|
||||
|
||||
pkgs-a.awww
|
||||
mpvpaper
|
||||
ffmpeg
|
||||
|
||||
bluez
|
||||
bluez-tools
|
||||
|
||||
wl-clipboard
|
||||
|
||||
brightnessctl
|
||||
|
||||
hyprpicker
|
||||
|
||||
hyprsunset
|
||||
|
||||
wf-recorder
|
||||
|
||||
self.packages.${system}.aurora-set-wallpaper
|
||||
self.packages.${system}.aurora-init
|
||||
];
|
||||
|
||||
programs.quickshell = {
|
||||
enable = cfg.enable;
|
||||
|
||||
package = cfg.package;
|
||||
|
||||
activeConfig = "aurora";
|
||||
|
||||
configs = {
|
||||
default = "${self.packages.${system}.aurora-dots}/share";
|
||||
aurora = "${self.packages.${system}.aurora-dots}/share";
|
||||
hybar = "${self.packages.${system}.hybar-dots}/share";
|
||||
};
|
||||
|
||||
systemd = {
|
||||
enable = cfg.systemd.enable;
|
||||
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}" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -12,7 +12,22 @@ PanelWindow {
|
||||
|
||||
property real radius: 10
|
||||
|
||||
onRadiusChanged: Hyprland.dispatch("exec hyprctl keyword decoration:rounding " + radius)
|
||||
property list<string> hyprcmds: [
|
||||
"exec hyprctl --batch '" +
|
||||
"keyword general:gaps_out 5;" +
|
||||
"keyword general:border_size 1;" +
|
||||
"keyword windowrule match:title lockscreen, no_blur on, fullscreen on;" +
|
||||
"keyword misc:session_lock_xray true;" +
|
||||
"keyword decoration:blur:enabled true;" +
|
||||
"keyword decoration:active_opacity 0.96;" +
|
||||
"keyword decoration:inactive_opacity 0.96;" +
|
||||
"keyword decoration:rounding " + radius + ";" +
|
||||
"keyword monitor " + Hyprland.monitorFor(root.screen).name + ",1920x1080@60,0x0,1" + ";" +
|
||||
"keyword monitor " + Hyprland.monitorFor(root.screen).name + ",addreserved," + topEx + "," + botEx + "," + leftEx + "," + rightEx + ";" +
|
||||
"'"
|
||||
]
|
||||
|
||||
onRadiusChanged: root.hyprcmds.forEach((c) => Hyprland.dispatch(c))
|
||||
|
||||
anchors {
|
||||
top: true
|
||||
@@ -21,13 +36,25 @@ PanelWindow {
|
||||
bottom: true
|
||||
}
|
||||
|
||||
IpcHandler {
|
||||
target: "shell"
|
||||
function reload() {
|
||||
Quickshell.reload(false)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Component.onCompleted: {
|
||||
|
||||
Hyprland.dispatch("exec hyprctl keyword monitor " + Hyprland.monitorFor(root.screen).name + ",addreserved," + topEx + "," + botEx + "," + leftEx + "," + rightEx)
|
||||
Hyprland.dispatch("exec hyprctl keyword decoration:rounding " + radius)
|
||||
|
||||
root.hyprcmds.forEach((c) => { Hyprland.dispatch(c) })
|
||||
|
||||
Hyprland.rawEvent.connect((e) => {
|
||||
if(e.name == "configreloaded") {
|
||||
root.hyprcmds.forEach((c) => { Hyprland.dispatch(c) })
|
||||
}
|
||||
})
|
||||
|
||||
Settings.reload()
|
||||
}
|
||||
|
||||
property int topEx: topRect.reserve
|
||||
@@ -36,13 +63,13 @@ PanelWindow {
|
||||
property int leftEx: leftRect.reserve
|
||||
property int rightEx: rightRect.reserve
|
||||
|
||||
property color bg: (Settings.special.background)
|
||||
|
||||
id: root
|
||||
|
||||
exclusionMode: ExclusionMode.Ignore
|
||||
WlrLayershell.layer: WlrLayer.Top
|
||||
|
||||
//color: Pywal.special.background
|
||||
color: "transparent"
|
||||
|
||||
mask: Region {
|
||||
@@ -62,31 +89,47 @@ PanelWindow {
|
||||
Region {
|
||||
item: dash.visible ? dash : leftRect
|
||||
}
|
||||
|
||||
Region {
|
||||
item: botRect
|
||||
}
|
||||
|
||||
Region {
|
||||
item: botRect.midFO.visible ? botRect.midFO : botRect
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
BarBottom {
|
||||
id: botRect
|
||||
radius: root.radius
|
||||
hyprcmds: root.hyprcmds
|
||||
x: leftRect.x + leftRect.width
|
||||
implicitWidth: rightRect.x - (leftRect.x + leftRect.width)
|
||||
color: root.bg
|
||||
}
|
||||
|
||||
BarLeft {
|
||||
id: leftRect
|
||||
window: root
|
||||
color: root.bg
|
||||
}
|
||||
|
||||
BarRight {
|
||||
id: rightRect
|
||||
color: root.bg
|
||||
}
|
||||
|
||||
Shape {
|
||||
|
||||
x: leftRect.x + leftRect.width - 1
|
||||
x: leftRect.cornerX
|
||||
y: topRect.cornerY
|
||||
|
||||
ShapePath {
|
||||
strokeWidth: 4
|
||||
strokeColor: Pywal.special.background
|
||||
fillColor: Pywal.special.background
|
||||
strokeWidth: 1
|
||||
|
||||
strokeColor: "transparent"
|
||||
fillColor: root.bg
|
||||
startX: 0; startY: 0
|
||||
|
||||
PathLine { relativeX: 0; relativeY: radius }
|
||||
@@ -101,13 +144,15 @@ PanelWindow {
|
||||
}
|
||||
Shape {
|
||||
|
||||
x: rightRect.x + 1
|
||||
x: rightRect.x
|
||||
y: topRect.cornerY
|
||||
|
||||
ShapePath {
|
||||
strokeWidth: 4
|
||||
strokeColor: Pywal.special.background
|
||||
fillColor: Pywal.special.background
|
||||
strokeWidth: 1
|
||||
|
||||
strokeColor: "transparent"
|
||||
fillColor: root.bg
|
||||
|
||||
startX: 0; startY: 0
|
||||
|
||||
PathLine { relativeX: 0; relativeY: radius }
|
||||
@@ -123,13 +168,15 @@ PanelWindow {
|
||||
}
|
||||
Shape {
|
||||
|
||||
x: leftRect.x + leftRect.width - 1
|
||||
y: botRect.y + 1
|
||||
x: leftRect.cornerX
|
||||
y: botRect.cornerY
|
||||
|
||||
ShapePath {
|
||||
strokeWidth: 4
|
||||
strokeColor: Pywal.special.background
|
||||
fillColor: Pywal.special.background
|
||||
strokeWidth: 1
|
||||
|
||||
strokeColor: "transparent"
|
||||
fillColor: root.bg
|
||||
|
||||
startX: 0; startY: 0
|
||||
|
||||
PathLine { relativeX: 0; relativeY: -radius }
|
||||
@@ -145,13 +192,14 @@ PanelWindow {
|
||||
}
|
||||
Shape {
|
||||
|
||||
x: rightRect.x + 1
|
||||
y: botRect.y + 1
|
||||
x: rightRect.x
|
||||
y: botRect.cornerY
|
||||
|
||||
ShapePath {
|
||||
strokeWidth: 4
|
||||
strokeColor: Pywal.special.background
|
||||
fillColor: Pywal.special.background
|
||||
strokeWidth: 1
|
||||
strokeColor: "transparent"
|
||||
fillColor: root.bg
|
||||
|
||||
startX: 0; startY: 0
|
||||
|
||||
PathLine { relativeX: 0; relativeY: -radius }
|
||||
@@ -172,6 +220,7 @@ PanelWindow {
|
||||
//y: topRect.y + topRect.height - 1
|
||||
window: root
|
||||
radius: root.radius
|
||||
color: root.bg
|
||||
|
||||
onShowDashChanged: dash.visible = showDash
|
||||
}
|
||||
|
||||
@@ -9,11 +9,49 @@ import Quickshell.Wayland
|
||||
import Quickshell.Hyprland
|
||||
|
||||
|
||||
Rectangle {
|
||||
property real reserve: height
|
||||
id: botRect
|
||||
ColumnLayout {
|
||||
id: root
|
||||
|
||||
property real reserve: botRectArea.height
|
||||
|
||||
required property real radius
|
||||
required property color color
|
||||
|
||||
property real cornerY: y + botRectArea.y
|
||||
|
||||
required property list<string> hyprcmds
|
||||
|
||||
property Item midFO: midFO
|
||||
|
||||
y: parent.height - height
|
||||
color: Pywal.special.background
|
||||
implicitHeight: 10
|
||||
|
||||
implicitWidth: parent.width
|
||||
spacing: -10
|
||||
|
||||
Launcher {
|
||||
id: midFO
|
||||
radius: root.radius
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
hyprcmds: root.hyprcmds
|
||||
color: root.color
|
||||
}
|
||||
|
||||
WrapperMouseArea {
|
||||
id: botRectArea
|
||||
Rectangle {
|
||||
id: botRect
|
||||
color: root.color
|
||||
anchors.fill: parent
|
||||
}
|
||||
implicitHeight: 10
|
||||
implicitWidth: parent.width
|
||||
|
||||
hoverEnabled: true
|
||||
onEntered: {
|
||||
Settings.launcherOpen = true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ Rectangle {
|
||||
id: leftRect
|
||||
|
||||
property real reserve: width
|
||||
property real cornerX: width
|
||||
|
||||
required property QsWindow window
|
||||
|
||||
@@ -21,10 +22,7 @@ Rectangle {
|
||||
|
||||
implicitWidth: 40
|
||||
|
||||
color: Pywal.special.background
|
||||
|
||||
|
||||
Launcher {
|
||||
LauncherButton {
|
||||
id: launcher
|
||||
x: parent.width / 2 - implicitWidth / 2
|
||||
y: implicitWidth / 3
|
||||
|
||||
@@ -13,7 +13,6 @@ Rectangle {
|
||||
property real reserve: width
|
||||
id: rightRect
|
||||
x: parent.width - width
|
||||
color: Pywal.special.background
|
||||
implicitWidth: 10
|
||||
implicitHeight: parent.height
|
||||
}
|
||||
|
||||
@@ -10,15 +10,16 @@ import Quickshell.Hyprland
|
||||
|
||||
ColumnLayout {
|
||||
|
||||
spacing: -1
|
||||
spacing: 0
|
||||
|
||||
id: root
|
||||
required property color color
|
||||
|
||||
WrapperMouseArea {
|
||||
id: topRectArea
|
||||
Rectangle {
|
||||
id: topRect
|
||||
color: Pywal.special.background
|
||||
color: root.color
|
||||
anchors.fill: parent
|
||||
}
|
||||
implicitHeight: 10
|
||||
@@ -34,7 +35,7 @@ ColumnLayout {
|
||||
|
||||
required property real radius
|
||||
|
||||
property real cornerY: topRectArea.height - 1
|
||||
property real cornerY: topRectArea.height
|
||||
|
||||
//property real reserve: midFO.visible ? root.height : topRectArea.height
|
||||
property real reserve: topRectArea.height
|
||||
@@ -45,14 +46,14 @@ ColumnLayout {
|
||||
property Item midFO: midFO
|
||||
|
||||
|
||||
VFlyout {
|
||||
VFlyoutDown {
|
||||
id: midFO
|
||||
|
||||
radius: root.radius
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
color: Pywal.special.background
|
||||
color: root.color
|
||||
|
||||
visible: true
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ ClippingWrapperRectangle {
|
||||
|
||||
radius: 3
|
||||
|
||||
color: Pywal.colors.color2
|
||||
color: Settings.colors.color2
|
||||
|
||||
implicitWidth: 30
|
||||
|
||||
@@ -19,7 +19,7 @@ ClippingWrapperRectangle {
|
||||
|
||||
Text {
|
||||
id: text
|
||||
text: UPower.displayDevice.percentage * 100 + "%"
|
||||
text: (UPower.onBattery ? "" : "") + Math.round(UPower.displayDevice.percentage * 100) + "%"
|
||||
|
||||
padding: 10
|
||||
|
||||
@@ -28,7 +28,7 @@ ClippingWrapperRectangle {
|
||||
|
||||
font.pointSize: 14
|
||||
|
||||
color: Pywal.special.foreground
|
||||
color: Settings.special.foreground
|
||||
rotation: -90
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,14 +20,14 @@ ColumnLayout {
|
||||
implicitHeight: 30
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignTop
|
||||
Layout.margins: 5
|
||||
color: Pywal.colors.color11
|
||||
color: Settings.colors.color11
|
||||
|
||||
RowLayout {
|
||||
Text {
|
||||
text: 'Bluetooth'
|
||||
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
|
||||
Layout.margins: 5
|
||||
color: Pywal.colors.color0
|
||||
color: Settings.colors.color0
|
||||
}
|
||||
|
||||
Switch {
|
||||
@@ -63,7 +63,7 @@ ColumnLayout {
|
||||
|
||||
ClippingWrapperRectangle {
|
||||
radius: 5
|
||||
color: Pywal.colors.color4
|
||||
color: Settings.colors.color4
|
||||
|
||||
implicitWidth: root.width - 3 * scroll.x
|
||||
implicitHeight: 40
|
||||
@@ -77,7 +77,7 @@ ColumnLayout {
|
||||
Layout.margins: 5
|
||||
|
||||
text: rep.model[index].name
|
||||
color: Pywal.colors.color0
|
||||
color: Settings.colors.color0
|
||||
}
|
||||
|
||||
Button {
|
||||
|
||||
@@ -10,7 +10,7 @@ WrapperMouseArea {
|
||||
|
||||
ClippingWrapperRectangle {
|
||||
id: rect
|
||||
color: Pywal.colors.color12
|
||||
color: Settings.colors.color12
|
||||
radius: 3
|
||||
anchors.fill: parent
|
||||
Text {
|
||||
@@ -19,6 +19,7 @@ WrapperMouseArea {
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: Qt.formatDateTime(clock.date, "dddd HH:mm:ss MM/dd/yyyy")
|
||||
font.pointSize: 11
|
||||
color: Settings.special.background
|
||||
|
||||
SystemClock {
|
||||
id: clock
|
||||
|
||||
@@ -23,12 +23,25 @@ Item {
|
||||
|
||||
property int selected: 0
|
||||
|
||||
IpcHandler {
|
||||
target: "dashboard"
|
||||
|
||||
VFlyout {
|
||||
function show() { root.visible = true; }
|
||||
function hide() { root.visible = false; }
|
||||
function toggle() { root.visible = !root.visible; }
|
||||
}
|
||||
|
||||
Power {
|
||||
id: power
|
||||
visible: false
|
||||
}
|
||||
|
||||
|
||||
VFlyoutDown {
|
||||
|
||||
visible: root.visible
|
||||
|
||||
color: Pywal.special.background
|
||||
color: Settings.special.background
|
||||
radius: root.radius
|
||||
|
||||
item: main
|
||||
@@ -36,7 +49,7 @@ Item {
|
||||
WrapperMouseArea {
|
||||
ClippingRectangle {
|
||||
//anchors.fill: parent
|
||||
color: Pywal.special.background
|
||||
color: Settings.special.background
|
||||
id: main
|
||||
|
||||
radius: root.radius
|
||||
@@ -67,8 +80,8 @@ Item {
|
||||
implicitWidth: 40
|
||||
implicitHeight: 40
|
||||
radius: root.radius
|
||||
color: index == selected ? Pywal.colors.color13 : Pywal.colors.color4
|
||||
//Launcher { anchors.centerIn: parent }
|
||||
color: index == selected ? Settings.colors.color13 : Settings.colors.color4
|
||||
//LauncherButton { anchors.centerIn: parent }
|
||||
Text {
|
||||
font.pointSize: 14
|
||||
text: switch(index) {
|
||||
@@ -94,14 +107,14 @@ Item {
|
||||
return "";
|
||||
}
|
||||
anchors.centerIn: parent
|
||||
color: Pywal.colors.color0
|
||||
color: Settings.colors.color0
|
||||
}
|
||||
}
|
||||
onEntered: child.color = Qt.binding(() => index == selected ? Pywal.colors.color13 : Pywal.colors.color12)
|
||||
onExited: child.color = Qt.binding(() => index == selected ? Pywal.colors.color13 : Pywal.colors.color4)
|
||||
onEntered: child.color = Qt.binding(() => index == selected ? Settings.colors.color13 : Settings.colors.color12)
|
||||
onExited: child.color = Qt.binding(() => index == selected ? Settings.colors.color13 : Settings.colors.color4)
|
||||
onClicked: {
|
||||
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
|
||||
}
|
||||
@@ -113,7 +126,7 @@ Item {
|
||||
implicitWidth: parent.width - tabs.width - 2 * parent.spacing - rTabs.width - 2 * parent.spacing
|
||||
implicitHeight: parent.height
|
||||
radius: root.radius
|
||||
color: Pywal.colors.color1
|
||||
color: Settings.colors.color1
|
||||
|
||||
NotificationServer {
|
||||
id: nserver
|
||||
@@ -128,27 +141,29 @@ Item {
|
||||
|
||||
onNotification: (n) => {
|
||||
n.tracked = !n.transient
|
||||
n.closed.connect(() => { console.log("notif closed") })
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Loader {
|
||||
anchors.fill: parent
|
||||
|
||||
readonly property Component launcher: Launcher {}
|
||||
readonly property Component launcher: LauncherButton {}
|
||||
readonly property Component notifs: Notifications { server: nserver }
|
||||
|
||||
readonly property Component bt: Bluetooth {}
|
||||
readonly property Component vol: Volume {}
|
||||
|
||||
readonly property Component bat: PowerMode {}
|
||||
readonly property Component mon: Launcher {}
|
||||
readonly property Component mon: LauncherButton {}
|
||||
|
||||
readonly property Component net: Launcher {}
|
||||
readonly property Component mus: Launcher {}
|
||||
readonly property Component net: LauncherButton {}
|
||||
readonly property Component mus: LauncherButton {}
|
||||
|
||||
readonly property Component clk: Clock {}
|
||||
readonly property Component wal: Launcher {}
|
||||
readonly property Component wal: LauncherButton {}
|
||||
|
||||
sourceComponent: switch(selected) {
|
||||
case 0:
|
||||
@@ -189,8 +204,9 @@ Item {
|
||||
implicitWidth: 40
|
||||
implicitHeight: 40
|
||||
radius: root.radius
|
||||
color: index + 9 == selected ? Pywal.colors.color13 : Pywal.colors.color4
|
||||
//Launcher { anchors.centerIn: parent }
|
||||
property bool use: false
|
||||
color: use ? Settings.colors.color13 : Settings.colors.color4
|
||||
//LauncherButton { anchors.centerIn: parent }
|
||||
Text {
|
||||
font.pointSize: 14
|
||||
text: switch(index) {
|
||||
@@ -216,14 +232,30 @@ Item {
|
||||
return "";
|
||||
}
|
||||
anchors.centerIn: parent
|
||||
color: Pywal.colors.color0
|
||||
color: Settings.colors.color0
|
||||
}
|
||||
}
|
||||
onEntered: child.color = Qt.binding(() => index + 9 == selected ? Pywal.colors.color13 : Pywal.colors.color12)
|
||||
onExited: child.color = Qt.binding(() => index + 9 == selected ? Pywal.colors.color13 : Pywal.colors.color4)
|
||||
onEntered: child.color = Qt.binding(() => child.use ? Settings.colors.color13 : Settings.colors.color12)
|
||||
onExited: child.color = Qt.binding(() => child.use ? Settings.colors.color13 : Settings.colors.color4)
|
||||
onClicked: {
|
||||
selected = index + 9
|
||||
child.color = Qt.binding(() => index + 9 == selected ? Pywal.colors.color13 : Pywal.colors.color12)
|
||||
child.use = !child.use
|
||||
|
||||
switch(index) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
break;
|
||||
case 8:
|
||||
power.visible = true
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
hoverEnabled: true
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ ClippingWrapperRectangle {
|
||||
id: root
|
||||
|
||||
radius: 3
|
||||
color: Pywal.colors.color1
|
||||
color: Settings.colors.color1
|
||||
implicitWidth: 30; height: 30
|
||||
Button {
|
||||
id: button
|
||||
@@ -19,7 +19,7 @@ ClippingWrapperRectangle {
|
||||
|
||||
background: Rectangle {
|
||||
|
||||
color: Pywal.colors.color9
|
||||
color: Settings.colors.color9
|
||||
}
|
||||
|
||||
Process {
|
||||
|
||||
@@ -1,36 +1,38 @@
|
||||
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
|
||||
|
||||
WrapperMouseArea {
|
||||
ClippingWrapperRectangle {
|
||||
radius: 3
|
||||
implicitWidth: 30; implicitHeight: 30
|
||||
Text {
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
anchors.fill: parent
|
||||
text: " "
|
||||
font.pointSize: 16
|
||||
|
||||
color: Pywal.special.foreground
|
||||
}
|
||||
color: {
|
||||
containsMouse
|
||||
? Pywal.colors.color12
|
||||
: Pywal.colors.color1
|
||||
VFlyoutUp {
|
||||
id: midFO
|
||||
|
||||
required property list<string> hyprcmds
|
||||
|
||||
visible: Settings.launcherOpen
|
||||
|
||||
item: content
|
||||
|
||||
onExited: Settings.launcherOpen = false
|
||||
|
||||
ClippingRectangle {
|
||||
id: content
|
||||
radius: root.radius
|
||||
implicitWidth: 700
|
||||
implicitHeight: wallpaper.height
|
||||
|
||||
color: Settings.colors.color1
|
||||
|
||||
Wallpaper {
|
||||
id: wallpaper
|
||||
implicitWidth: 700
|
||||
//implicitHeight: 350
|
||||
hyprcmds: midFO.hyprcmds
|
||||
}
|
||||
}
|
||||
|
||||
hoverEnabled: true
|
||||
|
||||
Process {
|
||||
id: launcher
|
||||
running: false
|
||||
command: ["rofi", "-show", "drun", "-show-icons" ]
|
||||
}
|
||||
|
||||
onClicked: launcher.running = true
|
||||
}
|
||||
|
||||
31
config/aurora/modules/LauncherButton.qml
Normal file
31
config/aurora/modules/LauncherButton.qml
Normal file
@@ -0,0 +1,31 @@
|
||||
import Quickshell // for PanelWindow
|
||||
import QtQuick // for Text
|
||||
import QtQuick.Controls
|
||||
import Quickshell.Io
|
||||
import Quickshell.Widgets
|
||||
|
||||
WrapperMouseArea {
|
||||
|
||||
ClippingWrapperRectangle {
|
||||
radius: 3
|
||||
implicitWidth: 30; implicitHeight: 30
|
||||
Text {
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
anchors.fill: parent
|
||||
text: " "
|
||||
font.pointSize: 16
|
||||
|
||||
color: Settings.special.foreground
|
||||
}
|
||||
color: {
|
||||
containsMouse
|
||||
? Settings.colors.color12
|
||||
: Settings.colors.color1
|
||||
}
|
||||
}
|
||||
|
||||
hoverEnabled: true
|
||||
|
||||
onClicked: Settings.launcherOpen = true
|
||||
}
|
||||
108
config/aurora/modules/Lock.qml
Normal file
108
config/aurora/modules/Lock.qml
Normal file
@@ -0,0 +1,108 @@
|
||||
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
|
||||
import Quickshell.Services.Pam
|
||||
|
||||
Item {
|
||||
|
||||
id: root
|
||||
|
||||
property bool locked: false
|
||||
|
||||
onLockedChanged: {
|
||||
lock.locked = locked
|
||||
}
|
||||
|
||||
required property string bg_path
|
||||
|
||||
property color fieldColor: ctx.failed ? Settings.colors.color6 : Settings.colors.color1
|
||||
|
||||
IpcHandler {
|
||||
target: "lockscreen"
|
||||
|
||||
function lock() { root.locked = true; }
|
||||
function unlock() { root.locked = false; }
|
||||
}
|
||||
|
||||
LockCtx {
|
||||
id: ctx
|
||||
|
||||
onShouldUnlock: lock.locked = false
|
||||
}
|
||||
|
||||
LockScreen {
|
||||
id: lockscreen
|
||||
visible: root.locked
|
||||
}
|
||||
|
||||
WlSessionLock {
|
||||
|
||||
id: lock
|
||||
|
||||
locked: root.locked
|
||||
|
||||
onLockedChanged: {
|
||||
root.locked = locked
|
||||
}
|
||||
|
||||
|
||||
WlSessionLockSurface {
|
||||
color: "transparent"
|
||||
/*Image {
|
||||
anchors.fill: parent
|
||||
|
||||
source: Qt.resolvedUrl(bg_path)
|
||||
|
||||
}*/
|
||||
ClippingWrapperRectangle {
|
||||
|
||||
|
||||
anchors.centerIn: parent
|
||||
radius: 10
|
||||
|
||||
color: Settings.special.background
|
||||
|
||||
RowLayout {
|
||||
ClippingWrapperRectangle {
|
||||
color: root.fieldColor
|
||||
implicitWidth: 200
|
||||
TextInput {
|
||||
text: ""
|
||||
|
||||
onTextChanged: {
|
||||
ctx.pass = text
|
||||
}
|
||||
|
||||
echoMode: TextInput.Password
|
||||
|
||||
horizontalAlignment: TextInput.AlignHCenter
|
||||
verticalAlignment: TextInput.AlignVCenter
|
||||
|
||||
font.pointSize: 30
|
||||
color: Settings.special.foreground
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
text: "unlock"
|
||||
onClicked: {
|
||||
ctx.doUnlock()
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
text: "exit"
|
||||
onClicked: root.locked = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
59
config/aurora/modules/LockCtx.qml
Normal file
59
config/aurora/modules/LockCtx.qml
Normal file
@@ -0,0 +1,59 @@
|
||||
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
|
||||
import Quickshell.Services.Pam
|
||||
|
||||
Scope {
|
||||
|
||||
id: root
|
||||
|
||||
property string pass
|
||||
|
||||
property bool busy: false
|
||||
|
||||
property bool failed: false
|
||||
|
||||
signal shouldUnlock()
|
||||
|
||||
onPassChanged: failed = false
|
||||
|
||||
function doUnlock() {
|
||||
if(pass == "") return;
|
||||
|
||||
root.busy = true
|
||||
pam.start()
|
||||
}
|
||||
|
||||
PamContext {
|
||||
|
||||
id: pam
|
||||
|
||||
onPamMessage: {
|
||||
if (this.responseRequired) {
|
||||
this.respond(root.pass);
|
||||
}
|
||||
}
|
||||
|
||||
onCompleted: result => {
|
||||
if (result == PamResult.Success) {
|
||||
root.shouldUnlock()
|
||||
console.log("auth Success")
|
||||
root.pass = "";
|
||||
} else {
|
||||
root.pass = "";
|
||||
root.failed = true;
|
||||
abort()
|
||||
}
|
||||
|
||||
root.busy = false;
|
||||
}
|
||||
|
||||
config: "aurora-lock.conf"
|
||||
}
|
||||
}
|
||||
17
config/aurora/modules/LockScreen.qml
Normal file
17
config/aurora/modules/LockScreen.qml
Normal file
@@ -0,0 +1,17 @@
|
||||
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
|
||||
|
||||
FloatingWindow {
|
||||
title: "lockscreen"
|
||||
|
||||
visible: false
|
||||
|
||||
color: "transparent"
|
||||
}
|
||||
@@ -15,7 +15,7 @@ ClippingWrapperRectangle {
|
||||
implicitWidth: parent.width - 2 * Layout.margins
|
||||
implicitHeight: 100
|
||||
|
||||
color: Pywal.colors.color4
|
||||
color: Settings.colors.color4
|
||||
|
||||
required property Notification src
|
||||
|
||||
@@ -43,14 +43,14 @@ ClippingWrapperRectangle {
|
||||
Layout.topMargin: 10
|
||||
Layout.alignment: Qt.AlignLeft | Qt.AlignTop
|
||||
Text {
|
||||
color: Pywal.special.background
|
||||
color: Settings.special.background
|
||||
Layout.alignment: Qt.AlignLeft | Qt.AlignTop
|
||||
text: notif.src.summary
|
||||
Layout.leftMargin: 10
|
||||
font.pointSize: 14
|
||||
}
|
||||
Text {
|
||||
color: Pywal.special.background
|
||||
color: Settings.special.background
|
||||
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
|
||||
text: notif.src.body
|
||||
Layout.leftMargin: 10
|
||||
|
||||
@@ -18,7 +18,7 @@ ColumnLayout {
|
||||
|
||||
|
||||
ClippingWrapperRectangle {
|
||||
color: Pywal.colors.color11
|
||||
color: Settings.colors.color11
|
||||
radius: 5
|
||||
Layout.margins: 5
|
||||
Layout.alignment: Qt.AlignVCenter | Qt.AlignTop
|
||||
@@ -27,7 +27,7 @@ ColumnLayout {
|
||||
RowLayout {
|
||||
width: parent.width
|
||||
Text {
|
||||
color: Pywal.colors.color0
|
||||
color: Settings.colors.color0
|
||||
Layout.margins: 5
|
||||
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
|
||||
text: 'Notifications'
|
||||
|
||||
@@ -1,120 +1,126 @@
|
||||
import Quickshell
|
||||
import Quickshell // for PanelWindow
|
||||
import QtQuick // for Text
|
||||
import QtQuick.Shapes
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
import Quickshell.Hyprland
|
||||
import Quickshell.Io
|
||||
import Quickshell.Widgets
|
||||
import Quickshell.Wayland
|
||||
import Quickshell.Hyprland
|
||||
|
||||
Item {
|
||||
width: 30
|
||||
height: 30
|
||||
PanelWindow {
|
||||
|
||||
anchors {
|
||||
top: true
|
||||
left: true
|
||||
right: true
|
||||
bottom: true
|
||||
}
|
||||
|
||||
exclusionMode: ExclusionMode.Ignore
|
||||
WlrLayershell.layer: WlrLayer.Overlay
|
||||
|
||||
id: root
|
||||
|
||||
required property PanelWindow window
|
||||
required property real popupOffset
|
||||
|
||||
ClippingWrapperRectangle {
|
||||
radius: 5
|
||||
width: 30; height: 30
|
||||
Button {
|
||||
id: button
|
||||
text: " "
|
||||
font.pointSize: 16
|
||||
|
||||
onClicked: {
|
||||
menu.visible = true
|
||||
grab.active = true
|
||||
}
|
||||
implicitHeight: parent.height
|
||||
}
|
||||
mask: Region {
|
||||
item: out
|
||||
}
|
||||
|
||||
PopupWindow {
|
||||
|
||||
id: menu
|
||||
color: "#99000000"
|
||||
|
||||
anchor.window: window
|
||||
anchor.rect.x: popupOffset
|
||||
anchor.rect.y: 50
|
||||
implicitWidth: 150
|
||||
implicitHeight: 250
|
||||
visible: false
|
||||
Lock {
|
||||
id: lock
|
||||
bg_path: "/tmp/nathan/tmp.jpg"
|
||||
//locked: true
|
||||
}
|
||||
|
||||
color: "transparent"
|
||||
|
||||
ClippingWrapperRectangle {
|
||||
radius: 5
|
||||
MouseArea {
|
||||
|
||||
implicitHeight: parent.height - 20
|
||||
implicitWidth: parent.width
|
||||
|
||||
ColumnLayout {
|
||||
id: out
|
||||
|
||||
spacing: 0
|
||||
anchors.fill: parent
|
||||
|
||||
Button {
|
||||
Layout.topMargin: 5
|
||||
x: (parent.width - width) / 2
|
||||
implicitWidth: parent.width - 10
|
||||
implicitHeight: parent.height / 5 - parent.spacing
|
||||
onClicked: {
|
||||
root.visible = false
|
||||
}
|
||||
|
||||
text: 'shutdown'
|
||||
onClicked: shutdown.running = true
|
||||
Process {
|
||||
id: shutdown
|
||||
running: false
|
||||
command: ["systemctl", "poweroff"]
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
x: (parent.width - width) / 2
|
||||
implicitWidth: parent.width - 10
|
||||
implicitHeight: parent.height / 5 - parent.spacing
|
||||
text: 'reboot'
|
||||
onClicked: reboot.running = true
|
||||
Process {
|
||||
id: reboot
|
||||
running: false
|
||||
command: ["systemctl", "reboot"]
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
x: (parent.width - width) / 2
|
||||
implicitWidth: parent.width - 10
|
||||
implicitHeight: parent.height / 5 - parent.spacing
|
||||
text: 'logout'
|
||||
onClicked: logout.running = true
|
||||
Process {
|
||||
id: logout
|
||||
running: false
|
||||
command: ["loginctl", "kill-session", "self" ]
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
Layout.bottomMargin: 10
|
||||
x: (parent.width - width) / 2
|
||||
implicitWidth: parent.width - 10
|
||||
implicitHeight: parent.height / 5 - parent.spacing
|
||||
text: 'sleep'
|
||||
onClicked: sleep.running = true
|
||||
Process {
|
||||
id: sleep
|
||||
running: false
|
||||
command: ["systemctl", "sleep"]
|
||||
ClippingRectangle {
|
||||
implicitWidth: 200
|
||||
implicitHeight: 200
|
||||
id: main
|
||||
anchors.centerIn: parent
|
||||
radius: 10
|
||||
color: "transparent"
|
||||
GridLayout {
|
||||
columns: 2
|
||||
rows: 2
|
||||
|
||||
Repeater {
|
||||
model: 4
|
||||
WrapperMouseArea {
|
||||
ClippingWrapperRectangle {
|
||||
radius: 10
|
||||
Text {
|
||||
text: switch(index) {
|
||||
case 0:
|
||||
return ""
|
||||
case 1:
|
||||
return " "
|
||||
case 2:
|
||||
return " "
|
||||
case 3:
|
||||
return " "
|
||||
default:
|
||||
return " "
|
||||
break;
|
||||
}
|
||||
font.pointSize: 16
|
||||
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
||||
color: Settings.special.foreground
|
||||
}
|
||||
|
||||
implicitHeight: 60
|
||||
implicitWidth: 60
|
||||
color: parent.contansMouse ? Settings.colors.color12 : Settings.colors.color4
|
||||
}
|
||||
|
||||
hoverEnabled: true
|
||||
|
||||
onEntered: {
|
||||
child.color = Settings.colors.color12
|
||||
}
|
||||
|
||||
onExited: {
|
||||
child.color = Settings.colors.color4
|
||||
}
|
||||
|
||||
onClicked: {
|
||||
root.visible = false
|
||||
switch(index) {
|
||||
case 0:
|
||||
Hyprland.dispatch("exec loginctl kill-session self")
|
||||
break;
|
||||
case 1:
|
||||
Hyprland.dispatch("exec systemctl reboot")
|
||||
break;
|
||||
case 2:
|
||||
Hyprland.dispatch("exec loginctl lock-session")
|
||||
break;
|
||||
case 3:
|
||||
Hyprland.dispatch("exec systemctl poweroff")
|
||||
break;
|
||||
default:
|
||||
lock.locked = true
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
HyprlandFocusGrab {
|
||||
id: grab
|
||||
windows: [ menu ]
|
||||
onCleared: menu.visible = false
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
46
config/aurora/modules/PowerMode.qml
Normal file
46
config/aurora/modules/PowerMode.qml
Normal file
@@ -0,0 +1,46 @@
|
||||
import Quickshell // for PanelWindow
|
||||
import QtQuick // for Text
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
import Quickshell.Io
|
||||
import Quickshell.Widgets
|
||||
import Quickshell.Hyprland
|
||||
import Quickshell.Services.UPower
|
||||
|
||||
ColumnLayout {
|
||||
|
||||
spacing: 0
|
||||
|
||||
Button {
|
||||
Layout.topMargin: 5
|
||||
x: (parent.width - width) / 2
|
||||
implicitWidth: parent.width - 10
|
||||
implicitHeight: parent.height / 5 - parent.spacing
|
||||
|
||||
text: 'performance'
|
||||
onClicked: PowerProfiles.profile = PowerProfile.Performance
|
||||
visible: PowerProfiles.hasPerformanceProfile
|
||||
|
||||
background: Rectangle { color: PowerProfiles.profile == PowerProfile.Performance ? Settings.colors.color13 : Settings.colors.color4 }
|
||||
}
|
||||
Button {
|
||||
Layout.topMargin: 5
|
||||
x: (parent.width - width) / 2
|
||||
implicitWidth: parent.width - 10
|
||||
implicitHeight: parent.height / 5 - parent.spacing
|
||||
|
||||
text: 'balanced'
|
||||
onClicked: PowerProfiles.profile = PowerProfile.Balanced
|
||||
background: Rectangle { color: PowerProfiles.profile == PowerProfile.Balanced ? Settings.colors.color13 : Settings.colors.color4 }
|
||||
}
|
||||
Button {
|
||||
Layout.topMargin: 5
|
||||
x: (parent.width - width) / 2
|
||||
implicitWidth: parent.width - 10
|
||||
implicitHeight: parent.height / 5 - parent.spacing
|
||||
|
||||
text: 'power saver'
|
||||
onClicked: PowerProfiles.profile = PowerProfile.PowerSaver
|
||||
background: Rectangle { color: PowerProfiles.profile == PowerProfile.PowerSaver ? Settings.colors.color13 : Settings.colors.color4 }
|
||||
}
|
||||
}
|
||||
120
config/aurora/modules/Settings.qml
Normal file
120
config/aurora/modules/Settings.qml
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,221 @@
|
||||
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
|
||||
|
||||
|
||||
|
||||
FloatingWindow {
|
||||
|
||||
id: root
|
||||
|
||||
property real radius: 10
|
||||
property real selected: 0
|
||||
|
||||
visible: false
|
||||
|
||||
color: Settings.special.background
|
||||
|
||||
WrapperMouseArea {
|
||||
ClippingRectangle {
|
||||
//anchors.fill: parent
|
||||
color: Settings.special.background
|
||||
id: main
|
||||
|
||||
radius: root.radius
|
||||
implicitWidth: root.width
|
||||
implicitHeight: root.height
|
||||
|
||||
Item {
|
||||
implicitWidth: root.width - 4 * lay.spacing
|
||||
implicitHeight: root.height - 4 * lay.spacing
|
||||
x: 2 * lay.spacing
|
||||
y: 2 * lay.spacing
|
||||
RowLayout {
|
||||
id: lay
|
||||
spacing: 2
|
||||
anchors.fill: parent
|
||||
|
||||
ColumnLayout {
|
||||
id: tabs
|
||||
Layout.alignment: Qt.AlignTop
|
||||
Repeater {
|
||||
id: rep
|
||||
|
||||
model: 9
|
||||
|
||||
WrapperMouseArea {
|
||||
ClippingRectangle {
|
||||
//Layout.alignment: Qt.AlignTop
|
||||
implicitWidth: 40
|
||||
implicitHeight: 40
|
||||
radius: root.radius
|
||||
color: index == selected ? Settings.colors.color13 : Settings.colors.color4
|
||||
//LauncherButton { anchors.centerIn: parent }
|
||||
Text {
|
||||
font.pointSize: 14
|
||||
text: switch(index) {
|
||||
case 0:
|
||||
return " ";
|
||||
case 1:
|
||||
return " ";
|
||||
case 2:
|
||||
return " ";
|
||||
case 3:
|
||||
return "";
|
||||
case 4:
|
||||
return " ";
|
||||
case 5:
|
||||
return " ";
|
||||
case 6:
|
||||
return " ";
|
||||
case 7:
|
||||
return " ";
|
||||
case 8:
|
||||
return "";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
anchors.centerIn: parent
|
||||
color: Settings.colors.color0
|
||||
}
|
||||
}
|
||||
onEntered: child.color = Qt.binding(() => index == selected ? Settings.colors.color13 : Settings.colors.color12)
|
||||
onExited: child.color = Qt.binding(() => index == selected ? Settings.colors.color13 : Settings.colors.color4)
|
||||
onClicked: {
|
||||
selected = index
|
||||
child.color = Qt.binding(() => index == selected ? Settings.colors.color13 : Settings.colors.color4)
|
||||
}
|
||||
hoverEnabled: true
|
||||
}
|
||||
}
|
||||
}
|
||||
ClippingRectangle {
|
||||
id: content
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
implicitWidth: parent.width - tabs.width - 2 * parent.spacing - rTabs.width - 2 * parent.spacing
|
||||
implicitHeight: parent.height
|
||||
radius: root.radius
|
||||
color: Settings.colors.color1
|
||||
|
||||
Loader {
|
||||
anchors.fill: parent
|
||||
|
||||
readonly property Component launcher: LauncherButton {}
|
||||
|
||||
readonly property Component bt: Bluetooth {}
|
||||
readonly property Component vol: Volume {}
|
||||
|
||||
readonly property Component bat: PowerMode {}
|
||||
readonly property Component mon: LauncherButton {}
|
||||
|
||||
readonly property Component net: LauncherButton {}
|
||||
readonly property Component mus: LauncherButton {}
|
||||
|
||||
readonly property Component clk: Clock {}
|
||||
readonly property Component wal: LauncherButton {}
|
||||
|
||||
sourceComponent: switch(selected) {
|
||||
case 0:
|
||||
return wal;
|
||||
case 1:
|
||||
return mon;
|
||||
case 2:
|
||||
return net;
|
||||
case 3:
|
||||
return bt;
|
||||
case 4:
|
||||
return vol;
|
||||
case 5:
|
||||
case 6:
|
||||
return mus;
|
||||
case 7:
|
||||
return wal;
|
||||
case 8:
|
||||
return bat;
|
||||
default:
|
||||
return launcher;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
id: rTabs
|
||||
Layout.alignment: Qt.AlignBottom
|
||||
Repeater {
|
||||
id: rRep
|
||||
|
||||
model: 9
|
||||
|
||||
WrapperMouseArea {
|
||||
ClippingRectangle {
|
||||
//Layout.alignment: Qt.AlignTop
|
||||
implicitWidth: 40
|
||||
implicitHeight: 40
|
||||
radius: root.radius
|
||||
property bool use: false
|
||||
color: use ? Settings.colors.color13 : Settings.colors.color4
|
||||
//LauncherButton { anchors.centerIn: parent }
|
||||
Text {
|
||||
font.pointSize: 14
|
||||
text: switch(index) {
|
||||
case 0:
|
||||
return " ";
|
||||
case 1:
|
||||
return " ";
|
||||
case 2:
|
||||
return " ";
|
||||
case 3:
|
||||
return "";
|
||||
case 4:
|
||||
return " ";
|
||||
case 5:
|
||||
return " ";
|
||||
case 6:
|
||||
return " ";
|
||||
case 7:
|
||||
return " ";
|
||||
case 8:
|
||||
return " ";
|
||||
default:
|
||||
return "";
|
||||
}
|
||||
anchors.centerIn: parent
|
||||
color: Settings.colors.color0
|
||||
}
|
||||
}
|
||||
onEntered: child.color = Qt.binding(() => child.use ? Settings.colors.color13 : Settings.colors.color12)
|
||||
onExited: child.color = Qt.binding(() => child.use ? Settings.colors.color13 : Settings.colors.color4)
|
||||
onClicked: {
|
||||
child.use = !child.use
|
||||
|
||||
switch(index) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
power.visible = true
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
hoverEnabled: true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ Item {
|
||||
ClippingWrapperRectangle {
|
||||
radius: 3
|
||||
anchors.fill: parent
|
||||
color: Pywal.colors.color4
|
||||
color: Settings.colors.color4
|
||||
ColumnLayout {
|
||||
id: lay
|
||||
spacing: 4
|
||||
@@ -30,7 +30,7 @@ Item {
|
||||
implicitWidth: 20
|
||||
implicitHeight: 20
|
||||
|
||||
color: Pywal.colors.color1
|
||||
color: Settings.colors.color4
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
|
||||
@@ -17,7 +17,7 @@ MouseArea {
|
||||
|
||||
Component.onCompleted: {
|
||||
|
||||
item.y = pad
|
||||
item.y = root.y + pad
|
||||
}
|
||||
|
||||
width: shape.width
|
||||
@@ -30,8 +30,8 @@ MouseArea {
|
||||
ShapePath {
|
||||
id: path
|
||||
|
||||
strokeWidth: 4
|
||||
strokeColor: root.color
|
||||
strokeWidth: 1
|
||||
strokeColor: "transparent"
|
||||
fillColor: root.color
|
||||
|
||||
startX: -root.radius - pad; startY: 0
|
||||
87
config/aurora/modules/VFlyoutLeft.qml
Normal file
87
config/aurora/modules/VFlyoutLeft.qml
Normal file
@@ -0,0 +1,87 @@
|
||||
import QtQuick
|
||||
import QtQuick.Shapes
|
||||
|
||||
import Quickshell
|
||||
import Quickshell.Widgets
|
||||
|
||||
MouseArea {
|
||||
id: root
|
||||
|
||||
required property real radius
|
||||
property real pad: 5
|
||||
property color color
|
||||
|
||||
property Item item
|
||||
|
||||
hoverEnabled: true
|
||||
|
||||
Component.onCompleted: {
|
||||
|
||||
item.x = pad
|
||||
}
|
||||
|
||||
width: shape.width
|
||||
height: shape.height
|
||||
|
||||
Shape {
|
||||
id: shape
|
||||
|
||||
//anchors.centerIn: parent
|
||||
ShapePath {
|
||||
id: path
|
||||
|
||||
strokeWidth: 4
|
||||
strokeColor: root.color
|
||||
fillColor: root.color
|
||||
|
||||
startX: 0; startY: -root.radius - pad
|
||||
|
||||
PathArc {
|
||||
radiusX: root.radius
|
||||
radiusY: root.radius
|
||||
|
||||
direction: PathArc.Counterclockwise
|
||||
|
||||
relativeX: root.radius
|
||||
relativeY: root.radius
|
||||
}
|
||||
PathLine { x: item.width + 2 * pad - root.radius; relativeY: 0 }
|
||||
|
||||
PathArc {
|
||||
radiusX: root.radius
|
||||
radiusY: root.radius
|
||||
|
||||
relativeX: root.radius
|
||||
relativeY: root.radius
|
||||
}
|
||||
|
||||
PathLine { relativeX: 0; relativeY: 2 * pad + item.height - 2 * root.radius }
|
||||
|
||||
PathArc {
|
||||
radiusX: root.radius
|
||||
radiusY: root.radius
|
||||
|
||||
relativeX: -root.radius
|
||||
relativeY: root.radius
|
||||
}
|
||||
|
||||
PathLine { relativeX: -item.width - 2 * pad + 2 * root.radius; relativeY: 0 }
|
||||
|
||||
|
||||
|
||||
PathArc {
|
||||
radiusX: root.radius
|
||||
radiusY: root.radius
|
||||
|
||||
direction: PathArc.Counterclockwise
|
||||
|
||||
relativeX: -root.radius
|
||||
relativeY: root.radius
|
||||
}
|
||||
|
||||
|
||||
PathLine { x: 0; y: -root.radius - pad }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
87
config/aurora/modules/VFlyoutRight.qml
Normal file
87
config/aurora/modules/VFlyoutRight.qml
Normal file
@@ -0,0 +1,87 @@
|
||||
import QtQuick
|
||||
import QtQuick.Shapes
|
||||
|
||||
import Quickshell
|
||||
import Quickshell.Widgets
|
||||
|
||||
MouseArea {
|
||||
id: root
|
||||
|
||||
required property real radius
|
||||
property real pad: 5
|
||||
property color color
|
||||
|
||||
property Item item
|
||||
|
||||
hoverEnabled: true
|
||||
|
||||
Component.onCompleted: {
|
||||
|
||||
item.x = pad
|
||||
}
|
||||
|
||||
width: shape.width
|
||||
height: shape.height
|
||||
|
||||
Shape {
|
||||
id: shape
|
||||
|
||||
//anchors.centerIn: parent
|
||||
ShapePath {
|
||||
id: path
|
||||
|
||||
strokeWidth: 4
|
||||
strokeColor: root.color
|
||||
fillColor: root.color
|
||||
|
||||
startX: 0; startY: pad
|
||||
|
||||
PathArc {
|
||||
radiusX: root.radius
|
||||
radiusY: root.radius
|
||||
|
||||
relativeX: root.radius
|
||||
relativeY: -root.radius
|
||||
}
|
||||
|
||||
PathLine { x: item.width + 2 * pad - root.radius; relativeY: 0 }
|
||||
|
||||
PathArc {
|
||||
radiusX: root.radius
|
||||
radiusY: root.radius
|
||||
|
||||
direction: PathArc.Counterclockwise
|
||||
|
||||
relativeX: root.radius
|
||||
relativeY: -root.radius
|
||||
}
|
||||
|
||||
PathLine { relativeX: 0; relativeY: 2 * pad + item.height + 2 * root.radius }
|
||||
|
||||
PathArc {
|
||||
radiusX: root.radius
|
||||
radiusY: root.radius
|
||||
|
||||
direction: PathArc.Counterclockwise
|
||||
|
||||
relativeX: -root.radius
|
||||
relativeY: -root.radius
|
||||
}
|
||||
|
||||
PathLine { relativeX: -item.width - 2 * pad + 2 * root.radius; relativeY: 0 }
|
||||
|
||||
|
||||
PathArc {
|
||||
radiusX: root.radius
|
||||
radiusY: root.radius
|
||||
|
||||
relativeX: -root.radius
|
||||
relativeY: -root.radius
|
||||
}
|
||||
|
||||
PathLine { x: 0; y: pad }
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
91
config/aurora/modules/VFlyoutUp.qml
Normal file
91
config/aurora/modules/VFlyoutUp.qml
Normal file
@@ -0,0 +1,91 @@
|
||||
import QtQuick
|
||||
import QtQuick.Shapes
|
||||
|
||||
import Quickshell
|
||||
import Quickshell.Widgets
|
||||
|
||||
MouseArea {
|
||||
id: root
|
||||
|
||||
required property real radius
|
||||
property real pad: 5
|
||||
property color color
|
||||
|
||||
property Item item
|
||||
|
||||
hoverEnabled: true
|
||||
|
||||
Component.onCompleted: {
|
||||
|
||||
item.y = root.y - pad
|
||||
|
||||
//console.log(height)
|
||||
}
|
||||
|
||||
width: shape.width
|
||||
height: item.height + 2 * pad
|
||||
|
||||
Shape {
|
||||
id: shape
|
||||
|
||||
y: root.y + root.item.height
|
||||
|
||||
//anchors.centerIn: parent
|
||||
ShapePath {
|
||||
id: path
|
||||
|
||||
strokeWidth: 1
|
||||
strokeColor: "transparent"
|
||||
fillColor: root.color
|
||||
|
||||
startX: -root.radius - pad; startY: 0
|
||||
|
||||
PathArc {
|
||||
radiusX: root.radius
|
||||
radiusY: -root.radius
|
||||
|
||||
relativeX: root.radius
|
||||
relativeY: -root.radius
|
||||
direction: PathArc.Counterclockwise
|
||||
}
|
||||
|
||||
PathLine { relativeX: 0; relativeY: -(2 * pad + item.height - 2 * root.radius) }
|
||||
|
||||
PathArc {
|
||||
radiusX: root.radius
|
||||
radiusY: -root.radius
|
||||
|
||||
//direction: PathArc.Counterclockwise
|
||||
|
||||
relativeX: root.radius
|
||||
relativeY: -root.radius
|
||||
}
|
||||
|
||||
PathLine { x: item.width + pad - root.radius; relativeY: 0 }
|
||||
|
||||
PathArc {
|
||||
radiusX: root.radius
|
||||
radiusY: -root.radius
|
||||
|
||||
//direction: PathArc.Counterclockwise
|
||||
|
||||
relativeX: root.radius
|
||||
relativeY: root.radius
|
||||
}
|
||||
|
||||
PathLine { relativeX: 0; relativeY: -(-item.height + 2 * root.radius - 2 * pad) }
|
||||
|
||||
PathArc {
|
||||
radiusX: root.radius
|
||||
radiusY: -root.radius
|
||||
|
||||
relativeX: root.radius
|
||||
relativeY: root.radius
|
||||
direction: PathArc.Counterclockwise
|
||||
}
|
||||
|
||||
PathLine { x: -root.radius - pad; y: 0 }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ ScrollView {
|
||||
|
||||
|
||||
ClippingWrapperRectangle {
|
||||
color: Pywal.colors.color11
|
||||
color: Settings.colors.color11
|
||||
radius: 5
|
||||
Layout.margins: 5
|
||||
Layout.alignment: Qt.AlignVCenter | Qt.AlignTop
|
||||
@@ -27,7 +27,7 @@ ScrollView {
|
||||
RowLayout {
|
||||
width: parent.width
|
||||
Text {
|
||||
color: Pywal.colors.color0
|
||||
color: Settings.colors.color0
|
||||
Layout.margins: 5
|
||||
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
|
||||
text: 'Output'
|
||||
@@ -71,7 +71,7 @@ ScrollView {
|
||||
|
||||
|
||||
ClippingWrapperRectangle {
|
||||
color: Pywal.colors.color11
|
||||
color: Settings.colors.color11
|
||||
radius: 5
|
||||
Layout.margins: 5
|
||||
Layout.alignment: Qt.AlignVCenter | Qt.AlignTop
|
||||
@@ -80,7 +80,7 @@ ScrollView {
|
||||
RowLayout {
|
||||
width: parent.width
|
||||
Text {
|
||||
color: Pywal.colors.color0
|
||||
color: Settings.colors.color0
|
||||
Layout.margins: 5
|
||||
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
|
||||
text: 'Input'
|
||||
|
||||
87
config/aurora/modules/Wallpaper.qml
Normal file
87
config/aurora/modules/Wallpaper.qml
Normal file
@@ -0,0 +1,87 @@
|
||||
import Quickshell // for PanelWindow
|
||||
import QtQuick // for Text
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
import Quickshell.Io
|
||||
import Quickshell.Widgets
|
||||
import Quickshell.Hyprland
|
||||
import Quickshell.Services.Pipewire
|
||||
|
||||
|
||||
|
||||
Flickable {
|
||||
//anchors.fill: parent
|
||||
|
||||
required property list<string> hyprcmds
|
||||
|
||||
id: root
|
||||
|
||||
property string dir: Settings.wallpaperDir
|
||||
|
||||
implicitHeight: lay.height
|
||||
implicitWidth: 750
|
||||
interactive: true
|
||||
|
||||
contentWidth: lay.width
|
||||
|
||||
flickDeceleration: 5000
|
||||
|
||||
WheelHandler {
|
||||
target: root
|
||||
//property: "contentX"
|
||||
onWheel: {
|
||||
console.log("test")
|
||||
}
|
||||
}
|
||||
|
||||
Process {
|
||||
id: ls
|
||||
//command: ["find", root.dir + "*"]
|
||||
command: ["ls", dir]
|
||||
running: true
|
||||
stdout: StdioCollector {
|
||||
onStreamFinished: {
|
||||
rep.model = text.split("\n").filter((s) => { return s != ""; })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
id: lay
|
||||
|
||||
Repeater {
|
||||
id: rep
|
||||
model: 0
|
||||
|
||||
WrapperMouseArea {
|
||||
onWheel: (e) => {
|
||||
root.flick(e.angleDelta.y * 15, 0)
|
||||
}
|
||||
ClippingWrapperRectangle {
|
||||
radius: 10
|
||||
implicitWidth: 192 * 2; implicitHeight: 108 * 2
|
||||
Image {
|
||||
width: 192 * 2; height: 108 * 2
|
||||
source: Qt.resolvedUrl(root.dir + "/" + rep.model[index])
|
||||
fillMode: Image.PreserveAspectCrop
|
||||
sourceSize.width: 192 * 2
|
||||
sourceSize.height: 108 * 2
|
||||
}
|
||||
}
|
||||
|
||||
property Process sw: Process {
|
||||
command: ["aurora-set-wallpaper", root.dir + "/" + rep.model[index]]
|
||||
running: false
|
||||
onRunningChanged: {
|
||||
root.hyprcmds.forEach((c) => Hyprland.dispatch(c))
|
||||
}
|
||||
}
|
||||
|
||||
onClicked: {
|
||||
sw.running = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ Item {
|
||||
Component.onCompleted: Hyprland.refreshWorkspaces()
|
||||
|
||||
ClippingWrapperRectangle {
|
||||
color: Pywal.colors.color1
|
||||
color: Settings.colors.color1
|
||||
radius: 3
|
||||
anchors.fill: parent
|
||||
ColumnLayout {
|
||||
@@ -19,13 +19,15 @@ Item {
|
||||
Repeater {
|
||||
id: rep
|
||||
|
||||
property var ws: {
|
||||
let arr = [];
|
||||
Hyprland.workspaces.values.forEach((w) => { if(w.id > 0) arr.push(w) })
|
||||
return arr;
|
||||
}
|
||||
model: Hyprland.workspaces.values.filter((w) => {
|
||||
if(w != null) {
|
||||
if(w.id > 0) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
})
|
||||
|
||||
model: ws
|
||||
WrapperMouseArea {
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
|
||||
ClippingWrapperRectangle {
|
||||
@@ -34,11 +36,11 @@ Item {
|
||||
implicitWidth: 24
|
||||
implicitHeight: 24
|
||||
color: {
|
||||
Hyprland.focusedWorkspace.id == rep.model[index].id
|
||||
? Pywal.colors.color13
|
||||
Hyprland?.focusedWorkspace?.id == rep.model[index].id
|
||||
? Settings.colors.color13
|
||||
: containsMouse
|
||||
? Pywal.colors.color12
|
||||
: Pywal.colors.color4
|
||||
? Settings.colors.color12
|
||||
: Settings.colors.color4
|
||||
}
|
||||
|
||||
Text {
|
||||
@@ -48,15 +50,17 @@ Item {
|
||||
text: rep.model[index].id
|
||||
|
||||
color: {
|
||||
Hyprland.focusedWorkspace.id == rep.model[index].id
|
||||
? Pywal.colors.color1
|
||||
: Pywal.special.foreground
|
||||
Hyprland?.focusedWorkspace?.id == rep.model[index].id
|
||||
? Settings.colors.color1
|
||||
: Settings.special.foreground
|
||||
}
|
||||
}
|
||||
}
|
||||
hoverEnabled: true
|
||||
onClicked: {
|
||||
rep.model[index].activate()
|
||||
if(Hyprland?.focusedWorkspace?.id != rep.model[index].id) {
|
||||
rep.model[index].activate()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
36
flake.lock
generated
36
flake.lock
generated
@@ -5,11 +5,11 @@
|
||||
"nixpkgs-lib": "nixpkgs-lib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772408722,
|
||||
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
|
||||
"lastModified": 1775087534,
|
||||
"narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3",
|
||||
"rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -23,11 +23,11 @@
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1772845525,
|
||||
"narHash": "sha256-Dp5Ir2u4jJDGCgeMRviHvEQDe+U37hMxp6RSNOoMMPc=",
|
||||
"lastModified": 1775900011,
|
||||
"narHash": "sha256-QUGu6CJYFQ5AWVV0n3/FsJyV+1/gj7HSDx68/SX9pwM=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "27b93804fbef1544cb07718d3f0a451f4c4cd6c0",
|
||||
"rev": "b0569dc6ec1e6e7fefd8f6897184e4c191cd768e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -38,11 +38,11 @@
|
||||
},
|
||||
"import-tree": {
|
||||
"locked": {
|
||||
"lastModified": 1772344373,
|
||||
"narHash": "sha256-OQQ1MhB9t1J71b2wxRRTdH/Qd8UGG0p+dGspfCf5U1c=",
|
||||
"lastModified": 1773693634,
|
||||
"narHash": "sha256-BtZ2dtkBdSUnFPPFc+n0kcMbgaTxzFNPv2iaO326Ffg=",
|
||||
"owner": "vic",
|
||||
"repo": "import-tree",
|
||||
"rev": "10fda59eee7d7970ec443b925f32a1bc7526648c",
|
||||
"rev": "c41e7d58045f9057880b0d85e1152d6a4430dbf1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -53,11 +53,11 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1772542754,
|
||||
"narHash": "sha256-WGV2hy+VIeQsYXpsLjdr4GvHv5eECMISX1zKLTedhdg=",
|
||||
"lastModified": 1775423009,
|
||||
"narHash": "sha256-vPKLpjhIVWdDrfiUM8atW6YkIggCEKdSAlJPzzhkQlw=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "8c809a146a140c5c8806f13399592dbcb1bb5dc4",
|
||||
"rev": "68d8aa3d661f0e6bd5862291b5bb263b2a6595c9",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -69,11 +69,11 @@
|
||||
},
|
||||
"nixpkgs-lib": {
|
||||
"locked": {
|
||||
"lastModified": 1772328832,
|
||||
"narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=",
|
||||
"lastModified": 1774748309,
|
||||
"narHash": "sha256-+U7gF3qxzwD5TZuANzZPeJTZRHS29OFQgkQ2kiTJBIQ=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixpkgs.lib",
|
||||
"rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742",
|
||||
"rev": "333c4e0545a6da976206c74db8773a1645b5870a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -84,11 +84,11 @@
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1772433332,
|
||||
"narHash": "sha256-izhTDFKsg6KeVBxJS9EblGeQ8y+O8eCa6RcW874vxEc=",
|
||||
"lastModified": 1775710090,
|
||||
"narHash": "sha256-ar3rofg+awPB8QXDaFJhJ2jJhu+KqN/PRCXeyuXR76E=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "cf59864ef8aa2e178cccedbe2c178185b0365705",
|
||||
"rev": "4c1018dae018162ec878d42fec712642d214fdfa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
{ self, inputs, ... }: {
|
||||
|
||||
imports = [
|
||||
inputs.home-manager.flakeModules.home-manager
|
||||
];
|
||||
|
||||
flake.homeModules.default = { config, lib, pkgs, ... }: {
|
||||
|
||||
options.programs.aurora = with lib; {
|
||||
enable = mkEnableOption "aurora";
|
||||
|
||||
package = mkPackageOption self.packages.${pkgs.stdenv.hostPlatform.system} "aurora" {
|
||||
default = [ "aurora" ];
|
||||
|
||||
example = "aurora.packages.hybar";
|
||||
};
|
||||
|
||||
systemd = {
|
||||
enable = mkEnableOption "aurora systemd unit";
|
||||
|
||||
target = mkOption {
|
||||
type = types.str;
|
||||
default = "hyprland-session.target";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = let
|
||||
cfg = config.programs.aurora;
|
||||
|
||||
system = pkgs.stdenv.hostPlatform.system;
|
||||
in {
|
||||
|
||||
programs.quickshell = {
|
||||
enable = cfg.enable;
|
||||
|
||||
package = cfg.package;
|
||||
|
||||
activeConfig = "aurora";
|
||||
|
||||
configs = {
|
||||
default = "${self.packages.${system}.aurora-dots}/share";
|
||||
aurora = "${self.packages.${system}.aurora-dots}/share";
|
||||
hybar = "${self.packages.${system}.hybar-dots}/share";
|
||||
};
|
||||
|
||||
systemd = {
|
||||
enable = cfg.systemd.enable;
|
||||
target = cfg.systemd.target;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user