feat(yabai): update

Add 10th workspace
Add `get_menu_bar_height` objc program
This commit is contained in:
reo101 2023-09-06 22:04:41 +03:00
parent 22ccaedc94
commit 26cafb1599
Signed by: reo101
GPG key ID: 675AA7EF13964ACB
7 changed files with 148 additions and 45 deletions

View file

@ -35,7 +35,7 @@ in
extraPackages = with pkgs; [ extraPackages = with pkgs; [
jq jq
]; ];
config = import ./sketchybar; config = import ./sketchybar pkgs;
}; };
}; };

View file

@ -1,8 +1,28 @@
# TODO: AppleSelectedInputSourcesChangedNotification
{ lib, darwin, ... }:
let let
plugin_dir = ./plugins; plugin_dir = ./plugins;
util_dir = ./utils;
get_menu_bar_height = darwin.apple_sdk.stdenv.mkDerivation {
name = "get_menu_bar_height";
version = "0.0.1";
src = lib.cleanSource ./get_menu_bar_height;
buildInputs = with darwin.apple_sdk.frameworks; [
Cocoa
];
buildPhase = ''
clang -framework cocoa get_menu_bar_height.m -o get_menu_bar_height
'';
installPhase = ''
mkdir -p $out/bin
mv get_menu_bar_height $out/bin/get_menu_bar_height
'';
};
in in
'' ''
PLUGIN_DIR="${plugin_dir}" export PLUGIN_DIR="${plugin_dir}"
export UTIL_DIR="${util_dir}"
##### Bar Appearance ##### ##### Bar Appearance #####
BACKGROUND_COLOR="0x502a2d3d" BACKGROUND_COLOR="0x502a2d3d"
@ -13,6 +33,8 @@ if [[ ''$''\{appearance''\} != 'Dark' ]]; then
BACKGROUND_COLOR="0x50f5f0f5" BACKGROUND_COLOR="0x50f5f0f5"
fi fi
height=''$''\(${get_menu_bar_height}/bin/get_menu_bar_height''\)
sketchybar --bar height="32" \ sketchybar --bar height="32" \
blur_radius="25" \ blur_radius="25" \
position="top" \ position="top" \
@ -96,20 +118,7 @@ sketchybar --add item space_separator left \
# volume is registered. More info about the event system can be found here: # volume is registered. More info about the event system can be found here:
# https://felixkratz.github.io/SketchyBar/config/events # https://felixkratz.github.io/SketchyBar/config/events
sketchybar --add item test right \ sketchybar --add item clock right i \
--set test script="''$''\{PLUGIN_DIR''\}/theme.sh" \
icon="􀝦" \
background.height="30" \
background.color="''$''\{BACKGROUND_COLOR''\}" \
background.corner_radius="7" \
icon.padding_left="10" \
icon.padding_right="13" \
blur_radius="30" \
background.border_color="0x80c4a7e7" \
background.border_width="1" \
label.drawing="off" \
click_script="~/.dotfiles/macos/wallpapers.zsh" \
--add item clock right i \
--set clock update_freq="10" \ --set clock update_freq="10" \
icon="􀐬" \ icon="􀐬" \
background.color="''$''\{BACKGROUND_COLOR''\}" \ background.color="''$''\{BACKGROUND_COLOR''\}" \

View file

@ -0,0 +1,21 @@
#import <Cocoa/Cocoa.h>
int main() {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSRect screenRect = [[NSScreen mainScreen] frame];
NSRect visibleRect = [[NSScreen mainScreen] visibleFrame];
// Show the menu bar temporarily to get its height
[NSMenu setMenuBarVisible:YES];
CGFloat menuBarHeight = screenRect.size.height - visibleRect.size.height;
printf("%d\n", (int) menuBarHeight);
// Hide the menu bar again
[NSMenu setMenuBarVisible:NO];
[pool drain];
return 0;
}
// vim: ft=objc :

View file

@ -1,34 +1,77 @@
#!/bin/sh #!/usr/bin/env bash
PERCENTAGE=$(pmset -g batt | grep -Eo "\d+%" | cut -d% -f1) source "${UTIL_DIR}/colors.sh"
BATT_PERCENT=$(pmset -g batt | grep -Eo "\d+%" | cut -d% -f1)
CHARGING=$(pmset -g batt | grep 'AC Power') CHARGING=$(pmset -g batt | grep 'AC Power')
if [ ${PERCENTAGE} = "" ]; then sketchybar --set "${NAME}" icon.color=0xff989898
exit 0
fi
case ${PERCENTAGE} in
9[0-9]|100)
ICON="􀛨"
;;
[6-8][0-9])
ICON="􀺸"
;;
[3-5][0-9])
ICON="􀛩"
;;
[1-2][0-9])
ICON="􀛩"
;;
*)
ICON="􀛪"
;;
esac
if [ ${CHARGING} != "" ]; then if [ ${CHARGING} != "" ]; then
ICON="􀢋" case ${BATT_PERCENT} in
fi 100)
ICON=""
COLOR="${GREEN}"
;;
9[0-9])
ICON=""
COLOR="${GREEN}"
;;
8[0-9])
ICON=""
COLOR="${GREEN}"
;;
7[0-9])
ICON=""
COLOR="${GREEN}"
;;
6[0-9])
ICON=""
COLOR="${YELLOW}"
;;
5[0-9])
ICON=""
COLOR="${YELLOW}"
;;
4[0-9])
ICON=""
COLOR="${ORANGE}"
;;
3[0-9])
ICON=""
COLOR="${ORANGE}"
;;
2[0-9])
ICON=""
COLOR="${RED}"
;;
1[0-9])
ICON=""
COLOR="${RED}"
;;
*)
ICON=""
COLOR="${RED}"
;;
esac
# The item invoking this script (name ${NAME}) will get its icon and label sketchybar --set "${NAME}" icon="${ICON}" icon.color="${COLOR}"
# updated with the current battery status sketchybar --set "${NAME}" label="${BATT_PERCENT}%"
sketchybar --set ${NAME} icon="${ICON}" label="${PERCENTAGE}%" else
case ${BATT_PERCENT} in
100) ICON="" COLOR="$GREEN" ;;
9[0-9]) ICON="" COLOR="$GREEN" ;;
8[0-9]) ICON="" COLOR="$GREEN" ;;
7[0-9]) ICON="" COLOR="$GREEN" ;;
6[0-9]) ICON="" COLOR="$YELLOW" ;;
5[0-9]) ICON="" COLOR="$YELLOW" ;;
4[0-9]) ICON="" COLOR="$ORANGE" ;;
3[0-9]) ICON="" COLOR="$ORANGE" ;;
2[0-9]) ICON="" COLOR="$RED" ;;
1[0-9]) ICON="" COLOR="$RED" ;;
*) ICON="" COLOR="$RED" ;;
esac
sketchybar --set "${NAME}" icon="${ICON}" icon.color="${COLOR}"
sketchybar --set "${NAME}" label="${BATT_PERCENT}%"
fi

View file

@ -0,0 +1,26 @@
#!/usr/bin/env bash
# Color Palette
export BLACK=0xff181926
export WHITE=0xffcad3f5
export RED=0xffed8796
export GREEN=0xffa6da95
export BLUE=0xff8aadf4
export YELLOW=0xffeed49f
export ORANGE=0xfff5a97f
export MAGENTA=0xffc6a0f6
export GREY=0xff939ab7
export TRANSPARENT=0x00000000
# General bar colors
export BAR_COLOR=0xff1e1e2e
export BAR_BORDER_COLOR=0xff494d64 #0xa024273a
export ICON_COLOR=$WHITE # Color of all icons
export LABEL_COLOR=$WHITE # Color of all labels
export BACKGROUND_1=0x603c3e4f
export BACKGROUND_2=0x60494d64
export POPUP_BACKGROUND_COLOR=0xff1e1e2e
export POPUP_BORDER_COLOR=$WHITE
export SHADOW_COLOR=$BLACK

View file

@ -22,6 +22,7 @@ cmd - 6 : yabai -m space --focus 6
cmd - 7 : yabai -m space --focus 7 cmd - 7 : yabai -m space --focus 7
cmd - 8 : yabai -m space --focus 8 cmd - 8 : yabai -m space --focus 8
cmd - 9 : yabai -m space --focus 9 cmd - 9 : yabai -m space --focus 9
cmd - 0 : yabai -m space --focus 10
cmd - tab : yabai -m space --focus recent cmd - tab : yabai -m space --focus recent
# cmd - ; : yabai -m space --focus next # cmd - ; : yabai -m space --focus next
@ -44,6 +45,7 @@ shift + cmd - 6 : yabai -m window --space 6; sketchybar --trigger windows_on_spa
shift + cmd - 7 : yabai -m window --space 7; sketchybar --trigger windows_on_spaces shift + cmd - 7 : yabai -m window --space 7; sketchybar --trigger windows_on_spaces
shift + cmd - 8 : yabai -m window --space 8; sketchybar --trigger windows_on_spaces shift + cmd - 8 : yabai -m window --space 8; sketchybar --trigger windows_on_spaces
shift + cmd - 9 : yabai -m window --space 9; sketchybar --trigger windows_on_spaces shift + cmd - 9 : yabai -m window --space 9; sketchybar --trigger windows_on_spaces
shift + cmd - 0 : yabai -m window --space 0; sketchybar --trigger windows_on_spaces
# Move focus container to workspace # Move focus container to workspace
shift + alt - m : yabai -m window --space last; yabai -m space --focus last; sketchybar --trigger windows_on_spaces shift + alt - m : yabai -m window --space last; yabai -m space --focus last; sketchybar --trigger windows_on_spaces
@ -58,6 +60,7 @@ shift + alt - 6 : yabai -m window --space 6; yabai -m space --focus 6; sketchyba
shift + alt - 7 : yabai -m window --space 7; yabai -m space --focus 7; sketchybar --trigger windows_on_spaces shift + alt - 7 : yabai -m window --space 7; yabai -m space --focus 7; sketchybar --trigger windows_on_spaces
shift + alt - 8 : yabai -m window --space 8; yabai -m space --focus 8; sketchybar --trigger windows_on_spaces shift + alt - 8 : yabai -m window --space 8; yabai -m space --focus 8; sketchybar --trigger windows_on_spaces
shift + alt - 9 : yabai -m window --space 9; yabai -m space --focus 9; sketchybar --trigger windows_on_spaces shift + alt - 9 : yabai -m window --space 9; yabai -m space --focus 9; sketchybar --trigger windows_on_spaces
shift + alt - 0 : yabai -m window --space 0; yabai -m space --focus 9; sketchybar --trigger windows_on_spaces
# Resize windows # Resize windows
lctrl + alt - h : yabai -m window --resize left:-50:0; \ lctrl + alt - h : yabai -m window --resize left:-50:0; \

View file

@ -12,6 +12,7 @@ yabai -m signal --add event=window_created action="sketchybar --trigger windows_
yabai -m signal --add event=window_destroyed action="sketchybar --trigger windows_on_spaces" yabai -m signal --add event=window_destroyed action="sketchybar --trigger windows_on_spaces"
yabai -m signal --add event=window_destroyed action="yabai -m query --windows --window &> /dev/null || yabai -m window --focus mouse" yabai -m signal --add event=window_destroyed action="yabai -m query --windows --window &> /dev/null || yabai -m window --focus mouse"
yabai -m signal --add event=application_terminated action="yabai -m query --windows --window &> /dev/null || yabai -m window --focus mouse" yabai -m signal --add event=application_terminated action="yabai -m query --windows --window &> /dev/null || yabai -m window --focus mouse"
yabai -m signal --add event=display_resized action="launchctl stop org.nixos.sketchybar && launchctl start org.nixos.sketchybar"
# { # {
# DESIRED_SPACES_PER_DISPLAY=4 # DESIRED_SPACES_PER_DISPLAY=4
@ -44,7 +45,7 @@ yabai -m signal --add event=application_terminated action="yabai -m query --wind
yabai -m config "external_bar" "all:49:0" \ yabai -m config "external_bar" "all:49:0" \
"window_border" "on" \ "window_border" "on" \
"mouse_follows_focus" "off" \ "mouse_follows_focus" "off" \
"focus_follows_mouse" "autoraise" \ "focus_follows_mouse" "off" \
"window_zoom_persist" "off" \ "window_zoom_persist" "off" \
"window_placement" "second_child" \ "window_placement" "second_child" \
"window_topmost" "off" \ "window_topmost" "off" \