macでシゴトする環境を整える軌跡
why
いままで自分のマシン(Windows)をBYODで使ってたんだけど、ISMSだなんだっていうカイシャっぽい色々が出てきたので、この際ちゃんと貸与マシン(mac)を活用してみよう、というモチベーション
なるべく、Windows(WSL)で使ってた資産をそのまま活用したいので、macらしさは薄めの構成になるかも
以下の方針で進める。
- 設定ファイルを共有したいので、なるべくWindows + WSL環境と合わせる
- タイル型のウィンドウマネージャにしたい
- Windowsでも GlazeWM なので同じ感じにしたい
とりあえず最低限
必要なアプリを入れる
- Chrome
- syncthing: 自宅NASとつないでSSH configとかの同期
- 1password 8: SSH鍵の保管場所
- Alacritty: Windowsと設定ファイル共存させたかったので
SSH関連の設定
- この設定 を参考にさせていただいてすんなり動いた
ターミナルの環境を整える
以下あたりを、brewやらなにやらでインストール。
dotfileはgit管理しているやつを持ってきていれたら、わりとすんなり動いた。
- zsh
- tmux
- nvim
- asdf
- aws cli
- ruby
- node
- direnv
タイル型WM
選定
色々調べた感じ AeroSpace と yabai が良さげ。
Windowsでの環境が GlazeWM なので、構成が近いyabaiを採用。
Disabling System Integrity Protection
色々オフらないと便利に使えないよ、ってことらしいので手順通りオフにする
Install yabai
こちらの記事 を参考にインストール
scripting additionを有効にするためにsudoersを書かないといけないらしい
1ライナー
echo "$(whoami) ALL=(root) NOPASSWD: sha256:$(shasum -a 256 $(which yabai) | cut -d " " -f 1) $(which yabai) --load-sa" | sudo tee /private/etc/sudoers.d/yabai
これ、OSアプデしたときとかにもやらなあかん予感。
setting yabai
~/.config/yabai/yabairc
#!/usr/bin/env sh
yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa"
sudo yabai --load-sa
# global settings
yabai -m config \
external_bar off:40:0 \
menubar_opacity 0.9 \
mouse_follows_focus on \
focus_follows_mouse off \
display_arrangement_order default \
window_origin_display default \
window_placement second_child \
window_zoom_persist on \
window_shadow on \
window_animation_duration 0.0 \
window_animation_easing ease_out_circ \
window_opacity_duration 0.0 \
active_window_opacity 1.0 \
normal_window_opacity 0.90 \
window_opacity on \
active_window_opacity 1.0 \
normal_window_opacity 0.98 \
insert_feedback_color 0xffd75f5f \
split_ratio 0.50 \
split_type auto \
auto_balance off \
top_padding 20 \
bottom_padding 20 \
left_padding 20 \
right_padding 20 \
window_gap 20 \
layout bsp \
window_border on \
window_border_width 4 \
mouse_modifier fn \
mouse_action1 move \
mouse_action2 resize \
mouse_drop_action swap \
external_bar all:40:0
###########################################################################################################
# Spaces
###########################################################################################################
for _ in $(yabai -m query --spaces | jq '.[].index | select(. > 6)'); do
yabai -m space --destroy 7
done
function setup_space {
local idx="$1"
local name="$2"
local space=
echo "setup space $idx : $name"
space=$(yabai -m query --spaces --space "$idx")
if [ -z "$space" ]; then
yabai -m space --create
fi
yabai -m space "$idx" --label "$name"
}
setup_space 1 primary
setup_space 2 secondary
setup_space 3 tertiary
setup_space 4 office
setup_space 5 meeting
setup_space 6 other
###########################################################################################################
# Rules
###########################################################################################################
# specify space
yabai -m rule --add app="^ovice$" space=4
yabai -m rule --add app="^Slack$" space=4
yabai -m rule --add app="^zoom.us$" space=5
# not manage in yabai
yabai -m rule --add app="^システム設定$" manage=off
yabai -m rule --add app="^krisp$" manage=off
# sticky
yabai -m rule --add app="^アクティビティモニタ$" sticky=on
echo "yabai configuration loaded.."
~/.config/skhd/skhdrc
# focus
alt - h : yabai -m window --focus west
alt - j : yabai -m window --focus south
alt - k : yabai -m window --focus north
alt - l : yabai -m window --focus east
# swap
shift + alt - h : yabai -m window --swap west
shift + alt - j : yabai -m window --swap south
shift + alt - k : yabai -m window --swap north
shift + alt - l : yabai -m window --swap east
# workspace
alt - 1 : yabai -m space --focus 1
alt - 2 : yabai -m space --focus 2
alt - 3 : yabai -m space --focus 3
alt - q : yabai -m space --focus 4
alt - w : yabai -m space --focus 5
alt - e : yabai -m space --focus 6
# move workspace
shift + alt - 1 : yabai -m window --space 1; yabai -m space --focus 1; yabai -m window --focus last
shift + alt - 2 : yabai -m window --space 2; yabai -m space --focus 2; yabai -m window --focus last
shift + alt - 3 : yabai -m window --space 3; yabai -m space --focus 3; yabai -m window --focus last
shift + alt - q : yabai -m window --space 4; yabai -m space --focus 4; yabai -m window --focus last
shift + alt - w : yabai -m window --space 5; yabai -m space --focus 5; yabai -m window --focus last
shift + alt - e : yabai -m window --space 6; yabai -m space --focus 6; yabai -m window --focus last
Option + Q 押すつもりで、Cmd + Q押す悲劇が多発
Workspaceの移動の運指を Option + 1,2,3,q,w,e にしてみたが、間違えて Cmd + Qを押しまくる。
こちらの記事 を参考に Cmd + Q, Cmd + Hを無効化(というか無力化)してみた
追記
skhdでcmd + qを無効化するほうがキレイそうなので、そんな感じにしてみた。# kill window
cmd + shift - q : kill $(yabai -m query --windows --window | jq .pid)
# disable cmd + q / cmd + h
cmd - q : : "
cmd - h : : "
SketchyBar
yabaiを設定する過程で、SketchyBarなるものを知る。
GlazeWMとZebarの関係みたいな感じかなー
とりあえずセットアップ手順通り入れた。カスタマイズはまた今度考える。
標準のTopBarは常に隠すようにした。
yabaiの設定で完全にオフにすることもできるらしいけど、SketchyBarのカスタマイズがいい感じにいったら検討する。
JankyBorders
JankyBordersを見つける。
SketchyBarの作者さん。
ウィンドウに枠線をつけるやつ。
とりあえずyabaircに以下の設定をしてみる
###########################################################################################################
# JankyBorders
###########################################################################################################
borders active_color=0xffa9a9a9 width=8.0 &