- hypr/apps.lua - hypr/autostart.lua - hypr/envs.lua - hypr/hyprland.lua - hypr/hyprsunset.conf - hypr/input.lua - hypr/looknfeel.lua - hypr/omasettings.lua - hypr/xdph.conf - omarchy/branding/about.txt - omarchy/branding/screensaver.txt - omarchy/extensions/omarchy-menu.jsonc - omarchy/hooks/battery-low.d/play-warning-sound.sample - omarchy/hooks/font-set.d/show-font-notification.sample - omarchy/hooks/post-boot.d/weather.sample - omarchy/hooks/post-update.d/install-voxtype.hook - omarchy/hooks/post-update.d/setup-agent.hook - omarchy/hooks/post-update.d/setup-fingerprint.hook - omarchy/hooks/post-update.d/show-update-notification.sample - omarchy/hooks/pre-refresh-pacman.d/add-custom-repo.sample - omarchy/hooks/theme-set.d/show-theme-notification.sample - omarchy/shell.json - omarchy/shell.toml - omarchy/theme.name - omarchy/themes/azure-glow/README.md - omarchy/themes/azure-glow/alacritty.toml - omarchy/themes/azure-glow/btop.theme - omarchy/themes/azure-glow/hyprland.conf - omarchy/themes/azure-glow/hyprlock.conf - omarchy/themes/azure-glow/icons.theme - … 269 more
189 lines
6.2 KiB
QML
189 lines
6.2 KiB
QML
pragma ComponentBehavior: Bound
|
|
|
|
import QtQuick
|
|
import qs.Commons
|
|
import qs.Ui
|
|
|
|
// The four settings worth reaching without leaving the panel, and an honest
|
|
// pointer to the rest.
|
|
//
|
|
// Why this tab exists: Omarchy has no settings editor. Setup > Plugins
|
|
// enables, disables, adds, clones and removes — nothing anywhere edits a
|
|
// widget's own settings, and the shell keeps them inline on the bar entry in
|
|
// shell.json. So every option this plugin has was, until now, reachable only
|
|
// by hand-editing that file. Thirteen settings nobody can find is worse than
|
|
// four they can.
|
|
//
|
|
// Only booleans are here. An enum or a number needs a picker and a keyboard,
|
|
// and a half-built editor in a monitoring panel would be worse than sending
|
|
// someone to the file that already works.
|
|
Column {
|
|
id: tab
|
|
|
|
required property var panel
|
|
|
|
spacing: Style.space(12)
|
|
|
|
// Writing goes through the host: the shell owns shell.json and rewrites the
|
|
// whole entry, so a setting is changed by handing back the entry with one
|
|
// field replaced. Absent that API — an older shell — the toggles stay
|
|
// visible but inert, and the note below says so rather than failing
|
|
// silently on a tap.
|
|
readonly property bool canWrite: !!(panel.bar && panel.bar.shell
|
|
&& typeof panel.bar.shell.updateEntryInline === "function")
|
|
|
|
function put(key, value) {
|
|
if (!canWrite) return
|
|
var id = "io.github.x3me.nexthop"
|
|
var s = panel.settings
|
|
// The shell REPLACES the entry with what it is handed, so writing from
|
|
// an absent settings object would hand back {id, key} and drop every
|
|
// other setting the user has. Better to do nothing than to do that.
|
|
if (!s || typeof s !== "object") return
|
|
var entry = { "id": id }
|
|
for (var k in s) if (k !== "id") entry[k] = s[k]
|
|
entry[key] = value
|
|
panel.bar.shell.updateEntryInline(id, entry)
|
|
}
|
|
|
|
Text {
|
|
textFormat: Text.PlainText
|
|
text: "WHAT NEXTHOP MAY DO"
|
|
color: tab.panel.dim
|
|
font.family: tab.panel.fontFamily
|
|
font.pixelSize: Style.font.caption
|
|
font.letterSpacing: 1
|
|
}
|
|
|
|
// One row per toggle: name and one line of consequence on the left, the
|
|
// switch on the right. The consequence line is the point — a toggle whose
|
|
// effect you have to guess is not a setting, it is a dare.
|
|
component Row_: Item {
|
|
id: row
|
|
required property string label
|
|
required property string detail
|
|
required property bool value
|
|
required property string settingKey
|
|
|
|
width: parent.width
|
|
height: Math.max(texts.implicitHeight, sw.implicitHeight)
|
|
|
|
Column {
|
|
id: texts
|
|
width: parent.width - sw.width - Style.space(14)
|
|
spacing: Style.space(2)
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
|
|
Text {
|
|
textFormat: Text.PlainText
|
|
text: row.label
|
|
color: tab.panel.fg
|
|
font.family: tab.panel.fontFamily
|
|
font.pixelSize: Style.font.bodySmall
|
|
}
|
|
Text {
|
|
textFormat: Text.PlainText
|
|
width: parent.width
|
|
wrapMode: Text.WordWrap
|
|
text: row.detail
|
|
color: tab.panel.dim
|
|
font.family: tab.panel.fontFamily
|
|
font.pixelSize: Style.font.caption
|
|
}
|
|
}
|
|
|
|
ToggleSwitch {
|
|
id: sw
|
|
anchors.right: parent.right
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
checked: row.value
|
|
interactive: tab.canWrite
|
|
foreground: tab.panel.fg
|
|
onToggled: tab.put(row.settingKey, !row.value)
|
|
}
|
|
}
|
|
|
|
Row_ {
|
|
label: "Go easy on phone hotspots"
|
|
detail: "When the connection comes from a phone, pause the hourly speed "
|
|
+ "checks and ask twice before a full test. About 14 MB an hour of "
|
|
+ "someone's data plan."
|
|
value: tab.panel.setting("meteredCare", true)
|
|
settingKey: "meteredCare"
|
|
}
|
|
|
|
PanelSeparator { width: parent.width }
|
|
|
|
Row_ {
|
|
label: "Measure speed automatically"
|
|
detail: "A small download every hour so the Speed score means something. "
|
|
+ "Off, Speed goes blank rather than guessing."
|
|
value: tab.panel.setting("contentSpeed", true)
|
|
settingKey: "contentSpeed"
|
|
}
|
|
|
|
PanelSeparator { width: parent.width }
|
|
|
|
Row_ {
|
|
label: "Notify on outages"
|
|
detail: "A desktop notification when the connection drops and when it "
|
|
+ "returns. Brief interruptions are logged either way and never "
|
|
+ "notified."
|
|
value: tab.panel.setting("notifyOutage", true)
|
|
settingKey: "notifyOutage"
|
|
}
|
|
|
|
PanelSeparator { width: parent.width }
|
|
|
|
Row_ {
|
|
label: "Tell me about updates"
|
|
detail: "Once a day, asks the repository you installed from whether a "
|
|
+ "newer version exists. Sends nothing about you, and installs nothing."
|
|
value: tab.panel.setting("updateCheck", true)
|
|
settingKey: "updateCheck"
|
|
}
|
|
|
|
PanelSeparator { width: parent.width }
|
|
|
|
Text {
|
|
textFormat: Text.PlainText
|
|
text: "EVERYTHING ELSE"
|
|
color: tab.panel.dim
|
|
font.family: tab.panel.fontFamily
|
|
font.pixelSize: Style.font.caption
|
|
font.letterSpacing: 1
|
|
}
|
|
|
|
// The honest part. Nine more settings exist and this panel is not the
|
|
// place to build a form for them, so say plainly where they live and what
|
|
// they are, rather than pretending these four are all there is.
|
|
Text {
|
|
textFormat: Text.PlainText
|
|
width: parent.width
|
|
wrapMode: Text.WordWrap
|
|
text: tab.canWrite
|
|
? "Nine more settings live on this widget's entry in "
|
|
+ "~/.config/omarchy/shell.json — what the bar shows, the internet "
|
|
+ "anchor, probe interval, check frequency, speed-test engine, your "
|
|
+ "plan speeds, throughput smoothing, and how long history is kept. "
|
|
+ "Add them beside \"id\" and they apply without a restart."
|
|
: "This shell cannot write widget settings back, so the switches above "
|
|
+ "are read-only. Edit this widget's entry in "
|
|
+ "~/.config/omarchy/shell.json instead; changes apply without a "
|
|
+ "restart."
|
|
color: tab.panel.dim
|
|
font.family: tab.panel.fontFamily
|
|
font.pixelSize: Style.font.caption
|
|
}
|
|
|
|
Text {
|
|
textFormat: Text.PlainText
|
|
width: parent.width
|
|
wrapMode: Text.WordWrap
|
|
text: "Defaults are sensible and nothing here needs changing to use it."
|
|
color: tab.panel.dim
|
|
font.family: tab.panel.fontFamily
|
|
font.pixelSize: Style.font.caption
|
|
}
|
|
}
|