Add Quickshell bar
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
# Omarchy bar
|
||||
|
||||
This is the Quickshell implementation of the Omarchy status bar.
|
||||
|
||||
- `shell.qml` is Omarchy-owned bar engine code. Users should not edit it directly.
|
||||
- `bar-defaults.json` is the Omarchy-owned default layout and module settings.
|
||||
- User overrides live in `~/.config/omarchy/bar.json` and are merged over defaults at runtime.
|
||||
- `omarchy-style-bar-position` updates only the user override file.
|
||||
- Wi-Fi/LAN state is polled from the active route and NetworkManager so the QML can mirror Waybar's network icons.
|
||||
- Tooltips use a small Quickshell `PopupWindow`, not Qt Quick Controls' clipped default tooltip.
|
||||
|
||||
Example user override:
|
||||
|
||||
```json
|
||||
{
|
||||
"position": "right",
|
||||
"layout": {
|
||||
"left": ["omarchy", "workspaces"],
|
||||
"center": ["clock", "weather", "update"],
|
||||
"right": ["tray", "bluetooth", "network", "audio", "cpu", "battery"]
|
||||
},
|
||||
"modules": {
|
||||
"clock": {
|
||||
"format": "HH:mm",
|
||||
"formatAlt": "dd MMMM 'W'ww yyyy",
|
||||
"verticalFormat": "HH\n—\nmm"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`centerAnchor` defaults to `clock`. When the anchor module is present in the `center` list, it is pinned to the exact center of the bar and modules before/after it flank that anchor. If the anchor is not in the center list, the center list is centered as a group.
|
||||
|
||||
Available built-in modules: `omarchy`, `workspaces`, `clock`, `weather`, `update`, `voxtype`, `screenRecording`, `idle`, `notifications`, `tray`, `bluetooth`, `network`, `audio`, `cpu`, `battery`.
|
||||
|
||||
## Custom modules
|
||||
|
||||
Add a module name to a layout list, then define it under `modules` in `~/.config/omarchy/bar.json`.
|
||||
|
||||
For simple text/JSON output, use a command module:
|
||||
|
||||
```json
|
||||
{
|
||||
"layout": {
|
||||
"right": ["tray", "vpn", "audio", "cpu"]
|
||||
},
|
||||
"modules": {
|
||||
"vpn": {
|
||||
"type": "command",
|
||||
"exec": "~/.config/omarchy/bar/scripts/vpn-status",
|
||||
"interval": 5,
|
||||
"tooltip": "VPN",
|
||||
"onClick": "nm-connection-editor"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The command may print plain text or Waybar-style JSON, for example:
|
||||
|
||||
```json
|
||||
{"text":"","tooltip":"Work VPN","class":"active"}
|
||||
```
|
||||
|
||||
For advanced custom UI, use QML:
|
||||
|
||||
```json
|
||||
{
|
||||
"layout": {
|
||||
"right": ["gpu", "audio", "cpu"]
|
||||
},
|
||||
"modules": {
|
||||
"gpu": {
|
||||
"type": "qml"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Then create `~/.config/omarchy/bar/modules/gpu.qml`. If you want to store it elsewhere, add a `source` path.
|
||||
|
||||
Custom QML modules should be an `Item` with `implicitWidth` and `implicitHeight`. They may optionally define these properties, which the bar fills after loading:
|
||||
|
||||
```qml
|
||||
import QtQuick
|
||||
|
||||
Item {
|
||||
property var bar
|
||||
property string moduleName
|
||||
property var settings
|
||||
|
||||
implicitWidth: 28
|
||||
implicitHeight: bar ? bar.barSize : 26
|
||||
|
||||
Text {
|
||||
anchors.centerIn: parent
|
||||
text: "GPU"
|
||||
color: bar ? bar.foreground : "white"
|
||||
font.family: bar ? bar.fontFamily : "monospace"
|
||||
font.pixelSize: 12
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: if (bar) bar.run("omarchy-launch-or-focus-tui btop")
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"position": "top",
|
||||
"fontFamily": "JetBrainsMono Nerd Font",
|
||||
"centerAnchor": "clock",
|
||||
"layout": {
|
||||
"left": ["omarchy", "workspaces"],
|
||||
"center": ["clock", "weather", "update", "voxtype", "screenRecording", "idle", "notifications"],
|
||||
"right": ["tray", "bluetooth", "network", "audio", "cpu", "battery"]
|
||||
},
|
||||
"modules": {
|
||||
"clock": {
|
||||
"format": "dddd HH:mm",
|
||||
"formatAlt": "dd MMMM 'W'ww yyyy",
|
||||
"verticalFormat": "HH\n—\nmm"
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user