• Stars
    star
    257
  • Rank 158,728 (Top 4 %)
  • Language
    Swift
  • License
    MIT License
  • Created almost 3 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

MacOS Menubar Applet for showing spaces and switching spaces easily

Yabai Indicator

Clickable spaces switcher powered by Yabai

screenshot

Shows a row clickable buttons for all workspaces including fullscreen applications

screenshot

Alternatively show miniature windows.

screenshot2

Also supports multiple displays (with separate spaces).

screenshot3

Fullscreen applications.

screenshot4

Compact mode.

Requirements

Yabai is required to be running for the space switching and keeping spaces information in sync and showing individual windows. In order for switching spaces by clicking to work correctly, you will need to disable SIP.

Installation

If you don't have yabai, install yabai (version 4.0.2 required) first: Official installation guide

Just download and unzip the latest release of YabaiIndicator from Releases and run. Now you should be able to see empty spaces for each desktop and clicking spaces should work.

In order to allow for showing windows and keeping the spaces in sync, when spaces are removed in mission control the following signals need to be added to your .yabairc:

yabai -m signal --add event=mission_control_exit action='echo "refresh" | nc -U /tmp/yabai-indicator.socket'
yabai -m signal --add event=display_added action='echo "refresh" | nc -U /tmp/yabai-indicator.socket'
yabai -m signal --add event=display_removed action='echo "refresh" | nc -U /tmp/yabai-indicator.socket'
yabai -m signal --add event=window_created action='echo "refresh windows" | nc -U /tmp/yabai-indicator.socket'
yabai -m signal --add event=window_destroyed action='echo "refresh windows" | nc -U /tmp/yabai-indicator.socket'
yabai -m signal --add event=window_focused action='echo "refresh windows" | nc -U /tmp/yabai-indicator.socket'
yabai -m signal --add event=window_moved action='echo "refresh windows" | nc -U /tmp/yabai-indicator.socket'
yabai -m signal --add event=window_resized action='echo "refresh windows" | nc -U /tmp/yabai-indicator.socket'
yabai -m signal --add event=window_minimized action='echo "refresh windows" | nc -U /tmp/yabai-indicator.socket'
yabai -m signal --add event=window_deminimized action='echo "refresh windows" | nc -U /tmp/yabai-indicator.socket'

If certain keybinds modify the spaces arrangement the following commands needs to be added to keep the indicator in sync:

echo "refresh" | nc -U /tmp/yabai-indicator.socket

This sends a refresh command to Yabai Indicator via a unix-domain socket.

Comparison to similar applications

SpaceId has some additonal configurability for presentation and also allows showing all active spaces on all displays. Switching between spaces is not implemented. As of 12/2021 it does not utilize Acessibility API for catching MissionControl invocation. It does not have a dependency on Yabai.

WhichSpace shows the current active Space in a single indicator. Does not allow for showing all spaces or all visible spaces on multiple displays.

More Repositories

1

libinput-touchscreen

Trigger commands based on touchscreen gestures from libinput events
C
10
star
2

flowCat

Classifying Flow Cytometry Data
Python
8
star
3

argmagic

Automatically argparse for a given function signature or dataclass
Python
6
star
4

python-baserow-simple

Simple baserow interface for retrieving and submitting data to a baserow database.
Python
5
star
5

eurkey

Eurokey layout
Makefile
4
star
6

python-yabai-client

Python library implementation of the yabai client for advanced scripting purposes.
Python
4
star
7

ipuma-lib

IPU Alignment library
C++
3
star
8

python-wooting-rgb

Python bindings for Wooting RGB SDK
Python
3
star
9

yabai-wooting

Advanced yabai wooting scripts
Python
3
star
10

iio-display

Automatically set display rotation and brightness based on sensor data
C
2
star
11

json-coder

Easy json read/write for complex python objects.
Python
2
star
12

Bitconnrekt

JavaScript
1
star
13

posvue

Web based POS system focused on simple sales.
Vue
1
star
14

pyIndexer

NSIS
1
star
15

netns-utils

Simple network namespace utilities
Shell
1
star
16

Configurations

Config files for various programs for more portability
Shell
1
star
17

FacenetEmbeddings

Simple wrapper around facenet to facilitate embedding generation from pretrained models
Python
1
star
18

elvish-pyvenv

Python virtualenv functions for elvish shell
1
star
19

python-word-filler

Fill Word documents with proper data separation using MS Office native functionality.
Python
1
star
20

ipuma

IPU Metagenome Assembly
C++
1
star
21

dev-base

Base container image for dev work
Dockerfile
1
star
22

bspwm-autonamer

Set desktop names based on started programs
Shell
1
star