From 3adb5f5b881ece6e70a79a017631c8fddbf04ae9 Mon Sep 17 00:00:00 2001 From: david Date: Mon, 3 Feb 2025 01:42:38 -0600 Subject: [PATCH] Add initial config and install for macos window manager --- installs_and_builds/s06_window_manager | 13 ++++++++-- src_files/.config/skhd/skhdrc | 34 +++++++++++++++++++++++++ src_files/.config/yabai/yabairc | 35 ++++++++++++++++++++++++++ 3 files changed, 80 insertions(+), 2 deletions(-) create mode 100755 src_files/.config/skhd/skhdrc create mode 100755 src_files/.config/yabai/yabairc diff --git a/installs_and_builds/s06_window_manager b/installs_and_builds/s06_window_manager index 659ec7d..d3e9f20 100755 --- a/installs_and_builds/s06_window_manager +++ b/installs_and_builds/s06_window_manager @@ -1,4 +1,13 @@ #!/bin/zsh -# TODO: pick wm; linux options: dwm, i3, others? macos options: yabai, others? -# ${=BOX_SETUP_INSTALL_COMMAND} zxcv-placeholder +local linux_wm_and_utils() { + # TODO: pick wm for linux; options: dwm, i3, others? + echo "linux_wm_and_utils not yet implemented" +} + +local macos_wm_and_utils() { + brew install koekeishiya/formulae/yabai + brew install koekeishiya/formulae/skhd +} + +[[ "$BOX_SETUP_OS" = "macos" ]] && macos_wm_and_utils || linux_wm_and_utils diff --git a/src_files/.config/skhd/skhdrc b/src_files/.config/skhd/skhdrc new file mode 100755 index 0000000..e2367b2 --- /dev/null +++ b/src_files/.config/skhd/skhdrc @@ -0,0 +1,34 @@ +# staring file was at /opt/homebrew/opt/yabai/share/yabai/examples +# list of built-in keywords at https://github.com/koekeishiya/skhd/issues/1 + +# in managed mode: swap current window +shift + cmd - k : yabai -m window --swap north +shift + cmd - j : yabai -m window --swap south +shift + cmd - h : yabai -m window --swap west +shift + cmd - l : yabai -m window --swap east + +# move focused window to the given space +shift + cmd - 1 : yabai -m window --space 1 +shift + cmd - 2 : yabai -m window --space 2 +shift + cmd - 3 : yabai -m window --space 3 +shift + cmd - 4 : yabai -m window --space 4 +shift + cmd - 5 : yabai -m window --space 5 +shift + cmd - 6 : yabai -m window --space 6 +shift + cmd - 7 : yabai -m window --space 7 +shift + cmd - 8 : yabai -m window --space 8 +shift + cmd - 9 : yabai -m window --space 9 + +# balance window sizes +shift + cmd - 0 : yabai -m space --balance +# all windows in a space back to the grid (managed) +shift + cmd - g : yabai -m space --layout bsp +# all windows in a space to float and each fill screen +shift + cmd - f : yabai -m space --layout float \ + | yabai -m query --windows --space \ + | jq '.[].id' \ + | xargs -I % yabai -m window % --grid 1:1:0:0:1:1 + +# focus on next/previous window +shift + cmd - n : yabai -m window --focus next +shift + cmd - p : yabai -m window --focus prev + diff --git a/src_files/.config/yabai/yabairc b/src_files/.config/yabai/yabairc new file mode 100755 index 0000000..7060454 --- /dev/null +++ b/src_files/.config/yabai/yabairc @@ -0,0 +1,35 @@ +#!/usr/bin/env sh + +# global settings +yabai -m config \ + external_bar off:40:0 \ + menubar_opacity 1.0 \ + mouse_follows_focus off \ + focus_follows_mouse off \ + display_arrangement_order default \ + window_origin_display default \ + window_placement second_child \ + window_insertion_point focused \ + 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 off \ + insert_feedback_color 0xffd75f5f \ + split_ratio 0.70 \ + split_type auto \ + auto_balance off \ + top_padding 00 \ + bottom_padding 00 \ + left_padding 00 \ + right_padding 00 \ + window_gap 00 \ + layout bsp \ + mouse_modifier fn \ + mouse_action1 move \ + mouse_action2 resize \ + mouse_drop_action swap +