feat(wm): switch to OmniWM (remove aerospace) - #125
Merged
Conversation
- barutsrb/tap + omniwm cask in darwin.nix (already brew-installed imperatively; this keeps it across rebuilds with cleanup=uninstall) - ~/.config/omniwm stays app-managed: hotkeys are GUI-configured and the settings.toml schema is undocumented, so no nix generation for now - just wm [omniwm|aerospace|status] switches the running WM; aerospace stays installed and remains the login item until the trial concludes
- helpers/wm.sh: query abstraction (focused ws, monitors, workspaces, windows->apps, focus) that auto-detects the running WM and dispatches to aerospace CLI or omniwmctl(IPC)+jq - spaces.sh / space_windows.sh / space.sh / front_app.sh / sketchybarrc: replace direct aerospace calls with wm.sh functions (event name and AEROSPACE_* env names kept for compatibility) - helpers/omniwm-bridge.sh + omniwm-event.sh: resident bridge that converts 'omniwmctl watch active-workspace,windows-changed' events into the existing aerospace_workspace_change trigger (omniwm has no exec action). Wired as launchd agent omniwm-bridge in darwin-chrome.nix; idles while aerospace is active - display_watch.sh: build the display map from omniwmctl when OmniWM runs - requires omniwm ipcEnabled = true (already set in ~/.config/omniwm) Tested live against OmniWM 0.5.9: items build from omniwm data, focus highlight follows workspace switches, empty workspaces stay hidden.
Owner
Author
|
sketchybarのOmniWM対応を追加 (2ce0ecb)。
OmniWM 0.5.9で実機確認済み: アイテム生成・フォーカスハイライト追従・空ワークスペース非表示・アイコン列更新。 注意: 動作確認のため現在 ~/.config/sketchybar はworktreeへのsymlinkに一時差し替え中(バックアップ ~/.config/sketchybar.hm-bak)。マージ後のrebuild前に |
…rders - drop aerospace cask + nikitabobko/tap; OmniWM is the main WM now - borders: aerospace after-startup-command is gone, so declare a launchd agent running bordersrc; boot out the legacy hand-written com.felixkratz.borders plist (hardcoded colors) on activation - login items: OmniWM registered, stale AeroSpace entry dropped - justfile: doctor/restart target OmniWM; remove the trial-era wm toggle - delete configs/wm/aerospace (aerospace.toml + aerolog) and scripts/aerospace-config.sh (history has them) - bootstrap checklist: TCC/permission steps now reference OmniWM
gapul
added a commit
that referenced
this pull request
Aug 8, 2026
…ice label (#165) * fix(sketchybar): drop the aerospace leftovers and the stale brew service label aerospace was removed in #125 but the sketchybar helpers still called /opt/homebrew/bin/aerospace. wm.sh fell back to that binary whenever OmniWM was not running, so instead of failing it quietly returned nothing and the bar went blank; refresh-displays.sh depended on it outright and could not work at all. Also two labels that #161 invalidated: `just restart sketchybar` and app_guard's restart command still pointed at homebrew.mxcl.sketchybar, which no longer exists now that the agent is org.nix-community.home.sketchybar. Puddle is added to the app_guard list — it had silently not been running, which is exactly what that list is for. Kept as-is: the aerospace_workspace_change event name, the AEROSPACE_* env vars and /tmp/sketchybar-aero-display.map. They are consistent between the firing side and the reading side, so renaming changes no behaviour and only widens the diff. * refactor(sketchybar): rename the aerospace-era identifiers to omniwm Event aerospace_workspace_change -> omniwm_workspace_change, AEROSPACE_* -> OMNIWM_*, /tmp/sketchybar-aero-display.map -> sketchybar-omniwm-display.map. Both the firing side (omniwm-event.sh) and every reading side are renamed in the same commit; a half rename would leave the event reaching nobody.
gapul
added a commit
that referenced
this pull request
Aug 8, 2026
* fix(sketchybar): drop the aerospace leftovers and the stale brew service label aerospace was removed in #125 but the sketchybar helpers still called /opt/homebrew/bin/aerospace. wm.sh fell back to that binary whenever OmniWM was not running, so instead of failing it quietly returned nothing and the bar went blank; refresh-displays.sh depended on it outright and could not work at all. Also two labels that #161 invalidated: `just restart sketchybar` and app_guard's restart command still pointed at homebrew.mxcl.sketchybar, which no longer exists now that the agent is org.nix-community.home.sketchybar. Puddle is added to the app_guard list — it had silently not been running, which is exactly what that list is for. Kept as-is: the aerospace_workspace_change event name, the AEROSPACE_* env vars and /tmp/sketchybar-aero-display.map. They are consistent between the firing side and the reading side, so renaming changes no behaviour and only widens the diff. * refactor(sketchybar): rename the aerospace-era identifiers to omniwm Event aerospace_workspace_change -> omniwm_workspace_change, AEROSPACE_* -> OMNIWM_*, /tmp/sketchybar-aero-display.map -> sketchybar-omniwm-display.map. Both the firing side (omniwm-event.sh) and every reading side are renamed in the same commit; a half rename would leave the event reaching nobody. * chore(wallpaper): drop the HTML/JS wallpapers, keep only Metal Puddle renders the .metal shaders natively — lsof shows it holding globe.metal open with the Metal shader caches, and it sits at ~1% CPU, which an HTML canvas polling state.js every 300ms would not. The six .html files and system-theme.js were left over from the WebView era and nothing reads them. With them go the state.js writer in omniwm-event.sh (a gitignored file inside the repo that the WM rewrote on every workspace switch) and its .gitignore entry. Workspace linkage now runs solely through the inputs files that the Metal contract reads. Puddle's own websites list still holds four file:// entries pointing at the deleted HTML. They are app-side state, not rendered, and harmless; clear them from Puddle's settings when convenient.
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.
概要
OmniWM トライアルを終了し、aerospace を撤去して OmniWM を正式な WM にする。
aerospace+nikitabobko/tapを削除(rebuild で cleanup=uninstall が効いてアンインストールされる)org.nix-community.home.borders→ bordersrc 実行) に移行。手書きの legacycom.felixkratz.borders.plist(旧カラーハードコード)は activation で bootout + 削除just wmトグルは削除(just restart omniwmに集約)configs/wm/aerospace/(aerospace.toml + aerolog.sh)とscripts/aerospace-config.shキーバインド(コミット外・ランタイム設定)
~/.config/omniwm/settings.toml(app-managed、nix 非管理)の hotkey を aerospace の hyper 帯 (Cmd+Ctrl+Alt) に揃えた。focus/move の HJKL・workspace 1-9・back-and-forth (Tab)・fullscreen (F)・float (V)・monitor (N/M)・resize (-/=)・balance (Shift+=)・split (\) を移植し、Hyper+2 切替 → Hyper+Tab 復帰を実機で動作確認済み。検証
nix eval .#darwinConfigurations.{gapul,macmini}.system.drvPath通過just rebuildで aerospace アンインストール + borders agent 常駐が適用される