Are you using all the real-estate that screen has to offer ?
Do you want your screen to look from this mess
To this fully utilized clutter free
I am sure people who have used i3 know the importance of managing screen real-estate to its otmost potential. While i3 is a great tiling window manager of Linux and is really great for managing your workspaces.
The basic idea is that you should be using all the real-estate your desktop has to offer, all the time.
In principle, whenever you run a program, it should take all of the screen, and if you open another program, screen space should be cut in half, so that both programs will take half. You can continue this as much as you can and as much you find it suitable.
While mac does not support i3, there are tools which you can use to replicate that. These tools are called:
Yabai is a good application that allows you to do tiling and manage window sizing. The main function of yabai is to manage your tiling window, automatically modify your window layout using binary space partitioning algoritgh.
skhd is a simple hot key daeomon for macOS that create keyboard shortcuts. Like alt + W will create a new window.
It is really simple.
Some tutorial will ask you to disable system integrity protection, you can just ignore that. I have been doing the same, and has not affected me a bit.
download and install brew if you do not have
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
brew install koekeishiya/formulae/yabai
Start yabai service
brew services start yabai
It will then ask you to allow yabai accessibility permission. Go to your security and privacy > Privacy > Accessibility and allow yabai access by checking it.
To install skhd just run
brew install koekeishiya/formulae/skhd
Start skhd service
brew services start skhd
This is alos ask you security permission to allow skhd accessibility permission. Go to your security and privacy > Privacy > Accessibility and allow skhd access by checking it.
Once you are done with that, now we need to configure it.
follow this command
touch ~/.yabairc chmod +x ~/.yabairc
Add following code to .yabairc file
#!/usr/bin/env sh # the scripting-addition must be loaded manually if # you are running yabai on macOS Big Sur. Uncomment # the following line to have the injection performed # when the config is executed during startup. # # for this to work you must configure sudo such that # it will be able to run the command without password # # see this wiki page for information: # - https://github.com/koekeishiya/yabai/wiki/Installing-yabai-(latest-release) # # sudo yabai --load-sa # yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa" # global settings yabai -m config mouse_follows_focus off yabai -m config focus_follows_mouse off yabai -m config window_placement second_child yabai -m config window_topmost off yabai -m config window_shadow on yabai -m config window_opacity off yabai -m config window_opacity_duration 0.0 yabai -m config active_window_opacity 1.0 yabai -m config normal_window_opacity 0.90 yabai -m config window_border off yabai -m config window_border_width 6 yabai -m config active_window_border_color 0xff775759 yabai -m config normal_window_border_color 0xff555555 yabai -m config insert_feedback_color 0xffd75f5f yabai -m config split_ratio 0.50 yabai -m config auto_balance off yabai -m config mouse_modifier fn yabai -m config mouse_action1 move yabai -m config mouse_action2 resize yabai -m config mouse_drop_action swap # general space settings yabai -m config layout bsp yabai -m config top_padding 12 yabai -m config bottom_padding 12 yabai -m config left_padding 12 yabai -m config right_padding 12 yabai -m config window_gap 06 echo "yabai configuration loaded.."
touch ~/.skhdrc chmod +x ~/.skhdrc
Add following code to the .skhdrc file
# Navigation 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 # Moving windows shift + alt - h : yabai -m window --warp west shift + alt - j : yabai -m window --warp south shift + alt - k : yabai -m window --warp north shift + alt - l : yabai -m window --warp east # Make window native fullscreen alt - f : yabai -m window --toggle zoom-fullscreen shift + alt - f : yabai -m window --toggle native-fullscreen # toggle window split type alt - e : yabai -m window --toggle split # Move focus container to workspace shift + alt - m : yabai -m window --space last && yabai -m space --focus last shift + alt - p : yabai -m window --space prev && yabai -m space --focus prev shift + alt - n : yabai -m window --space next && yabai -m space --focus next shift + alt - 1 : yabai -m window --space 1 && yabai -m space --focus 1 shift + alt - 2 : yabai -m window --space 2 && yabai -m space --focus 2 shift + alt - 3 : yabai -m window --space 3 && yabai -m space --focus 3 shift + alt - 4 : yabai -m window --space 4 && yabai -m space --focus 4 shift + alt - 5 : yabai -m window --space 5 && yabai -m space --focus 5 shift + alt - 6 : yabai -m window --space 6 && yabai -m space --focus 6 # Kill a container shift + alt - q : yabai -m window --close # Float or unfloat a window shift + alt - space : yabai -m window --toggle float
Restart yabai and skhd
brew services restart skhd brew services restart yabai
Now you are ready to properly use all of you screen tiles. Do not worry, it will take some time to get hang of it, but after one two days you will get used to it.