aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/Settings.qml
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/Settings.qml')
-rw-r--r--desktop/Settings.qml102
1 files changed, 68 insertions, 34 deletions
diff --git a/desktop/Settings.qml b/desktop/Settings.qml
index 2e6d1f1..986ec26 100644
--- a/desktop/Settings.qml
+++ b/desktop/Settings.qml
@@ -32,6 +32,11 @@ Scope {
}
property string query: ""
+ // The sidebar's width: the saved one, or the live one while its edge is
+ // dragged (-1 when not), saved once on release.
+ property real dragWidth: -1
+ readonly property real sideWidth: root.dragWidth >= 0 ? root.dragWidth : Prefs.settingsSidebar
+
// What the search keeps, as {mod, hit, key}. A page matched by its label
// or a keyword has key "" and opens at the top; hit is the keyword when
// the label did not match. Then each row inside a page that matches, from
@@ -99,7 +104,7 @@ Scope {
Rectangle {
id: search
anchors { top: parent.top; left: parent.left; margins: 12 }
- width: 200
+ width: root.sideWidth
height: 34
radius: 8
color: Theme.surface
@@ -150,7 +155,7 @@ Scope {
ListView {
id: side
anchors { top: search.bottom; left: parent.left; bottom: parent.bottom; margins: 12 }
- width: 200
+ width: root.sideWidth
spacing: 4
model: root.found
@@ -212,44 +217,73 @@ Scope {
id: rule
anchors { top: parent.top; bottom: parent.bottom; left: side.right; leftMargin: 12 }
width: 1
- color: Qt.alpha(Theme.text, 0.12)
+ color: grip.containsMouse || grip.pressed ? Qt.alpha(Theme.accent, 0.6) : Qt.alpha(Theme.text, 0.12)
}
- // The landing page, where back returns to: what this shell is.
- Column {
- anchors { top: parent.top; right: parent.right; left: rule.right; margins: 16 }
- visible: root.current === null
- spacing: 12
-
- Text {
- height: 44
- verticalAlignment: Text.AlignVCenter
- text: "About"
- font { family: Theme.fontFamily; pixelSize: Theme.fontSize + 2; bold: true }
- color: Theme.text
+ // The rule is the sidebar's edge: drag it to resize.
+ MouseArea {
+ id: grip
+ anchors { top: parent.top; bottom: parent.bottom; horizontalCenter: rule.horizontalCenter }
+ width: 10
+ hoverEnabled: true
+ cursorShape: Qt.SplitHCursor
+ onPositionChanged: mouse => {
+ if (!pressed) return;
+ // The rule sits 12px right of the sidebar, which starts 12px in.
+ const x = mapToItem(parent, mouse.x, 0).x - 24;
+ root.dragWidth = Math.max(Prefs.sidebarMin, Math.min(Prefs.sidebarMax, x));
+ }
+ onReleased: {
+ if (root.dragWidth >= 0) Prefs.setSettingsSidebar(root.dragWidth);
+ root.dragWidth = -1;
}
+ }
- Text {
+ // The landing page, where back returns to: what this shell is,
+ // centred in the space beside the sidebar.
+ Item {
+ anchors { top: parent.top; right: parent.right; bottom: parent.bottom; left: rule.right; margins: 16 }
+ visible: root.current === null
+
+ Column {
+ anchors.centerIn: parent
width: Math.min(parent.width, 560)
- wrapMode: Text.Wrap
- textFormat: Text.PlainText
- lineHeight: 1.25
- font { family: Theme.fontFamily; pixelSize: Theme.fontSize - 2 }
- color: Theme.text
- text: "A desktop shell for Hyprland, built on Quickshell.\n\n"
- + "SUPER alone opens the drawer, the quick area: notifications, sound, "
- + "network, bluetooth, mail, VMs, performance, the clipboard and the "
- + "rest of what changes during the day. The island at the top of the "
- + "main screen carries the clock, volume, tray, keyboard layout and "
- + "calendar, and SUPER+Home opens the assistant.\n\n"
- + "This window holds what is set once and left alone. Pick a page on "
- + "the left, or search for a setting by name."
- }
+ spacing: 12
- Text {
- text: "GPLv2. Colours follow the wallpaper through unified-desktop-theme."
- font { family: Theme.fontFamily; pixelSize: Theme.fontSize - 4 }
- color: Theme.subtext
+ Text {
+ width: parent.width
+ horizontalAlignment: Text.AlignHCenter
+ text: "About"
+ font { family: Theme.fontFamily; pixelSize: Theme.fontSize + 2; bold: true }
+ color: Theme.text
+ }
+
+ Text {
+ width: parent.width
+ horizontalAlignment: Text.AlignHCenter
+ wrapMode: Text.Wrap
+ textFormat: Text.PlainText
+ lineHeight: 1.25
+ font { family: Theme.fontFamily; pixelSize: Theme.fontSize - 2 }
+ color: Theme.text
+ text: "A desktop shell for Hyprland, built on Quickshell.\n\n"
+ + "SUPER alone opens the drawer, the quick area: notifications, sound, "
+ + "network, bluetooth, mail, VMs, performance, the clipboard and the "
+ + "rest of what changes during the day. The island at the top of the "
+ + "main screen carries the clock, volume, tray, keyboard layout and "
+ + "calendar, and SUPER+Home opens the assistant.\n\n"
+ + "This window holds what is set once and left alone. Pick a page on "
+ + "the left, or search for a setting by name."
+ }
+
+ Text {
+ width: parent.width
+ horizontalAlignment: Text.AlignHCenter
+ wrapMode: Text.Wrap
+ text: "GPLv2. Colours follow the wallpaper through unified-desktop-theme."
+ font { family: Theme.fontFamily; pixelSize: Theme.fontSize - 4 }
+ color: Theme.subtext
+ }
}
}