Park the indicators just left of the clock
The lineup now reads toward the clock instead of away from it, so Stay Awake sits nearest the time, then do-not-disturb, night light, reminder, screen recording, dictation, and tmux alerts trailing off to the left. Active indicators render after the hover-revealed ones so they stay against the clock, and a newly active indicator joins on the far side rather than shoving the ones already showing sideways. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
ec1553d720
commit
896beb0c85
@@ -18,6 +18,9 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"center": [
|
"center": [
|
||||||
|
{
|
||||||
|
"id": "omarchy.indicators"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "omarchy.clock",
|
"id": "omarchy.clock",
|
||||||
"format": "dddd HH:mm",
|
"format": "dddd HH:mm",
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
echo "Move the bar indicators to the left of the clock"
|
||||||
|
|
||||||
|
config_file="$HOME/.config/omarchy/shell.json"
|
||||||
|
|
||||||
|
if [[ -s $config_file ]] && omarchy-cmd-present jq; then
|
||||||
|
tmp=$(mktemp)
|
||||||
|
jq '
|
||||||
|
def entry_id:
|
||||||
|
if type == "string" then
|
||||||
|
.
|
||||||
|
elif type == "object" then
|
||||||
|
(.id // "")
|
||||||
|
else
|
||||||
|
""
|
||||||
|
end;
|
||||||
|
|
||||||
|
def entry_index($id):
|
||||||
|
[range(0; length) as $i | select((.[$i] | entry_id) == $id) | $i][0];
|
||||||
|
|
||||||
|
def place_indicators_before_clock:
|
||||||
|
if type != "array" then
|
||||||
|
.
|
||||||
|
else
|
||||||
|
(entry_index("omarchy.clock")) as $clock_index |
|
||||||
|
(entry_index("omarchy.indicators")) as $indicators_index |
|
||||||
|
if $clock_index == null or $indicators_index == null or $indicators_index < $clock_index then
|
||||||
|
.
|
||||||
|
else
|
||||||
|
. as $entries |
|
||||||
|
($entries[$indicators_index]) as $indicators_entry |
|
||||||
|
($entries | del(.[$indicators_index])) as $without_indicators |
|
||||||
|
($without_indicators | entry_index("omarchy.clock")) as $new_clock_index |
|
||||||
|
$without_indicators[0:$new_clock_index] + [$indicators_entry] + $without_indicators[$new_clock_index:]
|
||||||
|
end
|
||||||
|
end;
|
||||||
|
|
||||||
|
.bar.layout.center |= place_indicators_before_clock
|
||||||
|
' "$config_file" >"$tmp" && mv "$tmp" "$config_file" || rm -f "$tmp"
|
||||||
|
fi
|
||||||
@@ -26,30 +26,15 @@
|
|||||||
"placeholderText": "Search indicators...",
|
"placeholderText": "Search indicators...",
|
||||||
"emptyText": "No indicators",
|
"emptyText": "No indicators",
|
||||||
"options": [
|
"options": [
|
||||||
{
|
|
||||||
"value": "StayAwake",
|
|
||||||
"label": "Stay awake",
|
|
||||||
"description": "Idle lock and screensaver override"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"value": "Dnd",
|
|
||||||
"label": "Do not disturb",
|
|
||||||
"description": "Notification silencing"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"value": "Reminder",
|
|
||||||
"label": "Reminder",
|
|
||||||
"description": "Queued reminder status"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"value": "TmuxAlert",
|
"value": "TmuxAlert",
|
||||||
"label": "Tmux alert",
|
"label": "Tmux alert",
|
||||||
"description": "Tmux windows waiting for attention"
|
"description": "Tmux windows waiting for attention"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"value": "NightLight",
|
"value": "Dictation",
|
||||||
"label": "Night light",
|
"label": "Dictation",
|
||||||
"description": "Blue-light filter"
|
"description": "Voice typing status"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"value": "ScreenRecording",
|
"value": "ScreenRecording",
|
||||||
@@ -57,9 +42,24 @@
|
|||||||
"description": "GPU screen recorder status"
|
"description": "GPU screen recorder status"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"value": "Dictation",
|
"value": "Reminder",
|
||||||
"label": "Dictation",
|
"label": "Reminder",
|
||||||
"description": "Voice typing status"
|
"description": "Queued reminder status"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": "NightLight",
|
||||||
|
"label": "Night light",
|
||||||
|
"description": "Blue-light filter"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": "Dnd",
|
||||||
|
"label": "Do not disturb",
|
||||||
|
"description": "Notification silencing"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": "StayAwake",
|
||||||
|
"label": "Stay awake",
|
||||||
|
"description": "Idle lock and screensaver override"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ BarWidget {
|
|||||||
id: root
|
id: root
|
||||||
moduleName: "omarchy.indicators"
|
moduleName: "omarchy.indicators"
|
||||||
|
|
||||||
readonly property var defaultIndicatorEntries: [ "StayAwake", "Dnd", "Reminder", "TmuxAlert", "NightLight", "ScreenRecording", "Dictation" ]
|
readonly property var defaultIndicatorEntries: [ "TmuxAlert", "Dictation", "ScreenRecording", "Reminder", "NightLight", "Dnd", "StayAwake" ]
|
||||||
readonly property var indicatorEntries: indicatorEntriesFromSettings(settings)
|
readonly property var indicatorEntries: indicatorEntriesFromSettings(settings)
|
||||||
property var activeIndicatorIds: []
|
property var activeIndicatorIds: []
|
||||||
property var indicatorActiveStates: ({})
|
property var indicatorActiveStates: ({})
|
||||||
@@ -142,7 +142,9 @@ BarWidget {
|
|||||||
indicatorActiveStates = states
|
indicatorActiveStates = states
|
||||||
|
|
||||||
var ids = orderedActiveIds(states, activeIndicatorIds)
|
var ids = orderedActiveIds(states, activeIndicatorIds)
|
||||||
if (active && ids.indexOf(id) === -1 && hasIndicatorId(id)) ids.push(id)
|
// The active block sits closest to the clock, so newcomers go on the far
|
||||||
|
// side of it. Appending would shove everything already showing sideways.
|
||||||
|
if (active && ids.indexOf(id) === -1 && hasIndicatorId(id)) ids.unshift(id)
|
||||||
activeIndicatorIds = ids
|
activeIndicatorIds = ids
|
||||||
syncActiveIndicatorModel()
|
syncActiveIndicatorModel()
|
||||||
}
|
}
|
||||||
@@ -192,14 +194,6 @@ BarWidget {
|
|||||||
onHoveredChanged: root.setIndicatorAreaHovered(hovered)
|
onHoveredChanged: root.setIndicatorAreaHovered(hovered)
|
||||||
}
|
}
|
||||||
|
|
||||||
ActiveIndicatorBlock {
|
|
||||||
id: activeHorizontalBlock
|
|
||||||
indicatorsModule: root
|
|
||||||
indicatorModel: activeIndicatorModel
|
|
||||||
horizontal: true
|
|
||||||
reportActiveState: !root.vertical
|
|
||||||
}
|
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: inactiveHorizontalArea
|
id: inactiveHorizontalArea
|
||||||
|
|
||||||
@@ -223,6 +217,14 @@ BarWidget {
|
|||||||
onHoveredChanged: root.setIndicatorAreaHovered(hovered)
|
onHoveredChanged: root.setIndicatorAreaHovered(hovered)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ActiveIndicatorBlock {
|
||||||
|
id: activeHorizontalBlock
|
||||||
|
indicatorsModule: root
|
||||||
|
indicatorModel: activeIndicatorModel
|
||||||
|
horizontal: true
|
||||||
|
reportActiveState: !root.vertical
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
@@ -235,14 +237,6 @@ BarWidget {
|
|||||||
onHoveredChanged: root.setIndicatorAreaHovered(hovered)
|
onHoveredChanged: root.setIndicatorAreaHovered(hovered)
|
||||||
}
|
}
|
||||||
|
|
||||||
ActiveIndicatorBlock {
|
|
||||||
id: activeVerticalBlock
|
|
||||||
indicatorsModule: root
|
|
||||||
indicatorModel: activeIndicatorModel
|
|
||||||
horizontal: false
|
|
||||||
reportActiveState: root.vertical
|
|
||||||
}
|
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: inactiveVerticalArea
|
id: inactiveVerticalArea
|
||||||
|
|
||||||
@@ -266,6 +260,14 @@ BarWidget {
|
|||||||
onHoveredChanged: root.setIndicatorAreaHovered(hovered)
|
onHoveredChanged: root.setIndicatorAreaHovered(hovered)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ActiveIndicatorBlock {
|
||||||
|
id: activeVerticalBlock
|
||||||
|
indicatorsModule: root
|
||||||
|
indicatorModel: activeIndicatorModel
|
||||||
|
horizontal: false
|
||||||
|
reportActiveState: root.vertical
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HoverHandler {
|
HoverHandler {
|
||||||
|
|||||||
Reference in New Issue
Block a user