lcat
My personal /var/log
  • Home
  • Contact
  • HackMe!

Mencoba pengalaman tiling WM di MacOS dengan Aerospace

Awalnya saya sangat semangat untuk mencoba melakukan segala hal 'the Mac way'. Ini saya lakukan karena saya tidak ingin pengalaman pertama saya dengan MacOS menjadi tidak alami karena terlalu banyak tweaks. Saya coba menggunakan Stage Manager, mencoba menghafalkan gesture-gesture Mac, dan juga mencoba membiasakan diri dengan motion/animasi ketika harus buka Mission Control atau switch desktop.

Sekitar satu bulan saya rasa cukup untuk mencoba pengalaman 'pure macOS'. Akhirnya, setelah konsultasi singkat dengan teman saya yang sudah setup [Aerospace](https://github.com/nikitabobko/AeroSpace), king sahruldotid, saya jadi semakin yakin untuk ikut mencobanya. Sudah dua hari sejak saya memutuskan untuk menginstall Aerospace. Karena masih sangat awal, saya bisa menyebut di sini semua pengaturan yang saya lakukan:

1. Aerospace keymapping default, kecuali mod key yang digantikan ke Hyper (cmd+option+control) karena saya perlu Option key untuk tetap berfungsi Meta di Terminal
2. Saya juga pasang [Karabiner-Elements](https://karabiner-elements.pqrs.org/) untuk memetakan ulang Caps Lock menjadi combo Hyper key.
3. Tambahkan Cmd+Enter untuk membuka Alacritty dengan tmux di current workspace

Sepertinya hanya itu saja. Sejauh ini, saya merasa sangat nyaman karena keybindingnya banyak yang mirip dengan i3wm saya. Hal yang paling sulit adalah membiasakan diri dengan Caps Lock sebagai mod key. Selebihnya, sepertinya saya akan betah dengan setup ini.

Selamat rehat.


Script saya untuk run terminal (Alacritty):

```bash
#!/bin/bash

tmux_session_name="main"

if [ "$(uname)" = "Darwin" ]; then  # workaround for disabled alacritty casked homebrew
        PATH=$PATH:/Applications/Alacritty.app/Contents/MacOS/
fi

term_in_desktop() {
        if [ "$(uname)" = "Darwin" ]; then
                aerospace list-windows --workspace focused | awk '/Alacritty/ { print $1 }'
        else
                active_desktop="$(wmctrl -d | awk '/*/ { print $1 }')"
                wmctrl -lx | awk '$3~/Alacritty.Alacritty/ && $2=="'"$active_desktop"'" { print $1 }'
        fi
}

spawn_term_in_current_ws() {
        tmux detach -s "$tmux_session_name"
        alacritty -e tmux new -A -s "$tmux_session_name"
}

focus_term_in_current_ws() {
        window_id="$1"
        if [ "$(uname)" = "Darwin" ]; then
                aerospace focus --window-id "$window_id"
        else
                wmctrl -i -a "$window_id"
        fi

}

window_id="$(term_in_desktop)"
if [ -z "$window_id" ]; then
        spawn_term_in_current_ws "$window_id"
else
        focus_term_in_current_ws "$window_id"
fi

```
Created: 2026-09-10 16:36:04, Updated: 2026-09-11 02:20:40, ID: 6b55eca9-f1dd-45d3-82a9-0661704df2de