Repository navigation
feat(kde): open ghostty windows fullscreen instead of at a fixed size - #360
Merged
Merged
Conversation
The hanzo-ghostty KWin rule applied a 1600x1001 size to every new ghostty window. It now applies fullscreen initially (fullscreen=true, fullscreenrule=3) and retires the size keys. Dropping a property from kde_window_rules would have left the old keys in kwinrulesrc on every machine that already had them, so a rule property set to null is now removed from its group (ini_file state=absent) instead of written. The size keys are declared null until every machine has converged. Keys and application order confirmed from plasma/kwin: src/rulesettings.kcfg (fullscreen Bool, fullscreenrule SetRule) and XdgToplevelWindow::initialize() in src/xdgshellwindow.cpp, which applies size, then maximize, then fullscreen.
palazzem
commented
Sep 17, 2026
Provisioning targets a fresh machine, so the size keys are simply gone from the rule and no task cleans them up on machines that already have them. CLAUDE.md now states the rule: never be backward compatible.
palazzem
commented
Sep 17, 2026
Rule 9: once a PR that changes provisioned state is merged, the agent asks whether to apply it to the current machine, reproduces the end state directly instead of running hanzo on the host, and describes the plan step by step before executing what the user confirms.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related Issues
No related issue. Requested by the maintainer: ghostty should start fullscreen instead of at a fixed number of pixels.
Proposed Changes:
The
hanzo-ghosttyKWin window rule (kde_window_rulesinroles/kde/defaults/main.yml) applied a 1600x1001 size to every new ghostty window. It now applies fullscreen initially:fullscreen=truewithfullscreenrule=3("Apply initially"), the same thing System Settings > Window Rules writes when the Fullscreen property is enabled with that rule type.Both keys come from source, not guesswork:
fullscreenis aBoolandfullscreenruleaRules::SetRuleint in plasma/kwinsrc/rulesettings.kcfg.XdgToplevelWindow::initialize()insrc/xdgshellwindow.cppapplies initial rules in a fixed order (size, then maximize, then fullscreen), so a fullscreen rule wins at mapping time.The size keys are simply gone from the rule.
community.general.ini_fileonly writes the keys it is given, so a machine provisioned with the old rule keepssize/sizeruleinkwinrulesrc; that is by design. Provisioning targets a fresh, clean machine and is never backward compatible, now stated as rule 8 inCLAUDE.md, so there is no cleanup task. On an existing machine, remove the leftover Size property from thehanzo-ghosttyrule in System Settings > Window Rules if you want it gone.The
kde-configskill'slessons/window-rules.mdgained the fullscreen and maximize keys, the initial-state order, and a note that a dropped property stays on an already-provisioned machine.Testing:
pre-commit run --all-files: every hook passed, including ansible-lint.--checkbuild was not run locally: the Docker daemon is not running on the authoring host. CI runs it. Thekderole is skipped in the container regardless (no Plasma,host_has_kdeis false), so the container build proves syntax for this change, not behaviour.hanzo, expect the window-rule task to reportfullscreenandfullscreenrulechanged and theReconfigure KWinhandler to fire; open a new ghostty window (anApplyrule only affects windows mapped after the reload) and confirm it is fullscreen; runhanzoagain and confirm no change.Extra Notes (optional):
Fullscreen and maximized are distinct KWin properties: fullscreen hides the panel and the title bar, maximized keeps both. If maximized is what is wanted, the rule takes
maximizevert/maximizehorizwith their*rulecompanions instead.If the hand-made UUID rule from #340 is still present, it keeps applying its size while this rule applies fullscreen; the properties do not overlap, so both take effect.
Checklist
--checkbuild and the manual Plasma verification described above.pre-commit run --all-filesdocker build -f tests/Containerfile -t hanzo:test .: not run locally (Docker daemon not running); CI runs it, and thekderole is skipped in the container regardless.