Merge upstream quattro for the Qt 6.12 palette fix (#14553)
Qt 6.12 shadows the bare Color singleton, so the bar and every Color role read undefined on fresh installs. Keep our I18n text in the four conflicting files, qualify #14433's notification button color, give the new dictation menu rows and notifications Chinese, and drop table entries for the removed Voxtype and FIDO2 texts.
This commit is contained in:
commit
fcd681c099
239 files changed
+3996
-616
No files matched your search
@@ -81,17 +81,11 @@ layer_absent() {
|
||||
! layer_present "$1"
|
||||
}
|
||||
|
||||
# Overlays built on OverlayWindow (the menu, image selector, emoji picker,
|
||||
# clipboard and the like) stay mapped between opens, parked 1x1 on the bottom
|
||||
# layer, so they keep their fractional scale. Showing means on the overlay.
|
||||
# Fullscreen overlays map on the overlay layer and unmap when closed.
|
||||
layer_on_overlay() {
|
||||
hyprctl -j layers | jq -e --arg ns "$1" '[.[].levels["3"][]? | select(.namespace == $ns)] | length > 0'
|
||||
}
|
||||
|
||||
layer_off_overlay() {
|
||||
! layer_on_overlay "$1"
|
||||
}
|
||||
|
||||
# A layer can be mapped but parked off the monitor: the bar hides that way so
|
||||
# revealing it does not have to rebuild the surface. Assert on geometry when
|
||||
# what matters is that the user can actually see it. Layer boxes are local to
|
||||
|
||||
@@ -86,7 +86,7 @@ screenshot "success-menu-05-position-submenu"
|
||||
wtype -k Down -k Down -k Return
|
||||
wait_until "menu bar position changes to left" 20 bar_position_is "left"
|
||||
wait_until "menu bar becomes vertical" 20 bar_is_vertical
|
||||
wait_until "menu closes after selecting a position" 15 layer_off_overlay "omarchy-menu"
|
||||
wait_until "menu closes after selecting a position" 15 layer_absent "omarchy-menu"
|
||||
screenshot "success-menu-06-bar-left"
|
||||
|
||||
if ((config_existed)); then
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
source "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)/base-test.sh"
|
||||
|
||||
original_monitors=$(hyprctl -j monitors)
|
||||
remaining_monitor=$(jq -r 'map(select(.focused))[0].name // .[0].name' <<<"$original_monitors")
|
||||
remaining_height=$(jq -r --arg name "$remaining_monitor" '.[] | select(.name == $name) | (if (.transform // 0) % 2 == 1 then .width else .height end) / .scale | ceil' <<<"$original_monitors")
|
||||
# Make the source tall enough that a frozen centered menu would land below
|
||||
# the remaining display, so a mapped but misplaced menu cannot pass recovery.
|
||||
tall_height=$((remaining_height * 2 + 1600))
|
||||
virtual_monitor=""
|
||||
|
||||
cleanup() {
|
||||
omarchy-shell shell hide omarchy.menu >/dev/null 2>&1 || true
|
||||
if [[ -n $virtual_monitor ]]; then
|
||||
hyprctl output remove "$virtual_monitor" >/dev/null 2>&1 || true
|
||||
fi
|
||||
hyprctl dispatch "hl.dsp.focus({ monitor = \"$remaining_monitor\" })" >/dev/null 2>&1 || true
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
find_virtual_monitor() {
|
||||
virtual_monitor=$(hyprctl -j monitors | jq -r --argjson previous "$original_monitors" '[.[].name | select(. as $name | $previous | map(.name) | index($name) == null)][0] // empty')
|
||||
[[ -n $virtual_monitor ]]
|
||||
}
|
||||
|
||||
monitor_is_tall() {
|
||||
hyprctl -j monitors | jq -e --arg name "$virtual_monitor" --argjson height "$tall_height" 'any(.[]; .name == $name and .height == $height and .scale == 1)'
|
||||
}
|
||||
|
||||
monitor_is_focused() {
|
||||
hyprctl -j monitors | jq -e --arg name "$1" 'any(.[]; .name == $name and .focused)'
|
||||
}
|
||||
|
||||
menu_on_monitor() {
|
||||
hyprctl -j layers | jq -e --arg name "$1" '[.[$name].levels["3"][]? | select(.namespace == "omarchy-menu")] | length == 1'
|
||||
}
|
||||
|
||||
monitor_contains() {
|
||||
local monitor="$1" text="$2"
|
||||
local snapshot="$ARTIFACTS/monitor-text-$$.png"
|
||||
local status=0
|
||||
|
||||
if timeout 10 grim -o "$monitor" -s 2 "$snapshot" 2>/dev/null; then
|
||||
tesseract "$snapshot" stdout --psm 11 2>/dev/null | grep -Fi -- "$text" >/dev/null || status=$?
|
||||
else
|
||||
status=1
|
||||
fi
|
||||
rm -f "$snapshot"
|
||||
return "$status"
|
||||
}
|
||||
|
||||
create_source_monitor() {
|
||||
hyprctl output create headless >/dev/null
|
||||
wait_until "temporary overlay monitor appears" 15 find_virtual_monitor
|
||||
hyprctl eval "hl.monitor({ output = \"$virtual_monitor\", mode = \"1920x${tall_height}@60\", position = \"auto\", scale = 1 })" >/dev/null
|
||||
wait_until "temporary overlay monitor has tall geometry" 15 monitor_is_tall
|
||||
hyprctl dispatch "hl.dsp.focus({ monitor = \"$virtual_monitor\" })" >/dev/null
|
||||
wait_until "temporary overlay monitor is focused" 15 monitor_is_focused "$virtual_monitor"
|
||||
}
|
||||
|
||||
remove_source_monitor() {
|
||||
hyprctl output remove "$virtual_monitor" >/dev/null
|
||||
virtual_monitor=""
|
||||
hyprctl dispatch "hl.dsp.focus({ monitor = \"$remaining_monitor\" })" >/dev/null
|
||||
wait_until "remaining monitor is focused" 15 monitor_is_focused "$remaining_monitor"
|
||||
}
|
||||
|
||||
omarchy-shell shell hide omarchy.menu >/dev/null
|
||||
wait_until "menu starts closed" 15 layer_absent "omarchy-menu"
|
||||
|
||||
# A closed overlay must drop its old output and reopen on a connected one.
|
||||
create_source_monitor
|
||||
omarchy-shell shell summon omarchy.menu '{"menu":"root"}' >/dev/null
|
||||
wait_until "menu opens on temporary monitor" 15 menu_on_monitor "$virtual_monitor"
|
||||
wait_until "menu renders on temporary monitor" 15 monitor_contains "$virtual_monitor" "Apps"
|
||||
screenshot "success-overlay-monitor-01-closed-source"
|
||||
omarchy-shell shell hide omarchy.menu >/dev/null
|
||||
wait_until "menu unmaps before monitor removal" 15 layer_absent "omarchy-menu"
|
||||
remove_source_monitor
|
||||
omarchy-shell shell summon omarchy.menu '{"menu":"root"}' >/dev/null
|
||||
wait_until "closed menu reopens on remaining monitor" 15 menu_on_monitor "$remaining_monitor"
|
||||
wait_until "reopened menu renders on remaining monitor" 15 monitor_contains "$remaining_monitor" "Apps"
|
||||
screenshot "success-overlay-monitor-02-closed-recovered"
|
||||
omarchy-shell shell hide omarchy.menu >/dev/null
|
||||
wait_until "reopened menu closes" 15 layer_absent "omarchy-menu"
|
||||
|
||||
# Typing freezes the menu's position. Recovery onto a shorter screen must
|
||||
# unfreeze that position while preserving the search and keyboard handling.
|
||||
create_source_monitor
|
||||
omarchy-shell shell summon omarchy.menu '{"menu":"root"}' >/dev/null
|
||||
wait_until "open recovery menu maps on tall monitor" 15 menu_on_monitor "$virtual_monitor"
|
||||
wait_until "open recovery menu renders" 15 monitor_contains "$virtual_monitor" "Apps"
|
||||
screenshot "success-overlay-monitor-03-open-root"
|
||||
wtype "keybindings"
|
||||
wait_until "menu search renders on tall monitor" 15 monitor_contains "$virtual_monitor" "Keybindings"
|
||||
screenshot "success-overlay-monitor-04-open-search"
|
||||
remove_source_monitor
|
||||
wait_until "open menu moves to remaining monitor" 15 menu_on_monitor "$remaining_monitor"
|
||||
wait_until "open menu search renders on shorter monitor" 15 monitor_contains "$remaining_monitor" "Keybindings"
|
||||
screenshot "success-overlay-monitor-05-open-recovered"
|
||||
wtype -k Escape
|
||||
wait_until "recovered menu clears search through keyboard" 15 monitor_contains "$remaining_monitor" "Apps"
|
||||
wtype -k Escape
|
||||
wait_until "recovered menu closes through keyboard" 15 layer_absent "omarchy-menu"
|
||||
@@ -29,7 +29,7 @@ wtype "rocket"
|
||||
sleep 1
|
||||
screenshot "success-emoji-picker-search"
|
||||
wtype -k Return
|
||||
wait_until "emoji picker selection closes" 15 layer_off_overlay "omarchy-emojis"
|
||||
wait_until "emoji picker selection closes" 15 layer_absent "omarchy-emojis"
|
||||
|
||||
# Seed two clipboard entries, search for the older one, and copy it back out.
|
||||
clipboard_token="Omarchy acceptance clipboard $(date +%s)"
|
||||
@@ -44,7 +44,7 @@ wtype "$clipboard_token"
|
||||
wait_until "clipboard search finds test text" 15 screen_contains "Omarchy acceptance clipboard"
|
||||
screenshot "success-clipboard-search"
|
||||
wtype -M shift -k Return -m shift
|
||||
wait_until "clipboard selection closes" 15 layer_off_overlay "omarchy-clipboard"
|
||||
wait_until "clipboard selection closes" 15 layer_absent "omarchy-clipboard"
|
||||
wait_until "clipboard selection restores test text" 15 bash -c '[[ $(wl-paste --no-newline) == "$1" ]]' _ "$clipboard_token"
|
||||
|
||||
# Exercise the system branch without invoking any destructive action.
|
||||
@@ -53,7 +53,7 @@ wait_until "system menu opens" 15 layer_on_overlay "omarchy-menu"
|
||||
wait_until "system menu content is visible" 15 screen_contains "Shutdown"
|
||||
screenshot "success-system-menu"
|
||||
wtype -k Escape
|
||||
wait_until "system menu closes" 15 layer_off_overlay "omarchy-menu"
|
||||
wait_until "system menu closes" 15 layer_absent "omarchy-menu"
|
||||
|
||||
# Preview both visual selectors and cancel without changing user state. These
|
||||
# cover thumbnail generation, the image-grid overlay, and current selection.
|
||||
@@ -62,14 +62,14 @@ wait_until "background selector opens" 30 layer_on_overlay "omarchy-image-select
|
||||
sleep 1
|
||||
screenshot "success-background-selector"
|
||||
wtype -k Escape
|
||||
wait_until "background selector closes" 15 layer_off_overlay "omarchy-image-selector"
|
||||
wait_until "background selector closes" 15 layer_absent "omarchy-image-selector"
|
||||
|
||||
launch_app "omarchy-theme-switcher"
|
||||
wait_until "theme selector opens" 30 layer_on_overlay "omarchy-image-selector"
|
||||
sleep 1
|
||||
screenshot "success-theme-selector"
|
||||
wtype -k Escape
|
||||
wait_until "theme selector closes" 15 layer_off_overlay "omarchy-image-selector"
|
||||
wait_until "theme selector closes" 15 layer_absent "omarchy-image-selector"
|
||||
|
||||
# Walk the reminder flow through each input screen, but dismiss before it
|
||||
# schedules a real timer in the test user's session.
|
||||
@@ -83,7 +83,7 @@ wtype -k Return
|
||||
wait_until "reminder message prompt opens" 15 screen_contains "Reminder message"
|
||||
screenshot "success-reminder-03-message-prompt"
|
||||
wtype -k Escape
|
||||
wait_until "reminder flow closes" 15 layer_off_overlay "omarchy-reminders"
|
||||
wait_until "reminder flow closes" 15 layer_absent "omarchy-reminders"
|
||||
|
||||
# Render a real shell notification and clear it through the notification IPC.
|
||||
omarchy-shell notifications dismissAll >/dev/null
|
||||
@@ -111,7 +111,7 @@ screenshot "success-apps-menu-search"
|
||||
wtype -k Return
|
||||
|
||||
wait_until "apps menu launches the top search hit" 60 window_present "(?i)omawrite"
|
||||
wait_until "apps menu closes after launching" 15 layer_off_overlay "omarchy-menu"
|
||||
wait_until "apps menu closes after launching" 15 layer_absent "omarchy-menu"
|
||||
|
||||
close_windows "(?i)omawrite"
|
||||
wait_until "Omawrite window closes" 30 window_absent "(?i)omawrite"
|
||||
Reference in new issue
Block a user