push before continuing on pc

This commit is contained in:
lucy 2026-03-25 21:08:36 +01:00
parent e96ddbef65
commit aebda5dd12
12 changed files with 86 additions and 62 deletions

18
#shell.qml# Normal file
View File

@ -0,0 +1,18 @@
//@ pragma UseQApplication
import Quickshell
import QtQuick
import qs.modules.Bar
import qs.modules.ipc
import qs.modules.wallpaper
import qs.modules.widgets.wallpicker
import qs.modules.notifications
ShellRoot {
id: root
Bar {}
Ipc {}
Wallpaper {}
WallPicker {}
Notification {}
}

View File

@ -3,24 +3,24 @@ import QtQuick
QtObject { QtObject {
// --- The Backgrounds (Darkest to Lightest) --- // --- The Backgrounds (Darkest to Lightest) ---
readonly property string base00: "#1d2021" // Default Background readonly property string base00: "#0b0e14" // Default Background
readonly property string base01: "#3c3836" // Lighter Background (Status bars, panels) readonly property string base01: "#131721" // Lighter Background (Status bars, panels)
readonly property string base02: "#504945" // Selection Background readonly property string base02: "#202229" // Selection Background
readonly property string base03: "#665c54" // Comments, Invisibles, line highlighting readonly property string base03: "#3e4b59" // Comments, Invisibles, line highlighting
// --- The Foregrounds (Darkest to Lightest) --- // --- The Foregrounds (Darkest to Lightest) ---
readonly property string base04: "#bdae93" // Dark Foreground (Used for status bars) readonly property string base04: "#bfbdb6" // Dark Foreground (Used for status bars)
readonly property string base05: "#d5c4a1" // Default Foreground, Caret readonly property string base05: "#e6e1cf" // Default Foreground, Caret
readonly property string base06: "#ebdbb2" // Light Foreground (Rarely used) readonly property string base06: "#ece8db" // Light Foreground (Rarely used)
readonly property string base07: "#fbf1c7" // Lightest Foreground readonly property string base07: "#f2f0e7" // Lightest Foreground
// --- The Accent Colors --- // --- The Accent Colors ---
readonly property string base08: "#fb4934" // Red (Variables, errors) readonly property string base08: "#f07178" // Red (Variables, errors)
readonly property string base09: "#fe8019" // Orange (Integers, booleans, constants) readonly property string base09: "#ff8f40" // Orange (Integers, booleans, constants)
readonly property string base0A: "#fabd2f" // Yellow (Classes, search text bg, warnings) readonly property string base0A: "#ffb454" // Yellow (Classes, search text bg, warnings)
readonly property string base0B: "#b8bb26" // Green (Strings, success states) readonly property string base0B: "#aad94c" // Green (Strings, success states)
readonly property string base0C: "#8ec07c" // Cyan (Support, regex, escape chars) readonly property string base0C: "#95e6cb" // Cyan (Support, regex, escape chars)
readonly property string base0D: "#83a598" // Blue (Functions, methods, headings) readonly property string base0D: "#59c2ff" // Blue (Functions, methods, headings)
readonly property string base0E: "#d3869b" // Purple/Mauve (Keywords, storage, selectors) readonly property string base0E: "#d2a6ff" // Purple/Mauve (Keywords, storage, selectors)
readonly property string base0F: "#d65d0e" // Brown/Flamingo (Deprecated, embedded tags) readonly property string base0F: "#e6b450" // Brown/Flamingo (Deprecated, embedded tags)
} }

View File

@ -25,9 +25,9 @@ WrapperRectangle {
implicitWidth: iconLayout.implicitWidth + 14 implicitWidth: iconLayout.implicitWidth + 14
implicitHeight: Settings.config.barHeight - margin * 2 implicitHeight: Settings.config.barHeight - margin * 2
radius: Settings.config.rounding radius: Settings.config.rounding
property var battery: UPower.displayDevice property var battery: UPower.displayDevice.isLaptopBattery ? UPower.displayDevice : null
property var percentage: UPower.displayDevice.percentage property var percentage: UPower.displayDevice.isLaptopBattery ? UPower.displayDevice.percentage : null
property bool charging: UPower.displayDevice.state == UPowerDeviceState.Charging property bool charging: UPower.displayDevice.isLaptopBattery ? UPower.displayDevice.state == UPowerDeviceState.Charging : null
property bool hasBattery: UPower.displayDevice.isLaptopBattery property bool hasBattery: UPower.displayDevice.isLaptopBattery
property var audio: Pipewire.ready ? Pipewire.defaultAudioSink : "" property var audio: Pipewire.ready ? Pipewire.defaultAudioSink : ""
property var audioPercentage: Pipewire.ready ? Pipewire.defaultAudioSink.audio.volume : 0 property var audioPercentage: Pipewire.ready ? Pipewire.defaultAudioSink.audio.volume : 0
@ -87,6 +87,7 @@ WrapperRectangle {
CIcon { CIcon {
id: batteryIcon id: batteryIcon
Layout.leftMargin: 2 Layout.leftMargin: 2
visible: root.hasBattery
text: root.getBatteryIcon() text: root.getBatteryIcon()
} }
CIcon { CIcon {

View File

@ -48,8 +48,8 @@ WrapperRectangle {
id: wsText id: wsText
anchors.centerIn: parent anchors.centerIn: parent
text: wsRect.modelData.id text: wsRect.modelData.id
opacity: parent.modelData.focused ? 1 : 0.5 opacity: 1
color: parent.modelData.focused ? Colors.base00 : Colors.base07 color: parent.modelData.focused ? Colors.base00 : Colors.base05
} }
Behavior on implicitWidth { Behavior on implicitWidth {
NumberAnimation { NumberAnimation {

View File

@ -5,12 +5,6 @@ import qs
import qs.settings import qs.settings
Item { Item {
IpcHandler {
target: "colors"
function reload() {
ThemeLoader.reload();
}
}
IpcHandler { IpcHandler {
target: "settings" target: "settings"
function toggleWall() { function toggleWall() {

View File

@ -26,7 +26,7 @@ Variants {
item: notifList item: notifList
} }
implicitHeight: notifList.contentHeight + 20 implicitHeight: notifList.contentHeight + 20
implicitWidth: modelData.width / 8 implicitWidth: modelData.width / 6
layer: WlrLayer.Overlay layer: WlrLayer.Overlay
exclusionMode: ExclusionMode.Ignore exclusionMode: ExclusionMode.Ignore

View File

@ -3,14 +3,13 @@ import qs.settings
import QtQuick.Layouts import QtQuick.Layouts
import qs import qs
import Quickshell import Quickshell
import qs.modules.Bar
import qs.widgets import qs.widgets
import Quickshell.Widgets import Quickshell.Widgets
Rectangle { Rectangle {
id: notifyItem id: notifyItem
required property var modelData required property var modelData
implicitWidth: ListView.view ? ListView.view.width : 300 implicitWidth: ListView.view ? ListView.view.width : 500
implicitHeight: fullLayout.implicitHeight + 40 implicitHeight: fullLayout.implicitHeight + 40
color: dismissArea.containsMouse ? Colors.base02 : Colors.base00 color: dismissArea.containsMouse ? Colors.base02 : Colors.base00
radius: Settings.config.rounding radius: Settings.config.rounding
@ -20,9 +19,7 @@ Rectangle {
id: dismissTimer id: dismissTimer
interval: 5000 interval: 5000
running: true running: true
onTriggered: { onTriggered: notifyItem.modelData.expire()
parent.modelData.expire();
}
} }
RowLayout { RowLayout {
@ -33,15 +30,16 @@ Rectangle {
spacing: 10 spacing: 10
ClippingWrapperRectangle { ClippingWrapperRectangle {
id: notiIcon id: notiIconWrapper
Layout.alignment: Qt.AlignTop
radius: notifyItem.radius - notifyItem.radius / 3 radius: notifyItem.radius - notifyItem.radius / 3
implicitWidth: 64 implicitWidth: notiIcon.implicitSize
color: "transparent" color: "transparent"
implicitHeight: 64 implicitHeight: notiIcon.implicitSize
visible: notifyItem.modelData.appIcon !== "" visible: notifyItem.modelData.image !== ""
IconImage { IconImage {
source: Quickshell.iconPath(notifyItem.modelData.appIcon) id: notiIcon
visible: notifyItem.modelData.image !== "" source: notifyItem.modelData.image !== "" ? notifyItem.modelData.image : Quickshell.iconPath("preferences-desktop-notification-bell")
implicitSize: 64 implicitSize: 64
asynchronous: true asynchronous: true
} }
@ -51,14 +49,23 @@ Rectangle {
id: textLayout id: textLayout
Layout.fillWidth: true Layout.fillWidth: true
Layout.alignment: Qt.AlignTop Layout.alignment: Qt.AlignTop
spacing: 2 spacing: 0
CText {
id: appName
text: notifyItem.modelData.appName
opacity: 0.5
font.pixelSize: 10
}
CText { CText {
id: summary id: summary
text: notifyItem.modelData.summary text: notifyItem.modelData.summary
font.bold: true font.bold: true
elide: Text.ElideRight elide: Text.ElideRight
Layout.fillWidth: true Layout.fillWidth: true
Layout.bottomMargin: 0
Layout.topMargin: 5
maximumLineCount: 1
onTextChanged: { onTextChanged: {
dismissTimer.restart(); dismissTimer.restart();
} }
@ -67,7 +74,8 @@ Rectangle {
CText { CText {
text: notifyItem.modelData.body text: notifyItem.modelData.body
font.pixelSize: Settings.config.fontSize - 2 font.pixelSize: Settings.config.fontSize - 2
maximumLineCount: 2 maximumLineCount: 1
opacity: 0.3
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
elide: Text.ElideRight elide: Text.ElideRight
Layout.fillWidth: true Layout.fillWidth: true

View File

@ -9,7 +9,7 @@ import qs.widgets
Item { Item {
id: root id: root
property int gaps: 30 property int gaps: 10
implicitWidth: wrapper.width + gaps implicitWidth: wrapper.width + gaps
implicitHeight: wrapper.height + gaps implicitHeight: wrapper.height + gaps
ClippingWrapperRectangle { ClippingWrapperRectangle {
@ -18,10 +18,10 @@ Item {
enabled: true enabled: true
effect: DropShadow { effect: DropShadow {
color: "#111111" color: "#111111"
horizontalOffset: 8 horizontalOffset: 7
verticalOffset: 8 verticalOffset: 8
radius: 8 radius: 12
samples: 16 samples: 14
} }
} }
SystemClock { SystemClock {

View File

@ -12,7 +12,7 @@ import qs.widgets
Rectangle { Rectangle {
id: root id: root
color: Colors.base00 color: Colors.base00
radius: Settings.config.rounding * 1.5 radius: Settings.config.rounding
implicitWidth: 600 implicitWidth: 600
implicitHeight: 200 implicitHeight: 200
visible: getSpotify() != null visible: getSpotify() != null
@ -20,10 +20,10 @@ Rectangle {
enabled: true enabled: true
effect: DropShadow { effect: DropShadow {
color: "#111111" color: "#111111"
horizontalOffset: 8 horizontalOffset: 7
verticalOffset: 8 verticalOffset: 8
radius: 8 radius: 12
samples: 16 samples: 14
} }
} }
MouseArea { MouseArea {
@ -49,21 +49,22 @@ Rectangle {
property var artist: getSpotify() != null ? getSpotify().trackArtist : "" property var artist: getSpotify() != null ? getSpotify().trackArtist : ""
ClippingWrapperRectangle { ClippingWrapperRectangle {
id: songWrapper id: songWrapper
radius: Settings.config.rounding radius: Settings.config.rounding / 1.5
anchors.margins: 10 anchors.margins: 8
margin: 0 margin: 0
anchors.fill: parent anchors.fill: parent
color: Colors.base00 color: Colors.base00
RowLayout { RowLayout {
id: songLayout id: songLayout
spacing: 10 spacing: 10
ClippingWrapperRectangle { ClippingWrapperRectangle {
id: coverRounder id: coverRounder
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true
Layout.maximumWidth: songCover.sourceSize.width Layout.maximumWidth: songCover.sourceSize.width
radius: Settings.config.rounding radius: Settings.config.rounding / 1.5
Image { Image {
id: songCover id: songCover
source: root.art source: root.art
@ -77,11 +78,12 @@ Rectangle {
color: Colors.base01 color: Colors.base01
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true
radius: Settings.config.rounding Layout.alignment: Qt.AlignTop
radius: Settings.config.rounding / 1.5
margin: 20 margin: 20
child: ColumnLayout { child: ColumnLayout {
id: songInfo id: songInfo
Layout.alignment: Qt.AlignVCenter Layout.alignment: Qt.AlignTop
Layout.fillWidth: true Layout.fillWidth: true
Layout.fillHeight: true Layout.fillHeight: true
Layout.leftMargin: 20 Layout.leftMargin: 20
@ -124,6 +126,7 @@ Rectangle {
text: root.album + " - " + root.artist text: root.album + " - " + root.artist
opacity: 0.6 opacity: 0.6
Layout.maximumWidth: 250 Layout.maximumWidth: 250
Layout.alignment: Qt.AlignTop
elide: Text.ElideRight elide: Text.ElideRight
} }
ProgressBar { ProgressBar {

View File

@ -27,15 +27,15 @@ Variants {
anchors { anchors {
bottom: parent.bottom bottom: parent.bottom
right: parent.right right: parent.right
margins: Settings.config.margins + 5 margins: 25
} }
} }
PlayerWidget { PlayerWidget {
anchors { anchors {
top: parent.top top: parent.top
left: parent.left left: parent.left
margins: Settings.config.margins + 5 margins: 35
topMargin: Settings.config.margins + Settings.config.barHeight + 15 topMargin: Settings.config.barHeight + 35 + (Settings.config.floating ? Settings.config.margins : 0)
} }
} }
} }

View File

@ -2,10 +2,10 @@
"barHeight": 32, "barHeight": 32,
"barSpacing": 10, "barSpacing": 10,
"barmargins": 6, "barmargins": 6,
"currentWall": "/home/lucy/.walls/lance_of_longinus.png", "currentWall": "/home/lucy/.walls/mooon.png",
"floating": true, "floating": false,
"font": "Maple Mono", "font": "Google Sans",
"fontSize": 14, "fontSize": 13,
"margins": 10, "margins": 10,
"rounding": 26, "rounding": 26,
"wallswitchershown": false "wallswitchershown": false

View File

@ -9,8 +9,8 @@ import qs.modules.notifications
ShellRoot { ShellRoot {
id: root id: root
Bar {}
Ipc {} Ipc {}
Bar {}
Wallpaper {} Wallpaper {}
WallPicker {} WallPicker {}
Notification {} Notification {}