Merge quattro into clock-calendar

Both sides tightened the same center-layout assertion. Taking quattro's:
it asserts the weather/update adjacency the test name is about instead of
pinning the whole row, which is what kept breaking it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
David Heinemeier Hansson
2026-07-26 22:07:08 -07:00
co-authored by Claude Opus 5
54 changed files with 1510 additions and 148 deletions
@@ -38,6 +38,34 @@
</edit>
</match>
<!-- Urdu is conventionally set in Nastaliq, so keep it there. Without this
the untargeted Naskh rule below would capture Urdu too. Appended rather
than prepended so it only wins the last-resort race against that rule
and never displaces the family the app actually asked for. -->
<match target="pattern">
<test name="lang" compare="contains">
<string>ur</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Nastaliq Urdu</string>
</edit>
</match>
<!-- Chromium and Electron resolve missing glyphs one character at a time
without lang on the pattern, so the rules above never fire for them and
fontconfig falls through to a raw charset scan that lands on Nastaliq
(or on Kufi, once the latin alias chains have widened the pattern).
Naming Naskh as a last-resort family covers that path. Appending keeps
it behind every family the app actually asked for, and charset matching
outranks family matching, so a font that does not cover the codepoint
can never be pulled in: Latin, monospace, emoji, Nerd Font glyphs and
CJK all resolve exactly as before. -->
<match target="pattern">
<edit name="family" mode="append" binding="strong">
<string>Noto Naskh Arabic</string>
</edit>
</match>
<alias>
<family>system-ui</family>
<prefer>
+8 -2
View File
@@ -1,2 +1,8 @@
-- DaVinci Resolve dialog focus handling.
o.window(".*[Rr]esolve.*", { float = true, stay_focused = true })
-- DaVinci Resolve window focus handling. Kept fully opaque: the default
-- translucency distorts colour-critical grading work.
o.window(".*[Rr]esolve.*", {
float = true,
stay_focused = true,
tag = "-default-opacity",
opacity = "1 1",
})
+5 -1
View File
@@ -9,8 +9,12 @@ o.window(
tag = "+floating-window",
}
)
-- The portal only ever shows dialogs — file pickers, screen shares, permission
-- prompts — so every one of its windows belongs in the floating treatment,
-- whatever the app that asked for it titled it.
o.window("xdg-desktop-portal-gtk", { tag = "+floating-window" })
o.window({
class = "(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus)",
class = "(sublime_text|DesktopEditors|org.gnome.Nautilus)",
title = "^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*)",
}, { tag = "+floating-window" })
o.window("dev.tensaku.Tensaku", { float = true })
+23 -3
View File
@@ -21,14 +21,34 @@ local function read_vconsole()
return values
end
-- Layouts that can't type Latin letters. Keep in sync with the list in
-- etc/mkinitcpio.conf.d/omarchy_hooks.conf.
local non_latin_layouts =
" af am ara bd bg by et ge gr il in iq ir kg kh kz la lk mk mm mn mv np rs ru sy th tj ua "
local vconsole = read_vconsole()
local kb_layout = vconsole.XKBLAYOUT or "us"
local kb_variant = vconsole.XKBVARIANT or ""
local kb_options = "compose:caps,shift:both_capslock"
-- Hyprland resolves keybindings against the first entry in kb_layout, not the
-- layout that's currently active, so Omarchy's Latin-keysym bindings (SUPER + W
-- and friends) only fire when a Latin layout leads. Installing with a non-Latin
-- one would otherwise leave the desktop unusable.
if non_latin_layouts:find(" " .. kb_layout:match("^[^,]*") .. " ", 1, true) then
kb_layout = "us," .. kb_layout
kb_variant = "," .. kb_variant
-- Reach the original layout with Left Alt + Right Alt.
kb_options = kb_options .. ",grp:alts_toggle"
end
hl.config({
input = {
kb_layout = vconsole.XKBLAYOUT or "us",
kb_variant = vconsole.XKBVARIANT or "",
kb_layout = kb_layout,
kb_variant = kb_variant,
kb_model = "",
kb_options = "compose:caps,shift:both_capslock",
kb_options = kb_options,
kb_rules = "",
follow_mouse = 1,
sensitivity = 0,
+1 -1
View File
@@ -129,7 +129,7 @@
"setup.default.browser.brave": {"icon":"󰖟","label":"Brave","when":"omarchy-cmd-present brave","checked":"[[ \"$(omarchy-default-browser)\" == \"brave\" ]]","action":"omarchy-default-browser brave"},
"setup.default.browser.brave-origin": {"icon":"󰖟","label":"Brave Origin","when":"omarchy-cmd-present brave-origin","checked":"[[ \"$(omarchy-default-browser)\" == \"brave-origin\" ]]","action":"omarchy-default-browser brave-origin"},
"setup.default.browser.edge": {"icon":"󰇩","label":"Edge","when":"omarchy-cmd-present microsoft-edge-stable","checked":"[[ \"$(omarchy-default-browser)\" == \"edge\" ]]","action":"omarchy-default-browser edge"},
"setup.default.browser.firefox": {"icon":"󰈹","label":"Firefox","when":"omarchy-cmd-present firefox","checked":"[[ \"$(omarchy-default-browser)\" == \"firefox\" ]]","action":"omarchy-default-browser firefox"},
"setup.default.browser.firefox": {"icon":"","label":"Firefox","when":"omarchy-cmd-present firefox","checked":"[[ \"$(omarchy-default-browser)\" == \"firefox\" ]]","action":"omarchy-default-browser firefox"},
"setup.default.browser.zen": {"icon":"󰖟","label":"Zen","when":"omarchy-cmd-present zen-browser","checked":"[[ \"$(omarchy-default-browser)\" == \"zen\" ]]","action":"omarchy-default-browser zen"},
"setup.default.terminal": {"icon":"","label":"Terminal"},
"setup.default.terminal.alacritty": {"icon":"","label":"Alacritty","when":"omarchy-cmd-present alacritty","checked":"[[ \"$(omarchy-default-terminal)\" == \"alacritty\" ]]","action":"omarchy-default-terminal alacritty"},
@@ -0,0 +1,16 @@
[Unit]
Description=Notify about pending Omarchy migrations
# Login-only. There used to be an omarchy-update-user-notify.path watching
# /usr/share/omarchy/migrations, but pacman writes that directory during every
# update -- including the blessed `omarchy update`, which runs omarchy-migrate
# itself a step later -- so the watcher notified about migrations that were
# already being applied in the visible update terminal. Checking once per login
# is the only trigger that cannot collide with a running update.
ConditionPathIsDirectory=/usr/share/omarchy/migrations
[Service]
Type=oneshot
ExecStart=/usr/bin/omarchy-migrate-notify
[Install]
WantedBy=graphical-session.target
@@ -0,0 +1,12 @@
[Unit]
Description=Save incoming Taildrop files to the downloads directory
ConditionPathExists=/usr/bin/tailscale
[Service]
Type=simple
ExecStart=/usr/bin/omarchy-tailscale-receive
Restart=always
RestartSec=5
[Install]
WantedBy=graphical-session.target
@@ -1,14 +0,0 @@
[Unit]
Description=Watch for Omarchy migrations
[Path]
# Edge-triggered watch only. PathExistsGlob= is level-triggered: it re-fires
# every time the triggered unit deactivates for as long as the glob matches,
# and applied migrations stay on disk forever, so a glob here busy-loops the
# oneshot service. The once-per-login check lives in the service's own
# WantedBy=graphical-session.target instead.
PathModified=/usr/share/omarchy/migrations
Unit=omarchy-update-user-notify.service
[Install]
WantedBy=graphical-session.target
@@ -1,10 +0,0 @@
[Unit]
Description=Notify about pending Omarchy migrations
ConditionPathIsDirectory=/usr/share/omarchy/migrations
[Service]
Type=oneshot
ExecStart=/usr/bin/omarchy-migrate-notify
[Install]
WantedBy=graphical-session.target