* Measure the About layout in UTF-8 so its window is not fitted too narrow wc -L only counts display columns in a UTF-8 locale. A session that never set one leaves it counting the box-drawing and Nerd Font glyphs the About layout is built from as nothing, which measured the content 21 columns narrower than it renders and fitted the window to clip it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Open the About window at the size it last settled on The window used to map at the float rule's starting size, paint, and only then measure itself and resize, so every open flashed one window size and reflowed into another. The size that hugs the content can only be measured from inside the terminal, so remember it and apply it as a window rule before the terminal is spawned: the window now maps at its final size and never moves. A rebranded logo or a new font falls back to the float rule for one launch, refits, and is remembered from then on. The fit itself now moves the window by the cells it is off by, rather than scaling it to the grid, which multiplied up the terminal's padding along with them and left the fit a column or two short. It accepts a cell of slack instead of chasing an exact grid, since a window lands where the terminal's cell boundaries put it, not where it was asked to. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
58 lines
2.2 KiB
Lua
58 lines
2.2 KiB
Lua
-- Floating windows.
|
|
o.window({ tag = "floating-window" }, { float = true })
|
|
o.window({ tag = "floating-window" }, { center = true })
|
|
o.window({ tag = "floating-window" }, { size = { 875, 600 } })
|
|
|
|
o.window(
|
|
"(org.omarchy.btop|org.omarchy.terminal|org.omarchy.bash|org.codeberg.dnkl.foot|org.gnome.NautilusPreviewer|org.gnome.Evince|Omarchy|About|TUI.float|imv|mpv)",
|
|
{
|
|
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 = "(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" })
|
|
|
|
-- The About fastfetch layout needs more columns than the standard float provides.
|
|
-- This size only covers the first launch: omarchy-launch-about measures the
|
|
-- rendered content, remembers the size that hugs it, and applies that as its own
|
|
-- rule before every later launch.
|
|
o.window("org.omarchy.about", { float = true })
|
|
o.window("org.omarchy.about", { center = true })
|
|
o.window("org.omarchy.about", { size = { 920, 480 } })
|
|
|
|
o.window("dev.tensaku.Tensaku", { float = true })
|
|
o.window("dev.tensaku.Tensaku", { center = true })
|
|
o.window("omacalc", { float = true })
|
|
|
|
-- Fullscreen screensaver.
|
|
o.window("org.omarchy.screensaver", { fullscreen = true })
|
|
o.window("org.omarchy.screensaver", { float = true })
|
|
o.window("org.omarchy.screensaver", { animation = "slide" })
|
|
|
|
-- No transparency on media windows.
|
|
o.window(
|
|
"^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$",
|
|
{
|
|
tag = "-default-opacity",
|
|
}
|
|
)
|
|
o.window(
|
|
"^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$",
|
|
{
|
|
opacity = "1 1",
|
|
}
|
|
)
|
|
|
|
-- Popped window rounding.
|
|
o.window({ tag = "pop" }, { rounding = 8 })
|
|
|
|
-- Prevent idle while open.
|
|
o.window({ tag = "noidle" }, { idle_inhibit = "always" })
|