diff options
| author | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2025-01-24 20:35:27 +0900 |
|---|---|---|
| committer | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2025-01-24 20:35:27 +0900 |
| commit | c80a54e42b52ce297f0f2f71af23c562832025c7 (patch) | |
| tree | dcce8bb977a770f473325d48f6f70b21d9818a40 /mac | |
init
Diffstat (limited to 'mac')
102 files changed, 9905 insertions, 0 deletions
diff --git a/mac/.config/borders/bordersrc b/mac/.config/borders/bordersrc new file mode 100644 index 0000000..d043d83 --- /dev/null +++ b/mac/.config/borders/bordersrc @@ -0,0 +1,12 @@ +#!/bin/bash + +options=( + style=square + width=6.0 + hidpi=on + active_color=0xff269043 + # active_color="gradient(top_left=0xffebeb99,bottom_right=0xfff57f17)" + inactive_color=0xff4b5356 +) + +borders "${options[@]}" diff --git a/mac/.config/karabiner/assets/complex_modifications/1700711318.json b/mac/.config/karabiner/assets/complex_modifications/1700711318.json new file mode 100644 index 0000000..970adb0 --- /dev/null +++ b/mac/.config/karabiner/assets/complex_modifications/1700711318.json @@ -0,0 +1,95 @@ +{ + "title": "fn twice -> change input source / fn hold -> iterm", + "author": "Ramiro Garcia (https://github.com/ranemirusG)", + "rules": [ + { + "description": "fn + ` -> iTerm", + "manipulators": [ + { + "type": "basic", + "from": { + "key_code": 53, + "modifiers": { "mandatory": ["fn"] } + }, + "to": [{ "shell_command": "open '/Applications/iTerm.app'" }] + } + ] + }, + { + "description": "Press twice fn to change input source & otherwise held_down and open iterm", + "manipulators": [ + { + "conditions": [ + { + "type": "variable_if", + "name": "fn pressed", + "value": 1 + } + ], + "type": "basic", + "from": { + "key_code": "fn", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "repeat": false, + "key_code": "spacebar", + "modifiers": ["left_control", "left_alt"], + "lazy": true + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "fn", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "set_variable": { + "name": "fn pressed", + "value": 1 + } + } + ], + "to_if_held_down": [ + { + "key_code": "fn" + } + ], + "parameters": { + "basic.to_if_held_down_threshold_milliseconds": 0 + }, + "to_delayed_action": { + "to_if_invoked": [ + { + "set_variable": { + "name": "fn pressed", + "value": 0 + } + } + ], + "to_if_canceled": [ + { + "set_variable": { + "name": "fn pressed", + "value": 0 + } + } + ] + } + } + ] + } + ] +} diff --git a/mac/.config/karabiner/assets/complex_modifications/1700983079.json b/mac/.config/karabiner/assets/complex_modifications/1700983079.json new file mode 100644 index 0000000..3bdfd01 --- /dev/null +++ b/mac/.config/karabiner/assets/complex_modifications/1700983079.json @@ -0,0 +1,62 @@ +{ + "title": "Use ctrl + hl to Switch Tabs in Chrome, Brave & Firefox", + "rules": [ + { + "description": "Use ctrl + hl to Switch Tabs in Chrome, Brave & Firefox", + "manipulators": [ + { + "type": "basic", + "from": { + "key_code": "h", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": ["command", "option"] + } + ], + "conditions": [ + { + "type": "frontmost_application_if", + "bundle_identifiers": [ + "^com.google.Chrome", + "^com.brave.Browser", + "^org.mozilla.firefox" + ] + } + ] + }, + { + "type": "basic", + "from": { + "key_code": "l", + "modifiers": { + "mandatory": ["control"], + "optional": ["any"] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": ["command", "option"] + } + ], + "conditions": [ + { + "type": "frontmost_application_if", + "bundle_identifiers": [ + "^com.google.Chrome", + "^com.brave.Browser", + "^org.mozilla.firefox" + ] + } + ] + } + ] + } + ] +} diff --git a/mac/.config/karabiner/assets/complex_modifications/1704627767.json b/mac/.config/karabiner/assets/complex_modifications/1704627767.json new file mode 100644 index 0000000..71909d1 --- /dev/null +++ b/mac/.config/karabiner/assets/complex_modifications/1704627767.json @@ -0,0 +1,20 @@ +{ + "title": "Prevent unintended command-h hide window (rev 2)", + "rules": [ + { + "description": "Disable Cmd+H Hide (rev 2)", + "manipulators": [ + { + "type": "basic", + "description": "", + "from": { + "key_code": "h", + "modifiers": { + "mandatory": ["command"] + } + } + } + ] + } + ] +} diff --git a/mac/.config/karabiner/assets/complex_modifications/1704850809.json b/mac/.config/karabiner/assets/complex_modifications/1704850809.json new file mode 100644 index 0000000..2f3271f --- /dev/null +++ b/mac/.config/karabiner/assets/complex_modifications/1704850809.json @@ -0,0 +1,25 @@ +{ + "title": "esc = ctrl + c", + "rules": [ + { + "description": "Control + c => Escape", + "manipulators": [ + { + "from": { + "key_code": "c", + "modifiers": { + "mandatory": ["control"], + "optional": ["caps_lock", "option"] + } + }, + "to": [ + { + "key_code": "escape" + } + ], + "type": "basic" + } + ] + } + ] +} diff --git a/mac/.config/karabiner/automatic_backups/karabiner_20231122.json b/mac/.config/karabiner/automatic_backups/karabiner_20231122.json new file mode 100644 index 0000000..ea801fd --- /dev/null +++ b/mac/.config/karabiner/automatic_backups/karabiner_20231122.json @@ -0,0 +1,200 @@ +{ + "global": { + "ask_for_confirmation_before_quitting": true, + "check_for_updates_on_startup": true, + "show_in_menu_bar": true, + "show_profile_name_in_menu_bar": false, + "unsafe_ui": false + }, + "profiles": [ + { + "complex_modifications": { + "parameters": { + "basic.simultaneous_threshold_milliseconds": 50, + "basic.to_delayed_action_delay_milliseconds": 500, + "basic.to_if_alone_timeout_milliseconds": 1000, + "basic.to_if_held_down_threshold_milliseconds": 500, + "mouse_motion_to_scroll.speed": 100 + }, + "rules": [] + }, + "devices": [ + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 34304, + "vendor_id": 1452 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + } + ], + "fn_function_keys": [ + { + "from": { + "key_code": "f1" + }, + "to": [ + { + "consumer_key_code": "display_brightness_decrement" + } + ] + }, + { + "from": { + "key_code": "f2" + }, + "to": [ + { + "consumer_key_code": "display_brightness_increment" + } + ] + }, + { + "from": { + "key_code": "f3" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "mission_control" + } + ] + }, + { + "from": { + "key_code": "f4" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "spotlight" + } + ] + }, + { + "from": { + "key_code": "f5" + }, + "to": [ + { + "consumer_key_code": "dictation" + } + ] + }, + { + "from": { + "key_code": "f6" + }, + "to": [ + { + "key_code": "f6" + } + ] + }, + { + "from": { + "key_code": "f7" + }, + "to": [ + { + "consumer_key_code": "rewind" + } + ] + }, + { + "from": { + "key_code": "f8" + }, + "to": [ + { + "consumer_key_code": "play_or_pause" + } + ] + }, + { + "from": { + "key_code": "f9" + }, + "to": [ + { + "consumer_key_code": "fast_forward" + } + ] + }, + { + "from": { + "key_code": "f10" + }, + "to": [ + { + "consumer_key_code": "mute" + } + ] + }, + { + "from": { + "key_code": "f11" + }, + "to": [ + { + "consumer_key_code": "volume_decrement" + } + ] + }, + { + "from": { + "key_code": "f12" + }, + "to": [ + { + "consumer_key_code": "volume_increment" + } + ] + } + ], + "name": "Default profile", + "parameters": { + "delay_milliseconds_before_open_device": 1000 + }, + "selected": true, + "simple_modifications": [], + "virtual_hid_keyboard": { + "country_code": 0, + "indicate_sticky_modifier_keys_state": true, + "mouse_key_xy_scale": 100 + } + } + ] +}
\ No newline at end of file diff --git a/mac/.config/karabiner/automatic_backups/karabiner_20231126.json b/mac/.config/karabiner/automatic_backups/karabiner_20231126.json new file mode 100644 index 0000000..62cc54f --- /dev/null +++ b/mac/.config/karabiner/automatic_backups/karabiner_20231126.json @@ -0,0 +1,393 @@ +{ + "global": { + "ask_for_confirmation_before_quitting": true, + "check_for_updates_on_startup": true, + "show_in_menu_bar": true, + "show_profile_name_in_menu_bar": false, + "unsafe_ui": false + }, + "profiles": [ + { + "complex_modifications": { + "parameters": { + "basic.simultaneous_threshold_milliseconds": 50, + "basic.to_delayed_action_delay_milliseconds": 500, + "basic.to_if_alone_timeout_milliseconds": 1000, + "basic.to_if_held_down_threshold_milliseconds": 500, + "mouse_motion_to_scroll.speed": 100 + }, + "rules": [ + { + "description": "Change right_command+hjkl to arrow keys", + "manipulators": [ + { + "from": { + "key_code": "h", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "j", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow" + } + ], + "type": "basic" + } + ] + }, + { + "description": "fn + ` -> iTerm", + "manipulators": [ + { + "from": { + "key_code": 53, + "modifiers": { + "mandatory": [ + "fn" + ] + } + }, + "to": [ + { + "shell_command": "open '/Applications/iTerm.app'" + } + ], + "type": "basic" + } + ] + }, + { + "description": "Press twice fn to change input source & otherwise held_down and open iterm", + "manipulators": [ + { + "conditions": [ + { + "name": "fn pressed", + "type": "variable_if", + "value": 1 + } + ], + "from": { + "key_code": "fn", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "lazy": true, + "modifiers": [ + "left_control", + "left_alt" + ], + "repeat": false + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "fn", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "parameters": { + "basic.to_if_held_down_threshold_milliseconds": 0 + }, + "to": [ + { + "set_variable": { + "name": "fn pressed", + "value": 1 + } + } + ], + "to_delayed_action": { + "to_if_canceled": [ + { + "set_variable": { + "name": "fn pressed", + "value": 0 + } + } + ], + "to_if_invoked": [ + { + "set_variable": { + "name": "fn pressed", + "value": 0 + } + } + ] + }, + "to_if_held_down": [ + { + "key_code": "fn" + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 34304, + "vendor_id": 1452 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + } + ], + "fn_function_keys": [ + { + "from": { + "key_code": "f1" + }, + "to": [ + { + "consumer_key_code": "display_brightness_decrement" + } + ] + }, + { + "from": { + "key_code": "f2" + }, + "to": [ + { + "consumer_key_code": "display_brightness_increment" + } + ] + }, + { + "from": { + "key_code": "f3" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "mission_control" + } + ] + }, + { + "from": { + "key_code": "f4" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "spotlight" + } + ] + }, + { + "from": { + "key_code": "f5" + }, + "to": [ + { + "consumer_key_code": "dictation" + } + ] + }, + { + "from": { + "key_code": "f6" + }, + "to": [ + { + "key_code": "f6" + } + ] + }, + { + "from": { + "key_code": "f7" + }, + "to": [ + { + "consumer_key_code": "rewind" + } + ] + }, + { + "from": { + "key_code": "f8" + }, + "to": [ + { + "consumer_key_code": "play_or_pause" + } + ] + }, + { + "from": { + "key_code": "f9" + }, + "to": [ + { + "consumer_key_code": "fast_forward" + } + ] + }, + { + "from": { + "key_code": "f10" + }, + "to": [ + { + "consumer_key_code": "mute" + } + ] + }, + { + "from": { + "key_code": "f11" + }, + "to": [ + { + "consumer_key_code": "volume_decrement" + } + ] + }, + { + "from": { + "key_code": "f12" + }, + "to": [ + { + "consumer_key_code": "volume_increment" + } + ] + } + ], + "name": "Default profile", + "parameters": { + "delay_milliseconds_before_open_device": 1000 + }, + "selected": true, + "simple_modifications": [ + { + "from": { + "key_code": "caps_lock" + }, + "to": [ + { + "key_code": "left_control" + } + ] + } + ], + "virtual_hid_keyboard": { + "country_code": 0, + "indicate_sticky_modifier_keys_state": true, + "mouse_key_xy_scale": 100 + } + } + ] +}
\ No newline at end of file diff --git a/mac/.config/karabiner/automatic_backups/karabiner_20231128.json b/mac/.config/karabiner/automatic_backups/karabiner_20231128.json new file mode 100644 index 0000000..7161b59 --- /dev/null +++ b/mac/.config/karabiner/automatic_backups/karabiner_20231128.json @@ -0,0 +1,464 @@ +{ + "global": { + "ask_for_confirmation_before_quitting": true, + "check_for_updates_on_startup": true, + "show_in_menu_bar": true, + "show_profile_name_in_menu_bar": false, + "unsafe_ui": false + }, + "profiles": [ + { + "complex_modifications": { + "parameters": { + "basic.simultaneous_threshold_milliseconds": 50, + "basic.to_delayed_action_delay_milliseconds": 500, + "basic.to_if_alone_timeout_milliseconds": 1000, + "basic.to_if_held_down_threshold_milliseconds": 500, + "mouse_motion_to_scroll.speed": 100 + }, + "rules": [ + { + "description": "Change right_command+hjkl to arrow keys", + "manipulators": [ + { + "from": { + "key_code": "h", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "j", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow" + } + ], + "type": "basic" + } + ] + }, + { + "description": "fn + ` -> iTerm", + "manipulators": [ + { + "from": { + "key_code": 53, + "modifiers": { + "mandatory": [ + "fn" + ] + } + }, + "to": [ + { + "shell_command": "open '/Applications/iTerm.app'" + } + ], + "type": "basic" + } + ] + }, + { + "description": "Press twice fn to change input source & otherwise held_down and open iterm", + "manipulators": [ + { + "conditions": [ + { + "name": "fn pressed", + "type": "variable_if", + "value": 1 + } + ], + "from": { + "key_code": "fn", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "lazy": true, + "modifiers": [ + "left_control", + "left_alt" + ], + "repeat": false + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "fn", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "parameters": { + "basic.to_if_held_down_threshold_milliseconds": 0 + }, + "to": [ + { + "set_variable": { + "name": "fn pressed", + "value": 1 + } + } + ], + "to_delayed_action": { + "to_if_canceled": [ + { + "set_variable": { + "name": "fn pressed", + "value": 0 + } + } + ], + "to_if_invoked": [ + { + "set_variable": { + "name": "fn pressed", + "value": 0 + } + } + ] + }, + "to_if_held_down": [ + { + "key_code": "fn" + } + ], + "type": "basic" + } + ] + }, + { + "description": "Use ctrl + hl to Switch Tabs in Chrome, Brave & Firefox", + "manipulators": [ + { + "conditions": [ + { + "bundle_identifiers": [ + "^com.google.Chrome", + "^com.brave.Browser", + "^org.mozilla.firefox" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "h", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow", + "modifiers": [ + "command", + "option" + ] + } + ], + "type": "basic" + }, + { + "conditions": [ + { + "bundle_identifiers": [ + "^com.google.Chrome", + "^com.brave.Browser", + "^org.mozilla.firefox" + ], + "type": "frontmost_application_if" + } + ], + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "control" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow", + "modifiers": [ + "command", + "option" + ] + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 34304, + "vendor_id": 1452 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + } + ], + "fn_function_keys": [ + { + "from": { + "key_code": "f1" + }, + "to": [ + { + "consumer_key_code": "display_brightness_decrement" + } + ] + }, + { + "from": { + "key_code": "f2" + }, + "to": [ + { + "consumer_key_code": "display_brightness_increment" + } + ] + }, + { + "from": { + "key_code": "f3" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "mission_control" + } + ] + }, + { + "from": { + "key_code": "f4" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "spotlight" + } + ] + }, + { + "from": { + "key_code": "f5" + }, + "to": [ + { + "consumer_key_code": "dictation" + } + ] + }, + { + "from": { + "key_code": "f6" + }, + "to": [ + { + "key_code": "f6" + } + ] + }, + { + "from": { + "key_code": "f7" + }, + "to": [ + { + "consumer_key_code": "rewind" + } + ] + }, + { + "from": { + "key_code": "f8" + }, + "to": [ + { + "consumer_key_code": "play_or_pause" + } + ] + }, + { + "from": { + "key_code": "f9" + }, + "to": [ + { + "consumer_key_code": "fast_forward" + } + ] + }, + { + "from": { + "key_code": "f10" + }, + "to": [ + { + "consumer_key_code": "mute" + } + ] + }, + { + "from": { + "key_code": "f11" + }, + "to": [ + { + "consumer_key_code": "volume_decrement" + } + ] + }, + { + "from": { + "key_code": "f12" + }, + "to": [ + { + "consumer_key_code": "volume_increment" + } + ] + } + ], + "name": "Default profile", + "parameters": { + "delay_milliseconds_before_open_device": 1000 + }, + "selected": true, + "simple_modifications": [ + { + "from": { + "key_code": "caps_lock" + }, + "to": [ + { + "key_code": "left_control" + } + ] + } + ], + "virtual_hid_keyboard": { + "country_code": 0, + "indicate_sticky_modifier_keys_state": true, + "mouse_key_xy_scale": 100 + } + } + ] +}
\ No newline at end of file diff --git a/mac/.config/karabiner/automatic_backups/karabiner_20240107.json b/mac/.config/karabiner/automatic_backups/karabiner_20240107.json new file mode 100644 index 0000000..62cc54f --- /dev/null +++ b/mac/.config/karabiner/automatic_backups/karabiner_20240107.json @@ -0,0 +1,393 @@ +{ + "global": { + "ask_for_confirmation_before_quitting": true, + "check_for_updates_on_startup": true, + "show_in_menu_bar": true, + "show_profile_name_in_menu_bar": false, + "unsafe_ui": false + }, + "profiles": [ + { + "complex_modifications": { + "parameters": { + "basic.simultaneous_threshold_milliseconds": 50, + "basic.to_delayed_action_delay_milliseconds": 500, + "basic.to_if_alone_timeout_milliseconds": 1000, + "basic.to_if_held_down_threshold_milliseconds": 500, + "mouse_motion_to_scroll.speed": 100 + }, + "rules": [ + { + "description": "Change right_command+hjkl to arrow keys", + "manipulators": [ + { + "from": { + "key_code": "h", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "j", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow" + } + ], + "type": "basic" + } + ] + }, + { + "description": "fn + ` -> iTerm", + "manipulators": [ + { + "from": { + "key_code": 53, + "modifiers": { + "mandatory": [ + "fn" + ] + } + }, + "to": [ + { + "shell_command": "open '/Applications/iTerm.app'" + } + ], + "type": "basic" + } + ] + }, + { + "description": "Press twice fn to change input source & otherwise held_down and open iterm", + "manipulators": [ + { + "conditions": [ + { + "name": "fn pressed", + "type": "variable_if", + "value": 1 + } + ], + "from": { + "key_code": "fn", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "lazy": true, + "modifiers": [ + "left_control", + "left_alt" + ], + "repeat": false + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "fn", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "parameters": { + "basic.to_if_held_down_threshold_milliseconds": 0 + }, + "to": [ + { + "set_variable": { + "name": "fn pressed", + "value": 1 + } + } + ], + "to_delayed_action": { + "to_if_canceled": [ + { + "set_variable": { + "name": "fn pressed", + "value": 0 + } + } + ], + "to_if_invoked": [ + { + "set_variable": { + "name": "fn pressed", + "value": 0 + } + } + ] + }, + "to_if_held_down": [ + { + "key_code": "fn" + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "identifiers": { + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 34304, + "vendor_id": 1452 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + } + ], + "fn_function_keys": [ + { + "from": { + "key_code": "f1" + }, + "to": [ + { + "consumer_key_code": "display_brightness_decrement" + } + ] + }, + { + "from": { + "key_code": "f2" + }, + "to": [ + { + "consumer_key_code": "display_brightness_increment" + } + ] + }, + { + "from": { + "key_code": "f3" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "mission_control" + } + ] + }, + { + "from": { + "key_code": "f4" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "spotlight" + } + ] + }, + { + "from": { + "key_code": "f5" + }, + "to": [ + { + "consumer_key_code": "dictation" + } + ] + }, + { + "from": { + "key_code": "f6" + }, + "to": [ + { + "key_code": "f6" + } + ] + }, + { + "from": { + "key_code": "f7" + }, + "to": [ + { + "consumer_key_code": "rewind" + } + ] + }, + { + "from": { + "key_code": "f8" + }, + "to": [ + { + "consumer_key_code": "play_or_pause" + } + ] + }, + { + "from": { + "key_code": "f9" + }, + "to": [ + { + "consumer_key_code": "fast_forward" + } + ] + }, + { + "from": { + "key_code": "f10" + }, + "to": [ + { + "consumer_key_code": "mute" + } + ] + }, + { + "from": { + "key_code": "f11" + }, + "to": [ + { + "consumer_key_code": "volume_decrement" + } + ] + }, + { + "from": { + "key_code": "f12" + }, + "to": [ + { + "consumer_key_code": "volume_increment" + } + ] + } + ], + "name": "Default profile", + "parameters": { + "delay_milliseconds_before_open_device": 1000 + }, + "selected": true, + "simple_modifications": [ + { + "from": { + "key_code": "caps_lock" + }, + "to": [ + { + "key_code": "left_control" + } + ] + } + ], + "virtual_hid_keyboard": { + "country_code": 0, + "indicate_sticky_modifier_keys_state": true, + "mouse_key_xy_scale": 100 + } + } + ] +}
\ No newline at end of file diff --git a/mac/.config/karabiner/automatic_backups/karabiner_20240108.json b/mac/.config/karabiner/automatic_backups/karabiner_20240108.json new file mode 100644 index 0000000..0088e24 --- /dev/null +++ b/mac/.config/karabiner/automatic_backups/karabiner_20240108.json @@ -0,0 +1,417 @@ +{ + "global": { + "ask_for_confirmation_before_quitting": true, + "check_for_updates_on_startup": true, + "show_in_menu_bar": true, + "show_profile_name_in_menu_bar": false, + "unsafe_ui": false + }, + "profiles": [ + { + "complex_modifications": { + "parameters": { + "basic.simultaneous_threshold_milliseconds": 50, + "basic.to_delayed_action_delay_milliseconds": 500, + "basic.to_if_alone_timeout_milliseconds": 1000, + "basic.to_if_held_down_threshold_milliseconds": 500, + "mouse_motion_to_scroll.speed": 100 + }, + "rules": [ + { + "description": "Change right_command+hjkl to arrow keys", + "manipulators": [ + { + "from": { + "key_code": "h", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "j", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow" + } + ], + "type": "basic" + } + ] + }, + { + "description": "fn + ` -> iTerm", + "manipulators": [ + { + "from": { + "key_code": 53, + "modifiers": { + "mandatory": [ + "fn" + ] + } + }, + "to": [ + { + "shell_command": "open '/Applications/iTerm.app'" + } + ], + "type": "basic" + } + ] + }, + { + "description": "Press twice fn to change input source & otherwise held_down and open iterm", + "manipulators": [ + { + "conditions": [ + { + "name": "fn pressed", + "type": "variable_if", + "value": 1 + } + ], + "from": { + "key_code": "fn", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "lazy": true, + "modifiers": [ + "left_control", + "left_alt" + ], + "repeat": false + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "fn", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "parameters": { + "basic.to_if_held_down_threshold_milliseconds": 0 + }, + "to": [ + { + "set_variable": { + "name": "fn pressed", + "value": 1 + } + } + ], + "to_delayed_action": { + "to_if_canceled": [ + { + "set_variable": { + "name": "fn pressed", + "value": 0 + } + } + ], + "to_if_invoked": [ + { + "set_variable": { + "name": "fn pressed", + "value": 0 + } + } + ] + }, + "to_if_held_down": [ + { + "key_code": "fn" + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 34304, + "vendor_id": 1452 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + } + ], + "fn_function_keys": [ + { + "from": { + "key_code": "f1" + }, + "to": [ + { + "consumer_key_code": "display_brightness_decrement" + } + ] + }, + { + "from": { + "key_code": "f2" + }, + "to": [ + { + "consumer_key_code": "display_brightness_increment" + } + ] + }, + { + "from": { + "key_code": "f3" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "mission_control" + } + ] + }, + { + "from": { + "key_code": "f4" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "spotlight" + } + ] + }, + { + "from": { + "key_code": "f5" + }, + "to": [ + { + "consumer_key_code": "dictation" + } + ] + }, + { + "from": { + "key_code": "f6" + }, + "to": [ + { + "key_code": "f6" + } + ] + }, + { + "from": { + "key_code": "f7" + }, + "to": [ + { + "consumer_key_code": "rewind" + } + ] + }, + { + "from": { + "key_code": "f8" + }, + "to": [ + { + "consumer_key_code": "play_or_pause" + } + ] + }, + { + "from": { + "key_code": "f9" + }, + "to": [ + { + "consumer_key_code": "fast_forward" + } + ] + }, + { + "from": { + "key_code": "f10" + }, + "to": [ + { + "consumer_key_code": "mute" + } + ] + }, + { + "from": { + "key_code": "f11" + }, + "to": [ + { + "consumer_key_code": "volume_decrement" + } + ] + }, + { + "from": { + "key_code": "f12" + }, + "to": [ + { + "consumer_key_code": "volume_increment" + } + ] + } + ], + "name": "Default profile", + "parameters": { + "delay_milliseconds_before_open_device": 1000 + }, + "selected": true, + "simple_modifications": [ + { + "from": { + "key_code": "caps_lock" + }, + "to": [ + { + "key_code": "left_control" + } + ] + } + ], + "virtual_hid_keyboard": { + "country_code": 0, + "indicate_sticky_modifier_keys_state": true, + "mouse_key_xy_scale": 100 + } + } + ] +}
\ No newline at end of file diff --git a/mac/.config/karabiner/automatic_backups/karabiner_20240109.json b/mac/.config/karabiner/automatic_backups/karabiner_20240109.json new file mode 100644 index 0000000..0088e24 --- /dev/null +++ b/mac/.config/karabiner/automatic_backups/karabiner_20240109.json @@ -0,0 +1,417 @@ +{ + "global": { + "ask_for_confirmation_before_quitting": true, + "check_for_updates_on_startup": true, + "show_in_menu_bar": true, + "show_profile_name_in_menu_bar": false, + "unsafe_ui": false + }, + "profiles": [ + { + "complex_modifications": { + "parameters": { + "basic.simultaneous_threshold_milliseconds": 50, + "basic.to_delayed_action_delay_milliseconds": 500, + "basic.to_if_alone_timeout_milliseconds": 1000, + "basic.to_if_held_down_threshold_milliseconds": 500, + "mouse_motion_to_scroll.speed": 100 + }, + "rules": [ + { + "description": "Change right_command+hjkl to arrow keys", + "manipulators": [ + { + "from": { + "key_code": "h", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "j", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow" + } + ], + "type": "basic" + } + ] + }, + { + "description": "fn + ` -> iTerm", + "manipulators": [ + { + "from": { + "key_code": 53, + "modifiers": { + "mandatory": [ + "fn" + ] + } + }, + "to": [ + { + "shell_command": "open '/Applications/iTerm.app'" + } + ], + "type": "basic" + } + ] + }, + { + "description": "Press twice fn to change input source & otherwise held_down and open iterm", + "manipulators": [ + { + "conditions": [ + { + "name": "fn pressed", + "type": "variable_if", + "value": 1 + } + ], + "from": { + "key_code": "fn", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "lazy": true, + "modifiers": [ + "left_control", + "left_alt" + ], + "repeat": false + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "fn", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "parameters": { + "basic.to_if_held_down_threshold_milliseconds": 0 + }, + "to": [ + { + "set_variable": { + "name": "fn pressed", + "value": 1 + } + } + ], + "to_delayed_action": { + "to_if_canceled": [ + { + "set_variable": { + "name": "fn pressed", + "value": 0 + } + } + ], + "to_if_invoked": [ + { + "set_variable": { + "name": "fn pressed", + "value": 0 + } + } + ] + }, + "to_if_held_down": [ + { + "key_code": "fn" + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 34304, + "vendor_id": 1452 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + } + ], + "fn_function_keys": [ + { + "from": { + "key_code": "f1" + }, + "to": [ + { + "consumer_key_code": "display_brightness_decrement" + } + ] + }, + { + "from": { + "key_code": "f2" + }, + "to": [ + { + "consumer_key_code": "display_brightness_increment" + } + ] + }, + { + "from": { + "key_code": "f3" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "mission_control" + } + ] + }, + { + "from": { + "key_code": "f4" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "spotlight" + } + ] + }, + { + "from": { + "key_code": "f5" + }, + "to": [ + { + "consumer_key_code": "dictation" + } + ] + }, + { + "from": { + "key_code": "f6" + }, + "to": [ + { + "key_code": "f6" + } + ] + }, + { + "from": { + "key_code": "f7" + }, + "to": [ + { + "consumer_key_code": "rewind" + } + ] + }, + { + "from": { + "key_code": "f8" + }, + "to": [ + { + "consumer_key_code": "play_or_pause" + } + ] + }, + { + "from": { + "key_code": "f9" + }, + "to": [ + { + "consumer_key_code": "fast_forward" + } + ] + }, + { + "from": { + "key_code": "f10" + }, + "to": [ + { + "consumer_key_code": "mute" + } + ] + }, + { + "from": { + "key_code": "f11" + }, + "to": [ + { + "consumer_key_code": "volume_decrement" + } + ] + }, + { + "from": { + "key_code": "f12" + }, + "to": [ + { + "consumer_key_code": "volume_increment" + } + ] + } + ], + "name": "Default profile", + "parameters": { + "delay_milliseconds_before_open_device": 1000 + }, + "selected": true, + "simple_modifications": [ + { + "from": { + "key_code": "caps_lock" + }, + "to": [ + { + "key_code": "left_control" + } + ] + } + ], + "virtual_hid_keyboard": { + "country_code": 0, + "indicate_sticky_modifier_keys_state": true, + "mouse_key_xy_scale": 100 + } + } + ] +}
\ No newline at end of file diff --git a/mac/.config/karabiner/automatic_backups/karabiner_20240112.json b/mac/.config/karabiner/automatic_backups/karabiner_20240112.json new file mode 100644 index 0000000..2b1171d --- /dev/null +++ b/mac/.config/karabiner/automatic_backups/karabiner_20240112.json @@ -0,0 +1,461 @@ +{ + "global": { + "ask_for_confirmation_before_quitting": true, + "check_for_updates_on_startup": true, + "show_in_menu_bar": true, + "show_profile_name_in_menu_bar": false, + "unsafe_ui": false + }, + "profiles": [ + { + "complex_modifications": { + "parameters": { + "basic.simultaneous_threshold_milliseconds": 50, + "basic.to_delayed_action_delay_milliseconds": 500, + "basic.to_if_alone_timeout_milliseconds": 1000, + "basic.to_if_held_down_threshold_milliseconds": 500, + "mouse_motion_to_scroll.speed": 100 + }, + "rules": [ + { + "description": "Change right_command+hjkl to arrow keys", + "manipulators": [ + { + "from": { + "key_code": "h", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "j", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow" + } + ], + "type": "basic" + } + ] + }, + { + "description": "fn + ` -> iTerm", + "manipulators": [ + { + "from": { + "key_code": 53, + "modifiers": { + "mandatory": [ + "fn" + ] + } + }, + "to": [ + { + "shell_command": "open '/Applications/iTerm.app'" + } + ], + "type": "basic" + } + ] + }, + { + "description": "Press twice fn to change input source & otherwise held_down and open iterm", + "manipulators": [ + { + "conditions": [ + { + "name": "fn pressed", + "type": "variable_if", + "value": 1 + } + ], + "from": { + "key_code": "fn", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "lazy": true, + "modifiers": [ + "left_control", + "left_alt" + ], + "repeat": false + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "fn", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "parameters": { + "basic.to_if_held_down_threshold_milliseconds": 0 + }, + "to": [ + { + "set_variable": { + "name": "fn pressed", + "value": 1 + } + } + ], + "to_delayed_action": { + "to_if_canceled": [ + { + "set_variable": { + "name": "fn pressed", + "value": 0 + } + } + ], + "to_if_invoked": [ + { + "set_variable": { + "name": "fn pressed", + "value": 0 + } + } + ] + }, + "to_if_held_down": [ + { + "key_code": "fn" + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 34304, + "vendor_id": 1452 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": true, + "product_id": 45924, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 45085, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + } + ], + "fn_function_keys": [ + { + "from": { + "key_code": "f1" + }, + "to": [ + { + "consumer_key_code": "display_brightness_decrement" + } + ] + }, + { + "from": { + "key_code": "f2" + }, + "to": [ + { + "consumer_key_code": "display_brightness_increment" + } + ] + }, + { + "from": { + "key_code": "f3" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "mission_control" + } + ] + }, + { + "from": { + "key_code": "f4" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "spotlight" + } + ] + }, + { + "from": { + "key_code": "f5" + }, + "to": [ + { + "consumer_key_code": "dictation" + } + ] + }, + { + "from": { + "key_code": "f6" + }, + "to": [ + { + "key_code": "f6" + } + ] + }, + { + "from": { + "key_code": "f7" + }, + "to": [ + { + "consumer_key_code": "rewind" + } + ] + }, + { + "from": { + "key_code": "f8" + }, + "to": [ + { + "consumer_key_code": "play_or_pause" + } + ] + }, + { + "from": { + "key_code": "f9" + }, + "to": [ + { + "consumer_key_code": "fast_forward" + } + ] + }, + { + "from": { + "key_code": "f10" + }, + "to": [ + { + "consumer_key_code": "mute" + } + ] + }, + { + "from": { + "key_code": "f11" + }, + "to": [ + { + "consumer_key_code": "volume_decrement" + } + ] + }, + { + "from": { + "key_code": "f12" + }, + "to": [ + { + "consumer_key_code": "volume_increment" + } + ] + } + ], + "name": "Default profile", + "parameters": { + "delay_milliseconds_before_open_device": 1000 + }, + "selected": true, + "simple_modifications": [ + { + "from": { + "key_code": "caps_lock" + }, + "to": [ + { + "key_code": "left_control" + } + ] + } + ], + "virtual_hid_keyboard": { + "country_code": 0, + "indicate_sticky_modifier_keys_state": true, + "mouse_key_xy_scale": 100 + } + } + ] +}
\ No newline at end of file diff --git a/mac/.config/karabiner/automatic_backups/karabiner_20240113.json b/mac/.config/karabiner/automatic_backups/karabiner_20240113.json new file mode 100644 index 0000000..13346ea --- /dev/null +++ b/mac/.config/karabiner/automatic_backups/karabiner_20240113.json @@ -0,0 +1,472 @@ +{ + "global": { + "ask_for_confirmation_before_quitting": true, + "check_for_updates_on_startup": true, + "show_in_menu_bar": true, + "show_profile_name_in_menu_bar": false, + "unsafe_ui": false + }, + "profiles": [ + { + "complex_modifications": { + "parameters": { + "basic.simultaneous_threshold_milliseconds": 50, + "basic.to_delayed_action_delay_milliseconds": 500, + "basic.to_if_alone_timeout_milliseconds": 1000, + "basic.to_if_held_down_threshold_milliseconds": 500, + "mouse_motion_to_scroll.speed": 100 + }, + "rules": [ + { + "description": "Change right_command+hjkl to arrow keys", + "manipulators": [ + { + "from": { + "key_code": "h", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "left_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "j", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "down_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "k", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "up_arrow" + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "l", + "modifiers": { + "mandatory": [ + "right_command" + ], + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "right_arrow" + } + ], + "type": "basic" + } + ] + }, + { + "description": "fn + ` -> iTerm", + "manipulators": [ + { + "from": { + "key_code": 53, + "modifiers": { + "mandatory": [ + "fn" + ] + } + }, + "to": [ + { + "shell_command": "open '/Applications/iTerm.app'" + } + ], + "type": "basic" + } + ] + }, + { + "description": "Press twice fn to change input source & otherwise held_down and open iterm", + "manipulators": [ + { + "conditions": [ + { + "name": "fn pressed", + "type": "variable_if", + "value": 1 + } + ], + "from": { + "key_code": "fn", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "lazy": true, + "modifiers": [ + "left_control", + "left_alt" + ], + "repeat": false + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "fn", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "parameters": { + "basic.to_if_held_down_threshold_milliseconds": 0 + }, + "to": [ + { + "set_variable": { + "name": "fn pressed", + "value": 1 + } + } + ], + "to_delayed_action": { + "to_if_canceled": [ + { + "set_variable": { + "name": "fn pressed", + "value": 0 + } + } + ], + "to_if_invoked": [ + { + "set_variable": { + "name": "fn pressed", + "value": 0 + } + } + ] + }, + "to_if_held_down": [ + { + "key_code": "fn" + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 34304, + "vendor_id": 1452 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": true, + "product_id": 45924, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 45085, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 256, + "vendor_id": 2131 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + } + ], + "fn_function_keys": [ + { + "from": { + "key_code": "f1" + }, + "to": [ + { + "consumer_key_code": "display_brightness_decrement" + } + ] + }, + { + "from": { + "key_code": "f2" + }, + "to": [ + { + "consumer_key_code": "display_brightness_increment" + } + ] + }, + { + "from": { + "key_code": "f3" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "mission_control" + } + ] + }, + { + "from": { + "key_code": "f4" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "spotlight" + } + ] + }, + { + "from": { + "key_code": "f5" + }, + "to": [ + { + "consumer_key_code": "dictation" + } + ] + }, + { + "from": { + "key_code": "f6" + }, + "to": [ + { + "key_code": "f6" + } + ] + }, + { + "from": { + "key_code": "f7" + }, + "to": [ + { + "consumer_key_code": "rewind" + } + ] + }, + { + "from": { + "key_code": "f8" + }, + "to": [ + { + "consumer_key_code": "play_or_pause" + } + ] + }, + { + "from": { + "key_code": "f9" + }, + "to": [ + { + "consumer_key_code": "fast_forward" + } + ] + }, + { + "from": { + "key_code": "f10" + }, + "to": [ + { + "consumer_key_code": "mute" + } + ] + }, + { + "from": { + "key_code": "f11" + }, + "to": [ + { + "consumer_key_code": "volume_decrement" + } + ] + }, + { + "from": { + "key_code": "f12" + }, + "to": [ + { + "consumer_key_code": "volume_increment" + } + ] + } + ], + "name": "Default profile", + "parameters": { + "delay_milliseconds_before_open_device": 1000 + }, + "selected": true, + "simple_modifications": [], + "virtual_hid_keyboard": { + "country_code": 0, + "indicate_sticky_modifier_keys_state": true, + "mouse_key_xy_scale": 100 + } + } + ] +}
\ No newline at end of file diff --git a/mac/.config/karabiner/automatic_backups/karabiner_20240114.json b/mac/.config/karabiner/automatic_backups/karabiner_20240114.json new file mode 100644 index 0000000..9193d0d --- /dev/null +++ b/mac/.config/karabiner/automatic_backups/karabiner_20240114.json @@ -0,0 +1,391 @@ +{ + "global": { + "ask_for_confirmation_before_quitting": true, + "check_for_updates_on_startup": true, + "show_in_menu_bar": true, + "show_profile_name_in_menu_bar": false, + "unsafe_ui": false + }, + "profiles": [ + { + "complex_modifications": { + "parameters": { + "basic.simultaneous_threshold_milliseconds": 50, + "basic.to_delayed_action_delay_milliseconds": 500, + "basic.to_if_alone_timeout_milliseconds": 1000, + "basic.to_if_held_down_threshold_milliseconds": 500, + "mouse_motion_to_scroll.speed": 100 + }, + "rules": [ + { + "description": "fn + ` -> iTerm", + "manipulators": [ + { + "from": { + "key_code": 53, + "modifiers": { + "mandatory": [ + "fn" + ] + } + }, + "to": [ + { + "shell_command": "open '/Applications/iTerm.app'" + } + ], + "type": "basic" + } + ] + }, + { + "description": "Press twice fn to change input source & otherwise held_down and open iterm", + "manipulators": [ + { + "conditions": [ + { + "name": "fn pressed", + "type": "variable_if", + "value": 1 + } + ], + "from": { + "key_code": "fn", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "lazy": true, + "modifiers": [ + "left_control", + "left_alt" + ], + "repeat": false + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "fn", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "parameters": { + "basic.to_if_held_down_threshold_milliseconds": 0 + }, + "to": [ + { + "set_variable": { + "name": "fn pressed", + "value": 1 + } + } + ], + "to_delayed_action": { + "to_if_canceled": [ + { + "set_variable": { + "name": "fn pressed", + "value": 0 + } + } + ], + "to_if_invoked": [ + { + "set_variable": { + "name": "fn pressed", + "value": 0 + } + } + ] + }, + "to_if_held_down": [ + { + "key_code": "fn" + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 34304, + "vendor_id": 1452 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": true, + "product_id": 45924, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 45085, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 256, + "vendor_id": 2131 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + } + ], + "fn_function_keys": [ + { + "from": { + "key_code": "f1" + }, + "to": [ + { + "consumer_key_code": "display_brightness_decrement" + } + ] + }, + { + "from": { + "key_code": "f2" + }, + "to": [ + { + "consumer_key_code": "display_brightness_increment" + } + ] + }, + { + "from": { + "key_code": "f3" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "mission_control" + } + ] + }, + { + "from": { + "key_code": "f4" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "spotlight" + } + ] + }, + { + "from": { + "key_code": "f5" + }, + "to": [ + { + "consumer_key_code": "dictation" + } + ] + }, + { + "from": { + "key_code": "f6" + }, + "to": [ + { + "key_code": "f6" + } + ] + }, + { + "from": { + "key_code": "f7" + }, + "to": [ + { + "consumer_key_code": "rewind" + } + ] + }, + { + "from": { + "key_code": "f8" + }, + "to": [ + { + "consumer_key_code": "play_or_pause" + } + ] + }, + { + "from": { + "key_code": "f9" + }, + "to": [ + { + "consumer_key_code": "fast_forward" + } + ] + }, + { + "from": { + "key_code": "f10" + }, + "to": [ + { + "consumer_key_code": "mute" + } + ] + }, + { + "from": { + "key_code": "f11" + }, + "to": [ + { + "consumer_key_code": "volume_decrement" + } + ] + }, + { + "from": { + "key_code": "f12" + }, + "to": [ + { + "consumer_key_code": "volume_increment" + } + ] + } + ], + "name": "Default profile", + "parameters": { + "delay_milliseconds_before_open_device": 1000 + }, + "selected": true, + "simple_modifications": [], + "virtual_hid_keyboard": { + "country_code": 0, + "indicate_sticky_modifier_keys_state": true, + "mouse_key_xy_scale": 100 + } + } + ] +}
\ No newline at end of file diff --git a/mac/.config/karabiner/automatic_backups/karabiner_20240115.json b/mac/.config/karabiner/automatic_backups/karabiner_20240115.json new file mode 100644 index 0000000..9193d0d --- /dev/null +++ b/mac/.config/karabiner/automatic_backups/karabiner_20240115.json @@ -0,0 +1,391 @@ +{ + "global": { + "ask_for_confirmation_before_quitting": true, + "check_for_updates_on_startup": true, + "show_in_menu_bar": true, + "show_profile_name_in_menu_bar": false, + "unsafe_ui": false + }, + "profiles": [ + { + "complex_modifications": { + "parameters": { + "basic.simultaneous_threshold_milliseconds": 50, + "basic.to_delayed_action_delay_milliseconds": 500, + "basic.to_if_alone_timeout_milliseconds": 1000, + "basic.to_if_held_down_threshold_milliseconds": 500, + "mouse_motion_to_scroll.speed": 100 + }, + "rules": [ + { + "description": "fn + ` -> iTerm", + "manipulators": [ + { + "from": { + "key_code": 53, + "modifiers": { + "mandatory": [ + "fn" + ] + } + }, + "to": [ + { + "shell_command": "open '/Applications/iTerm.app'" + } + ], + "type": "basic" + } + ] + }, + { + "description": "Press twice fn to change input source & otherwise held_down and open iterm", + "manipulators": [ + { + "conditions": [ + { + "name": "fn pressed", + "type": "variable_if", + "value": 1 + } + ], + "from": { + "key_code": "fn", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "to": [ + { + "key_code": "spacebar", + "lazy": true, + "modifiers": [ + "left_control", + "left_alt" + ], + "repeat": false + } + ], + "type": "basic" + }, + { + "from": { + "key_code": "fn", + "modifiers": { + "optional": [ + "any" + ] + } + }, + "parameters": { + "basic.to_if_held_down_threshold_milliseconds": 0 + }, + "to": [ + { + "set_variable": { + "name": "fn pressed", + "value": 1 + } + } + ], + "to_delayed_action": { + "to_if_canceled": [ + { + "set_variable": { + "name": "fn pressed", + "value": 0 + } + } + ], + "to_if_invoked": [ + { + "set_variable": { + "name": "fn pressed", + "value": 0 + } + } + ] + }, + "to_if_held_down": [ + { + "key_code": "fn" + } + ], + "type": "basic" + } + ] + } + ] + }, + "devices": [ + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 34304, + "vendor_id": 1452 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": true, + "product_id": 45924, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 45085, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 256, + "vendor_id": 2131 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + } + ], + "fn_function_keys": [ + { + "from": { + "key_code": "f1" + }, + "to": [ + { + "consumer_key_code": "display_brightness_decrement" + } + ] + }, + { + "from": { + "key_code": "f2" + }, + "to": [ + { + "consumer_key_code": "display_brightness_increment" + } + ] + }, + { + "from": { + "key_code": "f3" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "mission_control" + } + ] + }, + { + "from": { + "key_code": "f4" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "spotlight" + } + ] + }, + { + "from": { + "key_code": "f5" + }, + "to": [ + { + "consumer_key_code": "dictation" + } + ] + }, + { + "from": { + "key_code": "f6" + }, + "to": [ + { + "key_code": "f6" + } + ] + }, + { + "from": { + "key_code": "f7" + }, + "to": [ + { + "consumer_key_code": "rewind" + } + ] + }, + { + "from": { + "key_code": "f8" + }, + "to": [ + { + "consumer_key_code": "play_or_pause" + } + ] + }, + { + "from": { + "key_code": "f9" + }, + "to": [ + { + "consumer_key_code": "fast_forward" + } + ] + }, + { + "from": { + "key_code": "f10" + }, + "to": [ + { + "consumer_key_code": "mute" + } + ] + }, + { + "from": { + "key_code": "f11" + }, + "to": [ + { + "consumer_key_code": "volume_decrement" + } + ] + }, + { + "from": { + "key_code": "f12" + }, + "to": [ + { + "consumer_key_code": "volume_increment" + } + ] + } + ], + "name": "Default profile", + "parameters": { + "delay_milliseconds_before_open_device": 1000 + }, + "selected": true, + "simple_modifications": [], + "virtual_hid_keyboard": { + "country_code": 0, + "indicate_sticky_modifier_keys_state": true, + "mouse_key_xy_scale": 100 + } + } + ] +}
\ No newline at end of file diff --git a/mac/.config/karabiner/karabiner.json b/mac/.config/karabiner/karabiner.json new file mode 100644 index 0000000..db9c040 --- /dev/null +++ b/mac/.config/karabiner/karabiner.json @@ -0,0 +1,290 @@ +{ + "global": { + "ask_for_confirmation_before_quitting": true, + "check_for_updates_on_startup": true, + "show_in_menu_bar": true, + "show_profile_name_in_menu_bar": false, + "unsafe_ui": false + }, + "profiles": [ + { + "complex_modifications": { + "parameters": { + "basic.simultaneous_threshold_milliseconds": 50, + "basic.to_delayed_action_delay_milliseconds": 500, + "basic.to_if_alone_timeout_milliseconds": 1000, + "basic.to_if_held_down_threshold_milliseconds": 500, + "mouse_motion_to_scroll.speed": 100 + }, + "rules": [] + }, + "devices": [ + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 0, + "vendor_id": 0 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 34304, + "vendor_id": 1452 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": true, + "product_id": 45924, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": false, + "is_pointing_device": true, + "product_id": 45085, + "vendor_id": 1133 + }, + "ignore": true, + "manipulate_caps_lock_led": false, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + }, + { + "disable_built_in_keyboard_if_exists": false, + "fn_function_keys": [], + "game_pad_swap_sticks": false, + "identifiers": { + "is_game_pad": false, + "is_keyboard": true, + "is_pointing_device": false, + "product_id": 256, + "vendor_id": 2131 + }, + "ignore": false, + "manipulate_caps_lock_led": true, + "mouse_flip_horizontal_wheel": false, + "mouse_flip_vertical_wheel": false, + "mouse_flip_x": false, + "mouse_flip_y": false, + "mouse_swap_wheels": false, + "mouse_swap_xy": false, + "simple_modifications": [], + "treat_as_built_in_keyboard": false + } + ], + "fn_function_keys": [ + { + "from": { + "key_code": "f1" + }, + "to": [ + { + "consumer_key_code": "display_brightness_decrement" + } + ] + }, + { + "from": { + "key_code": "f2" + }, + "to": [ + { + "consumer_key_code": "display_brightness_increment" + } + ] + }, + { + "from": { + "key_code": "f3" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "mission_control" + } + ] + }, + { + "from": { + "key_code": "f4" + }, + "to": [ + { + "apple_vendor_keyboard_key_code": "spotlight" + } + ] + }, + { + "from": { + "key_code": "f5" + }, + "to": [ + { + "consumer_key_code": "dictation" + } + ] + }, + { + "from": { + "key_code": "f6" + }, + "to": [ + { + "key_code": "f6" + } + ] + }, + { + "from": { + "key_code": "f7" + }, + "to": [ + { + "consumer_key_code": "rewind" + } + ] + }, + { + "from": { + "key_code": "f8" + }, + "to": [ + { + "consumer_key_code": "play_or_pause" + } + ] + }, + { + "from": { + "key_code": "f9" + }, + "to": [ + { + "consumer_key_code": "fast_forward" + } + ] + }, + { + "from": { + "key_code": "f10" + }, + "to": [ + { + "consumer_key_code": "mute" + } + ] + }, + { + "from": { + "key_code": "f11" + }, + "to": [ + { + "consumer_key_code": "volume_decrement" + } + ] + }, + { + "from": { + "key_code": "f12" + }, + "to": [ + { + "consumer_key_code": "volume_increment" + } + ] + } + ], + "name": "Default profile", + "parameters": { + "delay_milliseconds_before_open_device": 1000 + }, + "selected": true, + "simple_modifications": [], + "virtual_hid_keyboard": { + "country_code": 0, + "indicate_sticky_modifier_keys_state": true, + "mouse_key_xy_scale": 100 + } + } + ] +}
\ No newline at end of file diff --git a/mac/.config/kitty/icons/kitty-dark.icns b/mac/.config/kitty/icons/kitty-dark.icns Binary files differnew file mode 100644 index 0000000..57e2982 --- /dev/null +++ b/mac/.config/kitty/icons/kitty-dark.icns diff --git a/mac/.config/kitty/icons/kitty-light.icns b/mac/.config/kitty/icons/kitty-light.icns Binary files differnew file mode 100644 index 0000000..0ac7304 --- /dev/null +++ b/mac/.config/kitty/icons/kitty-light.icns diff --git a/mac/.config/kitty/icons/neue_azure.icns b/mac/.config/kitty/icons/neue_azure.icns Binary files differnew file mode 100644 index 0000000..6573b4c --- /dev/null +++ b/mac/.config/kitty/icons/neue_azure.icns diff --git a/mac/.config/kitty/icons/neue_ember.icns b/mac/.config/kitty/icons/neue_ember.icns Binary files differnew file mode 100644 index 0000000..e8adb6d --- /dev/null +++ b/mac/.config/kitty/icons/neue_ember.icns diff --git a/mac/.config/kitty/icons/neue_outrun.icns b/mac/.config/kitty/icons/neue_outrun.icns Binary files differnew file mode 100644 index 0000000..65f1ce6 --- /dev/null +++ b/mac/.config/kitty/icons/neue_outrun.icns diff --git a/mac/.config/kitty/icons/neue_toxic.icns b/mac/.config/kitty/icons/neue_toxic.icns Binary files differnew file mode 100644 index 0000000..67ff000 --- /dev/null +++ b/mac/.config/kitty/icons/neue_toxic.icns diff --git a/mac/.config/kitty/icons/outrun.icns b/mac/.config/kitty/icons/outrun.icns Binary files differnew file mode 100644 index 0000000..3ab11a4 --- /dev/null +++ b/mac/.config/kitty/icons/outrun.icns diff --git a/mac/.config/kitty/kitty.conf b/mac/.config/kitty/kitty.conf new file mode 100644 index 0000000..5662155 --- /dev/null +++ b/mac/.config/kitty/kitty.conf @@ -0,0 +1,145 @@ +# Font +font_family FiraCode Nerd Font +italic_font auto +bold_italic_font auto +font_size 16.0 + +underline_position -2 +modify_font underline_thickness 150% +modify_font strikethrough_position 2px +text_composition_strategy platform + +# Sound +enable_audio_bell no + +# Cursor +cursor_text_color background +cursor_shape block +cursor_blink_interval 0 +scrollback_lines 10000 +copy_on_select clipboard +strip_trailing_spaces always +select_by_word_characters @-./_~?&=%+# + +# Window +confirm_os_window_close 0 +# remember_window_size yes +# initial_window_width 640 +# initial_window_height 400 +# enabled_layouts * +# draw_minimal_borders yes +resize_in_steps no +# window_resize_step_cells 0 +# window_resize_step_lines 0 +placement_strategy center +# window_border_width 100px +window_margin_width 5 +# single_window_margin_width -1 +hide_window_decorations yes +# hide_window_decorations titlebar-only + +# Tab bar +tab_bar_edge top +active_tab_foreground #000 +active_tab_background #eee +active_tab_font_style bold-italic +inactive_tab_foreground #444 +inactive_tab_background #999 +inactive_tab_font_style normal +# Background +background_opacity 0.9 +# background_image /Users/si/.config/background/bg_girl.png +# background_image /Users/si/.config/background/yejin.png +background_image_layout cscaled +background_image_linear no +dynamic_background_opacity yes +# background_tint 0.95 +# background_tint_gaps 1.0 +# dim_opacity 0.1 + +# Remote +allow_remote_control yes + +# Macos +macos_titlebar_color system +macos_option_as_alt left +macos_window_resizable yes + +# Keybinding +# kitty_mod ctrl+shift +map cmd+n no_op +map cmd+enter no_op +map cmd+t no_op +map cmd+w no_op +map cmd+r no_op +map cmd+shift+i no_op +map cmd+shift+o no_op +map cmd+shift+p no_op +map cmd+c copy_to_clipboard +map cmd+v paste_from_clipboard +map kitty_mod+w close_window +# map cmd+] next_window +# map cmd+[ previous_window +# map cmd+1 first_window +# map cmd+2 second_window +# map cmd+3 third_window +# map cmd+4 fourth_window +# map cmd+5 fifth_window + +# Theme +# include ./theme.conf +term xterm-256color +# selection_foreground #000000 +# selection_background #fffacd +# foreground #f8f8f2 +# foreground #e0d0b0 +# background #000000 +# background #151515 +# selection_foreground #151515 +# selection_background #ffa9c9 +# cursor #ffa9c9 +# cursor #f8f8f2 +# cursor_text_color #151515 +# url_color #95b9d0 +url_color #d65c9d +active_border_color #ffa9c9 +# active_border_color #00ff00 +# inactive_border_color #928374 +inactive_border_color #cccccc +bell_border_color #f98080 +# wayland_titlebar_color #080808 +# macos_titlebar_color #080808 +active_tab_foreground #080808 +active_tab_background #a990c9 +inactive_tab_foreground #bdae93 +inactive_tab_background #252525 +tab_bar_background #080808 +# mark1_foreground #080808 +# mark1_background #89a0e0 +# mark2_foreground #080808 +# mark2_background #95b9d0 +# mark3_foreground #080808 +# mark3_background #a0d0c0 +# color0 #000000 +# color0 #3a3634 +# color8 #504844 +# color8 #44475a +# color1 #ff6960 +# color9 #f98080 +# color1 #ff5555 +# color9 #ff5555 +# color2 #b0d080 +# color10 #c0e990 +# color3 #f9bd69 +# color11 #ffd079 +# color4 #89a0e0 +# color12 #95b9d0 +# color5 #df95cf +# color13 #ffa9c9 +# color6 #a0d0c0 +# color14 #a0dfa9 +# color7 #d5c4a1 +# color15 #bdae93 +# color7 #bbbbbb +# color15 #ffffff + diff --git a/mac/.config/neofetch/config.conf b/mac/.config/neofetch/config.conf new file mode 100644 index 0000000..69a95cc --- /dev/null +++ b/mac/.config/neofetch/config.conf @@ -0,0 +1,863 @@ +# See this wiki page for more info: +# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info +print_info() { + # info cols + prin " ┌─────────\n Hardware Information \n─────────┐" + info " " distro + info " " cpu + info " " gpu + info " " disk + info " " memory + info " " resolution + info " " battery + prin " ├─────────\n Software Information \n─────────┤" + info " " users + info " " distro + info " " kernel + info " " de + info " " wm + info " " shell + info " " term + info " " term_font + info " │ " font + # info " " theme + # info " " icons + info " " packages + info " " uptime + info " " gpu_driver # Linux/macOS only + info " " cpu_usage + # info " ﱘ " song + # [[ "$player" ]] && prin "Music Player" "$player" + info " " local_ip + info " " public_ip + info " " locale # This only works on glibc systems. + prin " └────────────────────────────────────────┘" + info colsZ +} + +# Title + + +# Hide/Show Fully qualified domain name. +# +# Default: 'off' +# Values: 'on', 'off' +# Flag: --title_fqdn +title_fqdn="off" + + +# Kernel + + +# Shorten the output of the kernel function. +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --kernel_shorthand +# Supports: Everything except *BSDs (except PacBSD and PC-BSD) +# +# Example: +# on: '4.8.9-1-ARCH' +# off: 'Linux 4.8.9-1-ARCH' +kernel_shorthand="off" + + +# Distro + + +# Shorten the output of the distro function +# +# Default: 'off' +# Values: 'on', 'tiny', 'off' +# Flag: --distro_shorthand +# Supports: Everything except Windows and Haiku +distro_shorthand="off" + +# Show/Hide OS Architecture. +# Show 'x86_64', 'x86' and etc in 'Distro:' output. +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --os_arch +# +# Example: +# on: 'Arch Linux x86_64' +# off: 'Arch Linux' +os_arch="on" + + +# Uptime + + +# Shorten the output of the uptime function +# +# Default: 'on' +# Values: 'on', 'tiny', 'off' +# Flag: --uptime_shorthand +# +# Example: +# on: '2 days, 10 hours, 3 mins' +# tiny: '2d 10h 3m' +# off: '2 days, 10 hours, 3 minutes' +uptime_shorthand="on" + + +# Memory + + +# Show memory pecentage in output. +# +# Default: 'off' +# Values: 'on', 'off' +# Flag: --memory_percent +# +# Example: +# on: '1801MiB / 7881MiB (22%)' +# off: '1801MiB / 7881MiB' +memory_percent="on" + +# Change memory output unit. +# +# Default: 'mib' +# Values: 'kib', 'mib', 'gib' +# Flag: --memory_unit +# +# Example: +# kib '1020928KiB / 7117824KiB' +# mib '1042MiB / 6951MiB' +# gib: ' 0.98GiB / 6.79GiB' +memory_unit="gib" + + +# Packages + + +# Show/Hide Package Manager names. +# +# Default: 'tiny' +# Values: 'on', 'tiny' 'off' +# Flag: --package_managers +# +# Example: +# on: '998 (pacman), 8 (flatpak), 4 (snap)' +# tiny: '908 (pacman, flatpak, snap)' +# off: '908' +package_managers="on" + + +# Shell + + +# Show the path to $SHELL +# +# Default: 'off' +# Values: 'on', 'off' +# Flag: --shell_path +# +# Example: +# on: '/bin/bash' +# off: 'bash' +shell_path="off" + +# Show $SHELL version +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --shell_version +# +# Example: +# on: 'bash 4.4.5' +# off: 'bash' +shell_version="on" + + +# CPU + + +# CPU speed type +# +# Default: 'bios_limit' +# Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'. +# Flag: --speed_type +# Supports: Linux with 'cpufreq' +# NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value. +speed_type="bios_limit" + +# CPU speed shorthand +# +# Default: 'off' +# Values: 'on', 'off'. +# Flag: --speed_shorthand +# NOTE: This flag is not supported in systems with CPU speed less than 1 GHz +# +# Example: +# on: 'i7-6500U (4) @ 3.1GHz' +# off: 'i7-6500U (4) @ 3.100GHz' +speed_shorthand="off" + +# Enable/Disable CPU brand in output. +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --cpu_brand +# +# Example: +# on: 'Intel i7-6500U' +# off: 'i7-6500U (4)' +cpu_brand="on" + +# CPU Speed +# Hide/Show CPU speed. +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --cpu_speed +# +# Example: +# on: 'Intel i7-6500U (4) @ 3.1GHz' +# off: 'Intel i7-6500U (4)' +cpu_speed="on" + +# CPU Cores +# Display CPU cores in output +# +# Default: 'logical' +# Values: 'logical', 'physical', 'off' +# Flag: --cpu_cores +# Support: 'physical' doesn't work on BSD. +# +# Example: +# logical: 'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores) +# physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores) +# off: 'Intel i7-6500U @ 3.1GHz' +cpu_cores="logical" + +# CPU Temperature +# Hide/Show CPU temperature. +# Note the temperature is added to the regular CPU function. +# +# Default: 'off' +# Values: 'C', 'F', 'off' +# Flag: --cpu_temp +# Supports: Linux, BSD +# NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable +# coretemp kernel module. This only supports newer Intel processors. +# +# Example: +# C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]' +# F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]' +# off: 'Intel i7-6500U (4) @ 3.1GHz' +cpu_temp="off" + + +# GPU + + +# Enable/Disable GPU Brand +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --gpu_brand +# +# Example: +# on: 'AMD HD 7950' +# off: 'HD 7950' +gpu_brand="on" + +# Which GPU to display +# +# Default: 'all' +# Values: 'all', 'dedicated', 'integrated' +# Flag: --gpu_type +# Supports: Linux +# +# Example: +# all: +# GPU1: AMD HD 7950 +# GPU2: Intel Integrated Graphics +# +# dedicated: +# GPU1: AMD HD 7950 +# +# integrated: +# GPU1: Intel Integrated Graphics +gpu_type="all" + + +# Resolution + + +# Display refresh rate next to each monitor +# Default: 'off' +# Values: 'on', 'off' +# Flag: --refresh_rate +# Supports: Doesn't work on Windows. +# +# Example: +# on: '1920x1080 @ 60Hz' +# off: '1920x1080' +refresh_rate="off" + + +# Gtk Theme / Icons / Font + + +# Shorten output of GTK Theme / Icons / Font +# +# Default: 'off' +# Values: 'on', 'off' +# Flag: --gtk_shorthand +# +# Example: +# on: 'Numix, Adwaita' +# off: 'Numix [GTK2], Adwaita [GTK3]' +gtk_shorthand="off" + + +# Enable/Disable gtk2 Theme / Icons / Font +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --gtk2 +# +# Example: +# on: 'Numix [GTK2], Adwaita [GTK3]' +# off: 'Adwaita [GTK3]' +gtk2="on" + +# Enable/Disable gtk3 Theme / Icons / Font +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --gtk3 +# +# Example: +# on: 'Numix [GTK2], Adwaita [GTK3]' +# off: 'Numix [GTK2]' +gtk3="on" + + +# IP Address + + +# Website to ping for the public IP +# +# Default: 'http://ident.me' +# Values: 'url' +# Flag: --ip_host +public_ip_host="http://ident.me" + +# Public IP timeout. +# +# Default: '2' +# Values: 'int' +# Flag: --ip_timeout +public_ip_timeout=2 + + +# Desktop Environment + + +# Show Desktop Environment version +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --de_version +de_version="on" + + +# Disk + + +# Which disks to display. +# The values can be any /dev/sdXX, mount point or directory. +# NOTE: By default we only show the disk info for '/'. +# +# Default: '/' +# Values: '/', '/dev/sdXX', '/path/to/drive'. +# Flag: --disk_show +# +# Example: +# disk_show=('/' '/dev/sdb1'): +# 'Disk (/): 74G / 118G (66%)' +# 'Disk (/mnt/Videos): 823G / 893G (93%)' +# +# disk_show=('/'): +# 'Disk (/): 74G / 118G (66%)' +# +disk_show=('/') + +# Disk subtitle. +# What to append to the Disk subtitle. +# +# Default: 'mount' +# Values: 'mount', 'name', 'dir', 'none' +# Flag: --disk_subtitle +# +# Example: +# name: 'Disk (/dev/sda1): 74G / 118G (66%)' +# 'Disk (/dev/sdb2): 74G / 118G (66%)' +# +# mount: 'Disk (/): 74G / 118G (66%)' +# 'Disk (/mnt/Local Disk): 74G / 118G (66%)' +# 'Disk (/mnt/Videos): 74G / 118G (66%)' +# +# dir: 'Disk (/): 74G / 118G (66%)' +# 'Disk (Local Disk): 74G / 118G (66%)' +# 'Disk (Videos): 74G / 118G (66%)' +# +# none: 'Disk: 74G / 118G (66%)' +# 'Disk: 74G / 118G (66%)' +# 'Disk: 74G / 118G (66%)' +disk_subtitle="mount" + +# Disk percent. +# Show/Hide disk percent. +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --disk_percent +# +# Example: +# on: 'Disk (/): 74G / 118G (66%)' +# off: 'Disk (/): 74G / 118G' +disk_percent="on" + + +# Song + + +# Manually specify a music player. +# +# Default: 'auto' +# Values: 'auto', 'player-name' +# Flag: --music_player +# +# Available values for 'player-name': +# +# amarok +# audacious +# banshee +# bluemindo +# clementine +# cmus +# deadbeef +# deepin-music +# dragon +# elisa +# exaile +# gnome-music +# gmusicbrowser +# gogglesmm +# guayadeque +# io.elementary.music +# iTunes +# juk +# lollypop +# mocp +# mopidy +# mpd +# muine +# netease-cloud-music +# olivia +# playerctl +# pogo +# pragha +# qmmp +# quodlibet +# rhythmbox +# sayonara +# smplayer +# spotify +# strawberry +# tauonmb +# tomahawk +# vlc +# xmms2d +# xnoise +# yarock +music_player="auto" + +# Format to display song information. +# +# Default: '%artist% - %album% - %title%' +# Values: '%artist%', '%album%', '%title%' +# Flag: --song_format +# +# Example: +# default: 'Song: Jet - Get Born - Sgt Major' +song_format="%artist% - %album% - %title%" + +# Print the Artist, Album and Title on separate lines +# +# Default: 'off' +# Values: 'on', 'off' +# Flag: --song_shorthand +# +# Example: +# on: 'Artist: The Fratellis' +# 'Album: Costello Music' +# 'Song: Chelsea Dagger' +# +# off: 'Song: The Fratellis - Costello Music - Chelsea Dagger' +song_shorthand="off" + +# 'mpc' arguments (specify a host, password etc). +# +# Default: '' +# Example: mpc_args=(-h HOST -P PASSWORD) +mpc_args=() + + +# Text Colors + + +# Text Colors +# +# Default: 'distro' +# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num' +# Flag: --colors +# +# Each number represents a different part of the text in +# this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info' +# +# Example: +# colors=(distro) - Text is colored based on Distro colors. +# colors=(4 6 1 8 8 6) - Text is colored in the order above. +colors=(distro) + + +# Text Options + + +# Toggle bold text +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --bold +bold="on" + +# Enable/Disable Underline +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --underline +underline_enabled="on" + +# Underline character +# +# Default: '-' +# Values: 'string' +# Flag: --underline_char +underline_char="-" + + +# Info Separator +# Replace the default separator with the specified string. +# +# Default: ':' +# Flag: --separator +# +# Example: +# separator="->": 'Shell-> bash' +# separator=" =": 'WM = dwm' +separator=":" + + +# Color Blocks + + +# Color block range +# The range of colors to print. +# +# Default: '0', '15' +# Values: 'num' +# Flag: --block_range +# +# Example: +# +# Display colors 0-7 in the blocks. (8 colors) +# neofetch --block_range 0 7 +# +# Display colors 0-15 in the blocks. (16 colors) +# neofetch --block_range 0 15 +block_range=(0 15) + +# Toggle color blocks +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --color_blocks +color_blocks="on" + +# Color block width in spaces +# +# Default: '3' +# Values: 'num' +# Flag: --block_width +block_width=3 + +# Color block height in lines +# +# Default: '1' +# Values: 'num' +# Flag: --block_height +block_height=1 + +# Color Alignment +# +# Default: 'auto' +# Values: 'auto', 'num' +# Flag: --col_offset +# +# Number specifies how far from the left side of the terminal (in spaces) to +# begin printing the columns, in case you want to e.g. center them under your +# text. +# Example: +# col_offset="auto" - Default behavior of neofetch +# col_offset=7 - Leave 7 spaces then print the colors +col_offset="auto" + +# Progress Bars + + +# Bar characters +# +# Default: '-', '=' +# Values: 'string', 'string' +# Flag: --bar_char +# +# Example: +# neofetch --bar_char 'elapsed' 'total' +# neofetch --bar_char '-' '=' +bar_char_elapsed="-" +bar_char_total="=" + +# Toggle Bar border +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --bar_border +bar_border="on" + +# Progress bar length in spaces +# Number of chars long to make the progress bars. +# +# Default: '15' +# Values: 'num' +# Flag: --bar_length +bar_length=15 + +# Progress bar colors +# When set to distro, uses your distro's logo colors. +# +# Default: 'distro', 'distro' +# Values: 'distro', 'num' +# Flag: --bar_colors +# +# Example: +# neofetch --bar_colors 3 4 +# neofetch --bar_colors distro 5 +bar_color_elapsed="distro" +bar_color_total="distro" + + +# Info display +# Display a bar with the info. +# +# Default: 'off' +# Values: 'bar', 'infobar', 'barinfo', 'off' +# Flags: --cpu_display +# --memory_display +# --battery_display +# --disk_display +# +# Example: +# bar: '[---=======]' +# infobar: 'info [---=======]' +# barinfo: '[---=======] info' +# off: 'info' +cpu_display="off" +memory_display="off" +battery_display="off" +disk_display="off" + + +# Backend Settings + + +# Image backend. +# +# Default: 'ascii' +# Values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off', +# 'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty' +# Flag: --backend +image_backend="ascii" + +# Image Source +# +# Which image or ascii file to display. +# +# Default: 'auto' +# Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/' +# 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")' +# Flag: --source +# +# NOTE: 'auto' will pick the best image source for whatever image backend is used. +# In ascii mode, distro ascii art will be used and in an image mode, your +# wallpaper will be used. +image_source="auto" + + +# Ascii Options + + +# Ascii distro +# Which distro's ascii art to display. +# +# Default: 'auto' +# Values: 'auto', 'distro_name' +# Flag: --ascii_distro +# NOTE: AIX, Alpine, Anarchy, Android, Antergos, antiX, "AOSC OS", +# "AOSC OS/Retro", Apricity, ArcoLinux, ArchBox, ARCHlabs, +# ArchStrike, XFerience, ArchMerge, Arch, Artix, Arya, Bedrock, +# Bitrig, BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD, +# BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS, +# Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover, +# Condres, Container_Linux, CRUX, Cucumber, Debian, Deepin, +# DesaOS, Devuan, DracOS, DarkOs, DragonFly, Drauger, Elementary, +# EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD, +# FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo, +# gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra, +# Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion, +# Korora, KSLinux, Kubuntu, LEDE, LFS, Linux_Lite, +# LMDE, Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva, +# Manjaro, Maui, Mer, Minix, LinuxMint, MX_Linux, Namib, +# Neptune, NetBSD, Netrunner, Nitrux, NixOS, Nurunner, +# NuTyX, OBRevenge, OpenBSD, openEuler, OpenIndiana, openmamba, +# OpenMandriva, OpenStage, OpenWrt, osmc, Oracle, OS Elbrus, PacBSD, +# Parabola, Pardus, Parrot, Parsix, TrueOS, PCLinuxOS, Peppermint, +# popos, Porteus, PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix, +# Raspbian, Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan, +# Regata, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific, +# Septor, SereneLinux, SharkLinux, Siduction, Slackware, SliTaz, +# SmartOS, Solus, Source_Mage, Sparky, Star, SteamOS, SunOS, +# openSUSE_Leap, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails, +# Trisquel, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio, +# Ubuntu, Venom, Void, Obarun, windows10, Windows7, Xubuntu, Zorin, +# and IRIX have ascii logos +# NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants. +# Use '{distro name}_old' to use the old logos. +# NOTE: Ubuntu has flavor variants. +# Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME, +# Ubuntu-Studio, Ubuntu-Mate or Ubuntu-Budgie to use the flavors. +# NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu, +# CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android, +# Antrix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola, +# Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS, +# Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian, +# postmarketOS, and Void have a smaller logo variant. +# Use '{distro name}_small' to use the small variants. +ascii_distro="auto" + +# Ascii Colors +# +# Default: 'distro' +# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num' +# Flag: --ascii_colors +# +# Example: +# ascii_colors=(distro) - Ascii is colored based on Distro colors. +# ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors. +ascii_colors=(120 228 210 210 175 140) + + +# Bold ascii logo +# Whether or not to bold the ascii logo. +# +# Default: 'on' +# Values: 'on', 'off' +# Flag: --ascii_bold +ascii_bold="on" + + +# Image Options + + +# Image loop +# Setting this to on will make neofetch redraw the image constantly until +# Ctrl+C is pressed. This fixes display issues in some terminal emulators. +# +# Default: 'off' +# Values: 'on', 'off' +# Flag: --loop +image_loop="off" + +# Thumbnail directory +# +# Default: '~/.cache/thumbnails/neofetch' +# Values: 'dir' +thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch" + +# Crop mode +# +# Default: 'normal' +# Values: 'normal', 'fit', 'fill' +# Flag: --crop_mode +# +# See this wiki page to learn about the fit and fill options. +# https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F +crop_mode="normal" + +# Crop offset +# Note: Only affects 'normal' crop mode. +# +# Default: 'center' +# Values: 'northwest', 'north', 'northeast', 'west', 'center' +# 'east', 'southwest', 'south', 'southeast' +# Flag: --crop_offset +crop_offset="center" + +# Image size +# The image is half the terminal width by default. +# +# Default: 'auto' +# Values: 'auto', '00px', '00%', 'none' +# Flags: --image_size +# --size +image_size="auto" + +# Gap between image and text +# +# Default: '3' +# Values: 'num', '-num' +# Flag: --gap +gap=3 + +# Image offsets +# Only works with the w3m backend. +# +# Default: '0' +# Values: 'px' +# Flags: --xoffset +# --yoffset +yoffset=0 +xoffset=0 + +# Image background color +# Only works with the w3m backend. +# +# Default: '' +# Values: 'color', 'blue' +# Flag: --bg_color +background_color= + + +# Misc Options + +# Stdout mode +# Turn off all colors and disables image backend (ASCII/Image). +# Useful for piping into another command. +# Default: 'off' +# Values: 'on', 'off' +stdout="off" diff --git a/mac/.config/pam-gnupg b/mac/.config/pam-gnupg new file mode 100644 index 0000000..a3150cf --- /dev/null +++ b/mac/.config/pam-gnupg @@ -0,0 +1,2 @@ +FBAE9F51CA060B2A5E377DD75CD76D3C44BE0FD9 +CEA80B05ABA46C5DE584655EFD7D26E81A2DFF65 diff --git a/mac/.config/sketchybar/colors.sh b/mac/.config/sketchybar/colors.sh new file mode 100644 index 0000000..cdbd908 --- /dev/null +++ b/mac/.config/sketchybar/colors.sh @@ -0,0 +1,104 @@ +#!/bin/bash + +### Sonokai +# export BLACK=0xff181819 #181819 +# export WHITE=0xffe2e2e3 #e2e2e3 +# export RED=0xfffc5d7c #fc5d7c +# export GREEN=0xff9ed072 #9ed072 +# export BLUE=0xff76cce0 #76cce0 +# export YELLOW=0xffe7c664 #e7c664 +# export ORANGE=0xfff39660 #f39660 +# export MAGENTA=0xffb39df3 #b39df3 +# export GREY=0xff7f8490 #7f8490 +# export BG0=0xff2c2e34 #2c2e34 +# export BG1=0xff363944 #363944 +# export BG2=0xff414550 #414550 +# export TRANSPARENT=0x00000000 #000000 + +### Catppuccin +export ROSEWATER=0xfff4dbd6 #f4dbd6 +export FLAMINGO=0xfff0c6c6 #f0c6c6 +export PINK=0XFff5bde6 #f5bde6 +export MAUVE=0Xffc6a0f6 #c6a0f6 +export RED=0XFFed8796 #ed8796 +export MAROON=0xffee99a0 #ee99a0 +export PEACH=0Xfff5a97f #f5a97f +export YELLOW=0xffeed49f #eed49f +export GREEN=0Xffa6da95 #a6da95 +export TEAL=0XFf8bd5ca #8bd5ca +export SKY=0XFF91d7e3 #91d7e3 +export SAPPHIRE=0xff7dc4e4 #7dc4e4 +export BLUE=0XFf8aadf4 #8aadf4 +export LAVENDER=0xffb7bdf8 #b7bdf8 +export TEXT=0xffcad3f5 #cad3f5 +export SUBTEXT1=0xffb8c0e0 #b8c0e0 +export SUBTEXT0=0xffa5adcb #a5adcb +export OVERLAY2=0xff939ab7 #939ab7 +export OVERLAY1=0xff8087a2 #8087a2 +export OVERLAY0=0xff6e738d #6e738d +export SURFACE2=0xff5b6078 #5b6078 +export SURFACE1=0xff494d64 #494d64 +export SURFACE0=0xff363a4f #363a4f +export BASE=0XFf24273a #24273a +export MANTLE=0xff1e2030 #1e2030 +export CRUST=0Xff181926 #181926 + +# Others +export MAGENTA=0xffc6a0f6 #c6a0f6 +export ORANGE=0xfff5a97f #f5a97f +export CYAN=0xff89DDFF #89DDFF +export OSBLUE=0xff0259D1 #0259D1 + +# Base Colors +export BASE=0xff24273a #24273a +export BASE_BLACK="181926" #181926 +export BASE_WHITE="eeeeee" #eeeeee +export WHITE=0xffcad3f5 #cad3f5 +export LIGHT_GREY=0xffa6accd #a6accd +export GREY=0xff939ab7 #939ab7 +export GREY_50=0x80676e95 #676e95 +export DARK_GREY=0xff292d3e #292d3e +export BLACK=0xff181926 #181926 +export BG0=0xff1e1e2e #1e1e2e +export BG1=0x603c3e4f #3c3e4f +export BG2=0x60494d64 #494d64 +export TRANSPARENT=0x00000000 #000000 + +O100=0xff # 100% +O75=0xbf # 75% +O50=0x80 # 50% +O25=0x40 # 25% +O10=0x1a # 10% + +export BLACK_75="$O75""$BASE_BLACK" +export BLACK_50="$O50""$BASE_BLACK" +export BLACK_25="$O25""$BASE_BLACK" +export WHITE_75="$O75""$BASE_WHITE" +export WHITE_50="$O50""$BASE_WHITE" +export WHITE_25="$O25""$BASE_WHITE" +export WHITE_10="$O10""$BASE_WHITE" + +# Text Colors +export TEXT=0xffcad3f5 #cad3f5 +export SUBTEXT0=0xffb8c0e0 #b8c0e0 +export SUBTEXT1=0xffa5adcb #a5adcb +export SURFACE0=0xff363a4f #363a4f +export SURFACE1=0xff494d64 #494d64 +export SURFACE2=0xff5b6078 #5b6078 +export OVERLAY0=0xff6e738d #6e738d +export OVERLAY1=0xff8087a2 #8087a2 +export OVERLAY2=0xff939ab7 #939ab7 + +# General Bar Colors +export BAR_COLOR=$BG0 +export BAR_BORDER_COLOR=$BG2 +export BACKGROUND_1=$BG1 +export BACKGROUND_2=$BG2 +export CONTRAST=0xff34324a #34324a +export HIGHLIGHT=$TEAL +export ICON_COLOR=$WHITE # Color of all icons +export ICON_COLOR_INACTIVE=$GREY +export LABEL_COLOR=$WHITE # Color of all labels +export POPUP_BACKGROUND_COLOR=$BAR_COLOR +export POPUP_BORDER_COLOR=$WHITE +export SHADOW_COLOR=$BLACK diff --git a/mac/.config/sketchybar/globalstyles.sh b/mac/.config/sketchybar/globalstyles.sh new file mode 100644 index 0000000..71b94ac --- /dev/null +++ b/mac/.config/sketchybar/globalstyles.sh @@ -0,0 +1,132 @@ +#!/bin/bash + +# Load defined icons +source "$CONFIG_DIR/icons.sh" + +# Load defined colors +source "$CONFIG_DIR/colors.sh" + +PADDINGS=8 +FONT="Hack Nerd Font" + +# Bar Appearance +bar=( + color=$BAR_COLOR + sticky=on + height=28 + padding_left=$PADDINGS + padding_right=$PADDINGS + corner_radius=0 + blur_radius=0 + border_width=2 + border_color=$TRANSPARENT + background_color=$BAR_COLOR + shadow=off + position=bottom + padding_right=10 + padding_left=10 + # y_offset=-2 + margin=-5 + sticky=on + topmost=off # on/off/window +) + +# Setting up default values +defaults=( + updates=when_shown + icon.font="$FONT:Bold:10.0" + icon.color=$ICON_COLOR + icon.padding_left=$PADDINGS + icon.padding_right=$PADDINGS + label.font="$FONT:Semibold:13" + label.color=$LABEL_COLOR + label.padding_left=$PADDINGS + label.padding_right=$PADDINGS + padding_right=$PADDINGS + padding_left=$PADDINGS + background.color=$BAR_COLOR + background.height=24 + background.corner_radius=3 + background.border_width=1 + popup.background.border_width=2 + popup.background.corner_radius=9 + popup.background.border_color=$POPUP_BORDER_COLOR + popup.background.color=$POPUP_BACKGROUND_COLOR + popup.blur_radius=20 + popup.background.shadow.drawing=on + scroll_texts=on +) + +bracket_defaults=( + background.height=24 + background.color=$BAR_COLOR + blur_radius=32 + background.corner_radius=$PADDINGS +) + +icon_defaults=( + label.drawing=off +) + +# Item Defaults +item_defaults=( + background.color=$TRANSPARENT + background.padding_left=$(($PADDINGS / 2)) + background.padding_right=$(($PADDINGS / 2)) + icon.padding_left=2 + icon.padding_right=$(($PADDINGS / 2)) + icon.background.corner_radius=4 + icon.background.height=24 + icon.font="$FONT:Regular:12" + icon.color=$ICON_COLOR + icon.highlight_color=$HIGHLIGHT + label.font="$FONT:Regular:12" + label.color=$LABEL_COLOR + label.highlight_color=$HIGHLIGHT + label.padding_left=$(($PADDINGS / 2)) + updates=when_shown + scroll_texts=on +) + +menu_defaults=( + popup.background.border_color=$POPUP_BORDER_COLOR + popup.background.color=$POPUP_BACKGROUND_COLOR + popup.background.shadow.drawing=on + popup.blur_radius=32 + popup.background.corner_radius=$PADDINGS + popup.background.shadow.drawing=on + popup.background.border_width=1 +) + +menu_item_defaults=( + label.font="$FONT:Regular:13" + padding_left=$PADDINGS + padding_right=$PADDINGS + icon.padding_left=0 + icon.color=$HIGHLIGHT + background.color=$TRANSPARENT +) + +notification_defaults=( + drawing=off + update_freq=120 + updates=on + background.color=$WHITE_25 + background.height=24 + background.corner_radius=16 + icon.font.size=10 + icon.padding_left=$PADDINGS + icon.padding_right=0 + icon.color=$BLACK_75 + label.color=$BLACK_75 + label.padding_right=$PADDINGS + label.font.size=11 + label.font.style=Bold +) + +separator=( + background.height=1 + width=200 + background.color=$WHITE_25 + background.y_offset=-16 +) diff --git a/mac/.config/sketchybar/helper/cpu.h b/mac/.config/sketchybar/helper/cpu.h new file mode 100644 index 0000000..c350ae3 --- /dev/null +++ b/mac/.config/sketchybar/helper/cpu.h @@ -0,0 +1,122 @@ +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <mach/mach.h> +#include <stdbool.h> +#include <time.h> + +#define MAX_TOPPROC_LEN 28 + +static const char TOPPROC[] = { "/bin/ps -Aceo pid,pcpu,comm -r" }; +static const char FILTER_PATTERN[] = { "com.apple." }; + +struct cpu { + host_t host; + mach_msg_type_number_t count; + host_cpu_load_info_data_t load; + host_cpu_load_info_data_t prev_load; + bool has_prev_load; + + char command[256]; +}; + +static inline void cpu_init(struct cpu* cpu) { + cpu->host = mach_host_self(); + cpu->count = HOST_CPU_LOAD_INFO_COUNT; + cpu->has_prev_load = false; + snprintf(cpu->command, 100, ""); +} + +static inline void cpu_update(struct cpu* cpu) { + kern_return_t error = host_statistics(cpu->host, + HOST_CPU_LOAD_INFO, + (host_info_t)&cpu->load, + &cpu->count ); + + if (error != KERN_SUCCESS) { + printf("Error: Could not read cpu host statistics.\n"); + return; + } + + if (cpu->has_prev_load) { + uint32_t delta_user = cpu->load.cpu_ticks[CPU_STATE_USER] + - cpu->prev_load.cpu_ticks[CPU_STATE_USER]; + + uint32_t delta_system = cpu->load.cpu_ticks[CPU_STATE_SYSTEM] + - cpu->prev_load.cpu_ticks[CPU_STATE_SYSTEM]; + + uint32_t delta_idle = cpu->load.cpu_ticks[CPU_STATE_IDLE] + - cpu->prev_load.cpu_ticks[CPU_STATE_IDLE]; + + double user_perc = (double)delta_user / (double)(delta_system + + delta_user + + delta_idle); + + double sys_perc = (double)delta_system / (double)(delta_system + + delta_user + + delta_idle); + + double total_perc = user_perc + sys_perc; + + FILE* file; + char line[1024]; + + file = popen(TOPPROC, "r"); + if (!file) { + printf("Error: TOPPROC command errored out...\n" ); + return; + } + + fgets(line, sizeof(line), file); + fgets(line, sizeof(line), file); + + char* start = strstr(line, FILTER_PATTERN); + char topproc[MAX_TOPPROC_LEN + 4]; + uint32_t caret = 0; + for (int i = 0; i < sizeof(line); i++) { + if (start && i == start - line) { + i+=9; + continue; + } + + if (caret >= MAX_TOPPROC_LEN && caret <= MAX_TOPPROC_LEN + 2) { + topproc[caret++] = '.'; + continue; + } + if (caret > MAX_TOPPROC_LEN + 2) break; + topproc[caret++] = line[i]; + if (line[i] == '\0') break; + } + + topproc[MAX_TOPPROC_LEN + 3] = '\0'; + + pclose(file); + + char color[16]; + if (total_perc >= .7) { + snprintf(color, 16, "%s", getenv("RED")); + } else if (total_perc >= .3) { + snprintf(color, 16, "%s", getenv("ORANGE")); + } else if (total_perc >= .1) { + snprintf(color, 16, "%s", getenv("YELLOW")); + } else { + snprintf(color, 16, "%s", getenv("LABEL_COLOR")); + } + + snprintf(cpu->command, 256, "--push cpu.sys %.2f " + "--push cpu.user %.2f " + "--set cpu.top label='%s' " + "--set cpu.percent label=%.0f%% label.color=%s ", + sys_perc, + user_perc, + topproc, + total_perc*100., + color ); + } + else { + snprintf(cpu->command, 256, ""); + } + + cpu->prev_load = cpu->load; + cpu->has_prev_load = true; +} diff --git a/mac/.config/sketchybar/helper/helper b/mac/.config/sketchybar/helper/helper Binary files differnew file mode 100644 index 0000000..050cca7 --- /dev/null +++ b/mac/.config/sketchybar/helper/helper diff --git a/mac/.config/sketchybar/helper/helper.c b/mac/.config/sketchybar/helper/helper.c new file mode 100644 index 0000000..71c3038 --- /dev/null +++ b/mac/.config/sketchybar/helper/helper.c @@ -0,0 +1,31 @@ +#include "cpu.h" +#include "sketchybar.h" + +struct cpu g_cpu; + +void handler(env env) { + // Environment variables passed from sketchybar can be accessed as seen below + char* name = env_get_value_for_key(env, "NAME"); + char* sender = env_get_value_for_key(env, "SENDER"); + char* info = env_get_value_for_key(env, "INFO"); + char* selected = env_get_value_for_key(env, "SELECTED"); + + if ((strcmp(name, "cpu.percent") == 0)) { + // CPU graph updates + cpu_update(&g_cpu); + + if (strlen(g_cpu.command) > 0) sketchybar(g_cpu.command); + } +} + +int main (int argc, char** argv) { + cpu_init(&g_cpu); + + if (argc < 2) { + printf("Usage: helper \"<bootstrap name>\"\n"); + exit(1); + } + + event_server_begin(handler, argv[1]); + return 0; +} diff --git a/mac/.config/sketchybar/helper/makefile b/mac/.config/sketchybar/helper/makefile new file mode 100644 index 0000000..ac8721a --- /dev/null +++ b/mac/.config/sketchybar/helper/makefile @@ -0,0 +1,3 @@ + +helper: helper.c cpu.h sketchybar.h + clang -std=c99 -O3 helper.c -o helper diff --git a/mac/.config/sketchybar/helper/sketchybar.h b/mac/.config/sketchybar/helper/sketchybar.h new file mode 100644 index 0000000..2ab4c39 --- /dev/null +++ b/mac/.config/sketchybar/helper/sketchybar.h @@ -0,0 +1,209 @@ +#pragma once + +#include <mach/mach.h> +#include <mach/mach_port.h> +#include <mach/message.h> +#include <bootstrap.h> +#include <stdlib.h> +#include <pthread.h> +#include <stdio.h> + +typedef char* env; + +#define MACH_HANDLER(name) void name(env env) +typedef MACH_HANDLER(mach_handler); + +struct mach_message { + mach_msg_header_t header; + mach_msg_size_t msgh_descriptor_count; + mach_msg_ool_descriptor_t descriptor; +}; + +struct mach_buffer { + struct mach_message message; + mach_msg_trailer_t trailer; +}; + +struct mach_server { + bool is_running; + mach_port_name_t task; + mach_port_t port; + mach_port_t bs_port; + + pthread_t thread; + mach_handler* handler; +}; + +static struct mach_server g_mach_server; +static mach_port_t g_mach_port = 0; + +static inline char* env_get_value_for_key(env env, char* key) { + uint32_t caret = 0; + for(;;) { + if (!env[caret]) break; + if (strcmp(&env[caret], key) == 0) + return &env[caret + strlen(&env[caret]) + 1]; + + caret += strlen(&env[caret]) + + strlen(&env[caret + strlen(&env[caret]) + 1]) + + 2; + } + return (char*)""; +} + +static inline mach_port_t mach_get_bs_port() { + mach_port_name_t task = mach_task_self(); + + mach_port_t bs_port; + if (task_get_special_port(task, + TASK_BOOTSTRAP_PORT, + &bs_port ) != KERN_SUCCESS) { + return 0; + } + + mach_port_t port; + if (bootstrap_look_up(bs_port, + "git.felix.sketchybar", + &port ) != KERN_SUCCESS) { + return 0; + } + + return port; +} + +static inline void mach_receive_message(mach_port_t port, struct mach_buffer* buffer, bool timeout) { + *buffer = (struct mach_buffer) { 0 }; + mach_msg_return_t msg_return; + if (timeout) + msg_return = mach_msg(&buffer->message.header, + MACH_RCV_MSG | MACH_RCV_TIMEOUT, + 0, + sizeof(struct mach_buffer), + port, + 100, + MACH_PORT_NULL ); + else + msg_return = mach_msg(&buffer->message.header, + MACH_RCV_MSG, + 0, + sizeof(struct mach_buffer), + port, + MACH_MSG_TIMEOUT_NONE, + MACH_PORT_NULL ); + + if (msg_return != MACH_MSG_SUCCESS) { + buffer->message.descriptor.address = NULL; + } +} + +static inline char* mach_send_message(mach_port_t port, char* message, uint32_t len) { + if (!message || !port) { + return NULL; + } + + struct mach_message msg = { 0 }; + msg.header.msgh_remote_port = port; + msg.header.msgh_local_port = 0; + msg.header.msgh_id = 0; + msg.header.msgh_bits = MACH_MSGH_BITS_SET(MACH_MSG_TYPE_COPY_SEND, + MACH_MSG_TYPE_MAKE_SEND, + 0, + MACH_MSGH_BITS_COMPLEX ); + + msg.header.msgh_size = sizeof(struct mach_message); + msg.msgh_descriptor_count = 1; + msg.descriptor.address = message; + msg.descriptor.size = len * sizeof(char); + msg.descriptor.copy = MACH_MSG_VIRTUAL_COPY; + msg.descriptor.deallocate = false; + msg.descriptor.type = MACH_MSG_OOL_DESCRIPTOR; + + mach_msg(&msg.header, + MACH_SEND_MSG, + sizeof(struct mach_message), + 0, + MACH_PORT_NULL, + MACH_MSG_TIMEOUT_NONE, + MACH_PORT_NULL ); + + return NULL; +} + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +static inline bool mach_server_begin(struct mach_server* mach_server, mach_handler handler, char* bootstrap_name) { + mach_server->task = mach_task_self(); + + if (mach_port_allocate(mach_server->task, + MACH_PORT_RIGHT_RECEIVE, + &mach_server->port ) != KERN_SUCCESS) { + return false; + } + + if (mach_port_insert_right(mach_server->task, + mach_server->port, + mach_server->port, + MACH_MSG_TYPE_MAKE_SEND) != KERN_SUCCESS) { + return false; + } + + if (task_get_special_port(mach_server->task, + TASK_BOOTSTRAP_PORT, + &mach_server->bs_port) != KERN_SUCCESS) { + return false; + } + + if (bootstrap_register(mach_server->bs_port, + bootstrap_name, + mach_server->port ) != KERN_SUCCESS) { + return false; + } + + mach_server->handler = handler; + mach_server->is_running = true; + struct mach_buffer buffer; + while (mach_server->is_running) { + mach_receive_message(mach_server->port, &buffer, false); + mach_server->handler((env)buffer.message.descriptor.address); + mach_msg_destroy(&buffer.message.header); + } + + return true; +} +#pragma clang diagnostic pop + +static inline char* sketchybar(char* message) { + uint32_t message_length = strlen(message) + 1; + char formatted_message[message_length + 1]; + + char quote = '\0'; + uint32_t caret = 0; + for (int i = 0; i < message_length; ++i) { + if (message[i] == '"' || message[i] == '\'') { + if (quote == message[i]) quote = '\0'; + else quote = message[i]; + continue; + } + formatted_message[caret] = message[i]; + if (message[i] == ' ' && !quote) formatted_message[caret] = '\0'; + caret++; + } + + if (caret > 0 && formatted_message[caret] == '\0' + && formatted_message[caret - 1] == '\0') { + caret--; + } + + formatted_message[caret] = '\0'; + if (!g_mach_port) g_mach_port = mach_get_bs_port(); + char* response = mach_send_message(g_mach_port, + formatted_message, + caret + 1 ); + + if (response) return response; + else return (char*)""; +} + +static inline void event_server_begin(mach_handler event_handler, char* bootstrap_name) { + mach_server_begin(&g_mach_server, event_handler, bootstrap_name); +} diff --git a/mac/.config/sketchybar/icons.sh b/mac/.config/sketchybar/icons.sh new file mode 100644 index 0000000..2321507 --- /dev/null +++ b/mac/.config/sketchybar/icons.sh @@ -0,0 +1,70 @@ +#!/bin/bash + +# General Icons +LOADING= +APPLE= +PREFERENCES= +ACTIVITY= +LOCK= +BELL= +BELL_DOT= + +# Git Icons +GIT_ISSUE= +GIT_DISCUSSION= +GIT_PULL_REQUEST= +GIT_COMMIT= +GIT_INDICATOR= + +# Music +MUSIC= + +# Spotify Icons +SPOTIFY_BACK= +SPOTIFY_PLAY_PAUSE= +SPOTIFY_NEXT= +SPOTIFY_SHUFFLE= +SPOTIFY_REPEAT= + +# Yabai Icons +YABAI_STACK= +YABAI_FULLSCREEN_ZOOM= +YABAI_PARENT_ZOOM= +YABAI_FLOAT= +YABAI_GRID= +YABAI_SPLIT_VERTICAL= +YABAI_SPLIT_HORIZONTAL= + +# Battery Icons +BATTERY= +BATTERY_100= +BATTERY_75= +BATTERY_50= +BATTERY_25= +BATTERY_0= +BATTERY_CHARGING= + +CPU= +DISK= +MEMORY= +NETWORK= +NETWORK_UP= +NETWORK_DOWN= + +# Volume Icons +VOLUME_100= +VOLUME_66= +VOLUME_33= +VOLUME_10= +VOLUME_0= + +# WiFi +WIFI_CONNECTED= +WIFI_DISCONNECTED= + +# svim +MODE_NORMAL= +MODE_INSERT= +MODE_VISUAL= +MODE_CMD= +MODE_PENDING= diff --git a/mac/.config/sketchybar/items/apple.sh b/mac/.config/sketchybar/items/apple.sh new file mode 100644 index 0000000..5f4e9dc --- /dev/null +++ b/mac/.config/sketchybar/items/apple.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +POPUP_OFF='sketchybar --set apple.logo popup.drawing=off' +POPUP_CLICK_SCRIPT='sketchybar --set $NAME popup.drawing=toggle' + +apple_logo=( + icon=$APPLE + icon.font="$FONT:Black:16.0" + icon.color=$BLUE + padding_right=-2 + label.drawing=off + click_script="$POPUP_CLICK_SCRIPT" + popup.height=35 +) + +apple_prefs=( + icon=$PREFERENCES + label="Preferences" + click_script="open -a 'System Preferences'; $POPUP_OFF" +) + +apple_activity=( + icon=$ACTIVITY + label="Activity" + click_script="open -a 'Activity Monitor'; $POPUP_OFF" +) + +apple_lock=( + icon=$LOCK + label="Lock Screen" + click_script="pmset displaysleepnow; $POPUP_OFF" +) + +sketchybar --add item apple.logo left \ + --set apple.logo "${apple_logo[@]}" \ + \ + --add item apple.prefs popup.apple.logo \ + --set apple.prefs "${apple_prefs[@]}" \ + \ + --add item apple.activity popup.apple.logo \ + --set apple.activity "${apple_activity[@]}" \ + \ + --add item apple.lock popup.apple.logo \ + --set apple.lock "${apple_lock[@]}" diff --git a/mac/.config/sketchybar/items/battery.sh b/mac/.config/sketchybar/items/battery.sh new file mode 100644 index 0000000..758547b --- /dev/null +++ b/mac/.config/sketchybar/items/battery.sh @@ -0,0 +1,23 @@ +#!/bin/env/bash + +battery=( + "${menu_defaults[@]}" + icon.font.size=16 + icon.font.style="Light" + label.drawing=off + update_freq=60 + popup.align=right + click_script="sketchybar --set battery popup.drawing=toggle" + script="$PLUGIN_DIR/battery.sh" + updates=when_shown +) + +sketchybar \ + --add item battery right \ + --set battery "${battery[@]}" \ + --subscribe battery power_source_change \ + mouse.entered \ + mouse.exited \ + mouse.exited.global \ + --add item battery.details popup.battery \ + --set battery.details "${menu_item_defaults[@]}" icon.drawing=off label.padding_left=0 diff --git a/mac/.config/sketchybar/items/brew.sh b/mac/.config/sketchybar/items/brew.sh new file mode 100644 index 0000000..4e58efd --- /dev/null +++ b/mac/.config/sketchybar/items/brew.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +# Trigger the brew_udpate event when brew update or upgrade is run from cmdline +# e.g. via function in .zshrc or fish function + +POPUP_CLICK_SCRIPT="sketchybar --set $NAME popup.drawing=toggle" + +brew=( + script="$PLUGIN_DIR/brew.sh" + click_script="$POPUP_CLICK_SCRIPT" + icon= + label=? + update_freq=30 + popup.align=right + popup.height=20 + icon.padding_right=-1 + padding_left=0 + padding_right=-1 + y_offset=1 +) + +brew_details=( + background.corner_radius=12 + background.padding_left=5 + background.padding_right=10 + click_script="sketchybar --set brew popup.drawing=off" +) + +sketchybar --add event brew_update \ + --add item brew right \ + --set brew "${brew[@]}" \ + \ + --subscribe brew brew_update \ + mouse.entered \ + mouse.exited \ + mouse.exited.global \ + \ + --add item brew.details popup.brew \ + --set brew.details "${brew_details[@]}" diff --git a/mac/.config/sketchybar/items/cpu.sh b/mac/.config/sketchybar/items/cpu.sh new file mode 100644 index 0000000..2a61f2f --- /dev/null +++ b/mac/.config/sketchybar/items/cpu.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +# cpu_top=( +# label.font="$FONT:Semibold:7" +# label=CPU +# icon.drawing=off +# width=0 +# padding_right=10 +# y_offset=6 +# ) +# +# cpu_percent=( +# label.font="$FONT:Heavy:12" +# label=CPU +# y_offset=-4 +# padding_right=10 +# width=55 +# icon.drawing=off +# update_freq=4 +# mach_helper="$HELPER" +# ) +# +# cpu_sys=( +# width=0 +# graph.color=$RED +# graph.fill_color=$RED +# label.drawing=off +# icon.drawing=off +# background.height=30 +# background.drawing=on +# background.color=$TRANSPARENT +# y_offset=3 +# ) +# +# cpu_user=( +# graph.color=$BLUE +# label.drawing=off +# icon.drawing=off +# background.height=30 +# background.drawing=on +# background.color=$TRANSPARENT +# background.padding_left=10 +# y_offset=3 +# ) +# +# sketchybar --add item cpu.top right \ +# --set cpu.top "${cpu_top[@]}" \ +# \ +# --add item cpu.percent right \ +# --set cpu.percent "${cpu_percent[@]}" \ +# \ +# --add graph cpu.sys right 75 \ +# --set cpu.sys "${cpu_sys[@]}" \ +# \ +# --add graph cpu.user right 75 \ +# --set cpu.user "${cpu_user[@]}" + +source "$HOME/.config/sketchybar/colors.sh" + +cpu_percent=( + label.font="$FONT:Heavy:12" + label=CPU% + label.color="$TEXT" + icon="$CPU" + icon.font.size=16 + icon.color="$BLUE" + icon.padding_right=-2 + padding_right=-2 + update_freq=2 + mach_helper="$HELPER" +) + +sketchybar --add item cpu.percent right \ + --set cpu.percent "${cpu_percent[@]}" diff --git a/mac/.config/sketchybar/items/datetime.sh b/mac/.config/sketchybar/items/datetime.sh new file mode 100644 index 0000000..4160a37 --- /dev/null +++ b/mac/.config/sketchybar/items/datetime.sh @@ -0,0 +1,37 @@ +#!/bin/env/bash + +sketchybar \ + --add item date right \ + --set date update_freq=60 \ + label.font="$FONT:Semibold:10" \ + align=right \ + icon.drawing=off \ + label.padding_right=4 \ + \ + width=0 \ + script='sketchybar --set $NAME label="$(date "+%a, %b %d")"' \ + click_script="open -a Calendar.app" \ + --subscribe date system_woke \ + mouse.entered \ + mouse.exited \ + mouse.exited.global \ + --add item date.details popup.date \ + --set date.details "${menu_item_defaults[@]}" \ + --add item clock right \ + --set clock update_freq=10 \ + \ + icon.drawing=off \ + label.font="$FONT:Bold:11" \ + align=right \ + label.padding_right=4 \ + popup.align=right \ + "${menu_defaults[@]}" \ + script="$PLUGIN_DIR/nextevent.sh" \ + click_script="sketchybar --set clock popup.drawing=toggle; open -a Calendar.app" \ + --subscribe clock system_woke \ + mouse.entered \ + mouse.exited \ + mouse.exited.global \ + --add item clock.details popup.clock \ + --set clock.details "${menu_item_defaults[@]}" icon.drawing=off label.padding_left=0 # y_offset=3 \ +# y_offset=-6 \ diff --git a/mac/.config/sketchybar/items/disk.sh b/mac/.config/sketchybar/items/disk.sh new file mode 100644 index 0000000..399427f --- /dev/null +++ b/mac/.config/sketchybar/items/disk.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +source "$CONFIG_DIR/colors.sh" # Loads all defined colors +source "$CONFIG_DIR/icons.sh" # Loads all defined icons + +disk=( + label.font="$FONT:Heavy:12" + label.color="$TEXT" + icon="$DISK" + icon.font="$FONT:Bold:18.0" + icon.padding_right=-2 + icon.color="$MAROON" + update_freq=60 + script="$PLUGIN_DIR/disk.sh" +) + +sketchybar --add item disk right \ + --set disk "${disk[@]}" diff --git a/mac/.config/sketchybar/items/dnd.sh b/mac/.config/sketchybar/items/dnd.sh new file mode 100644 index 0000000..84eaf8c --- /dev/null +++ b/mac/.config/sketchybar/items/dnd.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +sketchybar \ + --add item dnd right \ + --set dnd script="$PLUGIN_DIR/dnd.sh" \ + label.drawing=off \ + --add event focus_on "_NSDoNotDisturbEnabledNotification" \ + --add event focus_off "_NSDoNotDisturbDisabledNotification" \ + --subscribe dnd focus_on focus_off mouse.clicked diff --git a/mac/.config/sketchybar/items/front_app.sh b/mac/.config/sketchybar/items/front_app.sh new file mode 100644 index 0000000..5839243 --- /dev/null +++ b/mac/.config/sketchybar/items/front_app.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +front_app=( + label.font="$FONT:Black:12.0" + icon.background.drawing=on + display=active + script="$PLUGIN_DIR/front_app.sh" + click_script="open -a 'Mission Control'" +) + +sketchybar --add item front_app left \ + --set front_app "${front_app[@]}" \ + --subscribe front_app front_app_switched diff --git a/mac/.config/sketchybar/items/github.sh b/mac/.config/sketchybar/items/github.sh new file mode 100644 index 0000000..1a27fd5 --- /dev/null +++ b/mac/.config/sketchybar/items/github.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +POPUP_CLICK_SCRIPT="sketchybar --set \$NAME popup.drawing=toggle" + +github_bell=( + padding_right=-5 + update_freq=180 + icon=$BELL + icon.font="$FONT:Bold:15.0" + icon.color=$BLUE + label=$LOADING + label.highlight_color=$BLUE + popup.align=right + script="$PLUGIN_DIR/github.sh" + click_script="$POPUP_CLICK_SCRIPT" +) + +github_template=( + drawing=off + background.corner_radius=12 + padding_left=7 + padding_right=7 + icon.background.height=2 + icon.background.y_offset=-12 +) + +sketchybar --add event github.update \ + --add item github.bell right \ + --set github.bell "${github_bell[@]}" \ + --subscribe github.bell mouse.entered \ + mouse.exited \ + mouse.exited.global \ + system_woke \ + github.update \ + \ + --add item github.template popup.github.bell \ + --set github.template "${github_template[@]}" diff --git a/mac/.config/sketchybar/items/kakaotalk.sh b/mac/.config/sketchybar/items/kakaotalk.sh new file mode 100644 index 0000000..e5c5cf5 --- /dev/null +++ b/mac/.config/sketchybar/items/kakaotalk.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +kakaotalk=( + "${notification_defaults[@]}" + icon= + icon.font.size=13 + background.color=$YELLOW + script="$PLUGIN_DIR/kakaotalk.sh" + click_script="open -a /System/Applications/KakaoTalk.app" + icon.padding_left=7 + icon.padding_right=2 + label.padding_right=7 + background.padding_right=5 + background.height=20 +) + +sketchybar --add item kakaotalk right \ + --set kakaotalk "${kakaotalk[@]}" diff --git a/mac/.config/sketchybar/items/keyboard.sh b/mac/.config/sketchybar/items/keyboard.sh new file mode 100644 index 0000000..bffaf52 --- /dev/null +++ b/mac/.config/sketchybar/items/keyboard.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +keyboard=( + padding_right=4 + icon.drawing=off + script="$PLUGIN_DIR/keyboard.sh" + icon.color=$GREY + icon.font="$FONT:Regular:14.0" +) + +sketchybar --add item keyboard right \ + --set keyboard "${keyboard[@]}" \ + --add event keyboard_change "AppleSelectedInputSourcesChangedNotification" \ + --subscribe keyboard keyboard_change diff --git a/mac/.config/sketchybar/items/mail.sh b/mac/.config/sketchybar/items/mail.sh new file mode 100644 index 0000000..590d52b --- /dev/null +++ b/mac/.config/sketchybar/items/mail.sh @@ -0,0 +1,19 @@ +#!/bin/env/bash + +# Load global styles, colors and icons +source "$CONFIG_DIR/globalstyles.sh" + +mail=( + "${notification_defaults[@]}" + icon= + icon.y_offset=1 + background.color=$YELLOW + background.height=18 + icon.padding_left=6 + label.padding_right=6 + script="$PLUGIN_DIR/mail.sh" + click_script="open -a /System/Applications/Mail.app" +) + +sketchybar --add item mail right \ + --set mail "${mail[@]}" diff --git a/mac/.config/sketchybar/items/memory.sh b/mac/.config/sketchybar/items/memory.sh new file mode 100644 index 0000000..5ff38ca --- /dev/null +++ b/mac/.config/sketchybar/items/memory.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +source "$CONFIG_DIR/colors.sh" # Loads all defined colors +source "$CONFIG_DIR/icons.sh" # Loads all defined icons + +memory=( + label.font="$FONT:Heavy:12" + label.color="$TEXT" + icon="$MEMORY" + icon.font="$FONT:Bold:16.0" + icon.font.size=20 + icon.color="$GREEN" + update_freq=15 + script="$PLUGIN_DIR/memory.sh" + icon.padding_right=-2 + padding_right=-2 +) + +sketchybar --add item memory right \ + --set memory "${memory[@]}" diff --git a/mac/.config/sketchybar/items/messages.sh b/mac/.config/sketchybar/items/messages.sh new file mode 100644 index 0000000..9ad9513 --- /dev/null +++ b/mac/.config/sketchybar/items/messages.sh @@ -0,0 +1,13 @@ +# Load global styles, colors and icons +source "$CONFIG_DIR/globalstyles.sh" + +messages=( + "${notification_defaults[@]}" + icon= + background.color=$GREEN + script="$PLUGIN_DIR/messages.sh" + click_script="open -a /System/Applications/Messages.app" +) + +sketchybar --add item messages right \ + --set messages "${messages[@]}"
\ No newline at end of file diff --git a/mac/.config/sketchybar/items/mic.sh b/mac/.config/sketchybar/items/mic.sh new file mode 100644 index 0000000..666af0e --- /dev/null +++ b/mac/.config/sketchybar/items/mic.sh @@ -0,0 +1,5 @@ +sketchybar -m --add item mic right \ + --set mic update_freq=3 \ + --set mic script="$PLUGIN_DIR/mic.sh" \ + --set mic click_script="$PLUGIN_DIR/mic_click.sh" \ + padding_right=-8 diff --git a/mac/.config/sketchybar/items/music.sh b/mac/.config/sketchybar/items/music.sh new file mode 100644 index 0000000..3730d88 --- /dev/null +++ b/mac/.config/sketchybar/items/music.sh @@ -0,0 +1,36 @@ +#!/bin/env/bash + +# Load global styles, colors and icons +source "$CONFIG_DIR/globalstyles.sh" + +music=( + "${bracket_defaults[@]}" + script="$PLUGIN_DIR/music.sh" + popup.align=center + padding_left=0 + label.padding_right=$PADDINGS + padding_right=$(($PADDINGS * 2)) + icon= + drawing=off + label="Loading…" + background.image=media.artwork + background.image.scale=0.75 + background.image.corner_radius=$PADDINGS + icon.padding_left=48 + label.max_chars=33 + updates=on + --subscribe music media_change + --subscribe music mouse.entered + mouse.clicked + mouse.exited + mouse.exited.global +) + +sketchybar \ + --add item music center \ + --set music "${music[@]}" \ + --set music "${menu_defaults[@]}" \ + --add item music.cover popup.music \ + --add item music.artist popup.music \ + --add item music.title popup.music \ + --add item music.album popup.music diff --git a/mac/.config/sketchybar/items/network.sh b/mac/.config/sketchybar/items/network.sh new file mode 100644 index 0000000..93bf083 --- /dev/null +++ b/mac/.config/sketchybar/items/network.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +source "$CONFIG_DIR/globalstyles.sh" + +network_down=( + y_offset=-9 + label.font="$FONT:Heavy:10" + label.color="$TEXT" + icon="$NETWORK_DOWN" + icon.font="$NERD_FONT:Bold:16.0" + icon.font.size=15 + icon.color="$GREEN" + icon.highlight_color="$BLUE" + icon.padding_right=2 + padding_right=-2 + update_freq=1 + icon.y_offset=1 +) + +network_up=( + background.padding_right=-65 + y_offset=5 + label.font="$FONT:Heavy:10" + label.color="$TEXT" + label.padding_right=5 + icon="$NETWORK_UP" + icon.font="$NERD_FONT:Bold:16.0" + icon.font.size=15 + icon.color="$GREEN" + icon.highlight_color="$BLUE" + icon.padding_right=2 + icon.y_offset=1 + update_freq=1 + script="$PLUGIN_DIR/network.sh" +) + +sketchybar --add item network.down right \ + --set network.down "${network_down[@]}" \ + --add item network.up right \ + --set network.up "${network_up[@]}" diff --git a/mac/.config/sketchybar/items/package_monitor.sh b/mac/.config/sketchybar/items/package_monitor.sh new file mode 100644 index 0000000..89be3a2 --- /dev/null +++ b/mac/.config/sketchybar/items/package_monitor.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# Trigger the package_monitor_udpate event when package_monitor update or upgrade is run from cmdline +# e.g. via function in .zshrc + +package_monitor=( + icon= + icon.font.size=12 + icon.padding_right=-1 + label=? + script="$PLUGIN_DIR/package_monitor.sh" + padding_left=-2 +) + +sketchybar --add event package_monitor_update \ + --add item package_monitor right \ + --set package_monitor "${package_monitor[@]}" \ + --subscribe package_monitor package_monitor_update \ + mouse.clicked diff --git a/mac/.config/sketchybar/items/separator_right.sh b/mac/.config/sketchybar/items/separator_right.sh new file mode 100644 index 0000000..13a6b7f --- /dev/null +++ b/mac/.config/sketchybar/items/separator_right.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +separator_right=( + icon= + icon.font="$FONT:Regular:25.0" + label.drawing=off + click_script='sketchybar --trigger toggle_stats' + icon.color="$TEXT" + padding_right=10 +) + +sketchybar --add item separator_right right \ + --set separator_right "${separator_right[@]}" diff --git a/mac/.config/sketchybar/items/spaces.sh b/mac/.config/sketchybar/items/spaces.sh new file mode 100644 index 0000000..5dc28d0 --- /dev/null +++ b/mac/.config/sketchybar/items/spaces.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +source "$CONFIG_DIR/globalstyles.sh" + +SPACE_ICONS=("1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12") + +# Destroy space on right click, focus space on left click. +# New space by left clicking separator (>) + +sid=0 +spaces=() +for i in "${!SPACE_ICONS[@]}"; do + sid=$(($i + 1)) + + space=( + space=$sid + icon="${SPACE_ICONS[i]}" + icon.padding_left=2 + icon.padding_right=-5 + label.padding_right=10 + label.font="sketchybar-app-font:Regular:16.0" + label.y_offset=-1 + background.height=2 + script="$PLUGIN_DIR/space.sh" + ) + + sketchybar --add space space.$sid left \ + --set space.$sid "${space[@]}" \ + --subscribe space.$sid mouse.clicked +done + +spaces=( + background.color=$BACKGROUND_1 + background.border_color=$BACKGROUND_2 + background.border_width=2 + background.drawing=on +) + +space_creator=( + icon= + icon.font="$FONT:Heavy:25.0" + padding_left=2 + padding_right=5 + label.drawing=off + display=active + script="$PLUGIN_DIR/space_windows.sh" + associated_display=active + click_script='yabai -m space --create && sketchybar --trigger space_change' + icon.color=$WHITE +) + +sketchybar --add bracket spaces '/space\..*/' \ + --set spaces "${spaces[@]}" \ + --add item space_creator left \ + --set space_creator "${space_creator[@]}" \ + --subscribe space_creator space_windows_change diff --git a/mac/.config/sketchybar/items/spotify.sh b/mac/.config/sketchybar/items/spotify.sh new file mode 100644 index 0000000..421e299 --- /dev/null +++ b/mac/.config/sketchybar/items/spotify.sh @@ -0,0 +1,201 @@ +#!/bin/bash + +SPOTIFY_EVENT="com.spotify.client.PlaybackStateChanged" +POPUP_SCRIPT="sketchybar -m --set spotify.anchor popup.drawing=toggle" + +spotify_anchor=( + script="$PLUGIN_DIR/spotify.sh" + click_script="$POPUP_SCRIPT" + popup.horizontal=on + popup.align=center + popup.height=150 + icon= + icon.font="$FONT:Regular:25.0" + label.drawing=off + drawing=off +) + +spotify_cover=( + script="$PLUGIN_DIR/spotify.sh" + click_script="open -a 'Spotify'; $POPUP_SCRIPT" + label.drawing=off + icon.drawing=off + padding_left=12 + padding_right=10 + background.image.scale=0.2 + background.image.drawing=on + background.drawing=on + background.image.corner_radius=9 + shadow=on +) + +spotify_title=( + icon.drawing=off + padding_left=0 + padding_right=0 + width=0 + label.font="$FONT:Heavy:15.0" + label.max_chars=20 + y_offset=55 +) + +spotify_artist=( + icon.drawing=off + y_offset=30 + padding_left=0 + padding_right=0 + width=0 + label.max_chars=20 +) + +spotify_album=( + icon.drawing=off + padding_left=0 + padding_right=0 + y_offset=15 + width=0 + label.max_chars=25 +) + +spotify_state=( + icon.drawing=on + icon.font="$FONT:Light Italic:10.0" + icon.width=35 + icon="00:00" + label.drawing=on + label.font="$FONT:Light Italic:10.0" + label.width=35 + label="00:00" + padding_left=0 + padding_right=0 + y_offset=-15 + width=0 + slider.background.height=6 + slider.background.corner_radius=1 + slider.background.color=$GREY + slider.highlight_color=$GREEN + slider.percentage=40 + slider.width=115 + script="$PLUGIN_DIR/spotify.sh" + update_freq=1 + updates=when_shown +) + +spotify_shuffle=( + icon= + icon.padding_left=5 + icon.padding_right=5 + icon.color=$BLACK + icon.highlight_color=$GREY + label.drawing=off + script="$PLUGIN_DIR/spotify.sh" + y_offset=-45 +) + +spotify_back=( + icon= + icon.padding_left=5 + icon.padding_right=5 + icon.color=$BLACK + script="$PLUGIN_DIR/spotify.sh" + label.drawing=off + y_offset=-45 +) + +spotify_play=( + icon= + background.height=40 + background.corner_radius=20 + width=40 + align=center + background.color=$POPUP_BACKGROUND_COLOR + background.border_color=$WHITE + background.border_width=0 + background.drawing=on + icon.padding_left=4 + icon.padding_right=5 + updates=on + label.drawing=off + script="$PLUGIN_DIR/spotify.sh" + y_offset=-45 +) + +spotify_next=( + icon= + icon.padding_left=5 + icon.padding_right=5 + icon.color=$BLACK + label.drawing=off + script="$PLUGIN_DIR/spotify.sh" + y_offset=-45 +) + +spotify_repeat=( + icon= + icon.highlight_color=$GREY + icon.padding_left=5 + icon.padding_right=10 + icon.color=$BLACK + label.drawing=off + script="$PLUGIN_DIR/spotify.sh" + y_offset=-45 +) + +spotify_controls=( + background.color=$GREEN + background.corner_radius=11 + background.drawing=on + y_offset=-45 +) + +sketchybar --add event spotify_change $SPOTIFY_EVENT \ + --add item spotify.anchor center \ + --set spotify.anchor "${spotify_anchor[@]}" \ + --subscribe spotify.anchor mouse.entered mouse.exited \ + mouse.exited.global \ + \ + --add item spotify.cover popup.spotify.anchor \ + --set spotify.cover "${spotify_cover[@]}" \ + \ + --add item spotify.title popup.spotify.anchor \ + --set spotify.title "${spotify_title[@]}" \ + \ + --add item spotify.artist popup.spotify.anchor \ + --set spotify.artist "${spotify_artist[@]}" \ + \ + --add item spotify.album popup.spotify.anchor \ + --set spotify.album "${spotify_album[@]}" \ + \ + --add slider spotify.state popup.spotify.anchor \ + --set spotify.state "${spotify_state[@]}" \ + --subscribe spotify.state mouse.clicked \ + \ + --add item spotify.shuffle popup.spotify.anchor \ + --set spotify.shuffle "${spotify_shuffle[@]}" \ + --subscribe spotify.shuffle mouse.clicked \ + \ + --add item spotify.back popup.spotify.anchor \ + --set spotify.back "${spotify_back[@]}" \ + --subscribe spotify.back mouse.clicked \ + \ + --add item spotify.play popup.spotify.anchor \ + --set spotify.play "${spotify_play[@]}" \ + --subscribe spotify.play mouse.clicked spotify_change \ + \ + --add item spotify.next popup.spotify.anchor \ + --set spotify.next "${spotify_next[@]}" \ + --subscribe spotify.next mouse.clicked \ + \ + --add item spotify.repeat popup.spotify.anchor \ + --set spotify.repeat "${spotify_repeat[@]}" \ + --subscribe spotify.repeat mouse.clicked \ + \ + --add item spotify.spacer popup.spotify.anchor \ + --set spotify.spacer width=5 \ + \ + --add bracket spotify.controls spotify.shuffle \ + spotify.back \ + spotify.play \ + spotify.next \ + spotify.repeat \ + --set spotify.controls "${spotify_controls[@]}" diff --git a/mac/.config/sketchybar/items/svim.sh b/mac/.config/sketchybar/items/svim.sh new file mode 100644 index 0000000..502343d --- /dev/null +++ b/mac/.config/sketchybar/items/svim.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +svim=( + script="$PLUGIN_DIR/svim.sh" + icon=$INSERT_MODE + icon.font.size=20 + updates=on + drawing=off +) + +sketchybar --add event svim_update \ + --add item svim right \ + --set svim "${svim[@]}" \ + --subscribe svim svim_update diff --git a/mac/.config/sketchybar/items/system.sh b/mac/.config/sketchybar/items/system.sh new file mode 100644 index 0000000..dc74f73 --- /dev/null +++ b/mac/.config/sketchybar/items/system.sh @@ -0,0 +1,53 @@ +### mem Widget ### +sketchybar --add item mem right \ + --set mem update_freq=10 \ + icon="asdf" \ + icon.font="Font Awesome 6 Free:Solid:15.4" \ + icon.padding_right=4 \ + icon.color=0xfff5c1e6 \ + icon.y_offset=-3 \ + label.y_offset=-3 \ + label.font="$FONT:Medium:19.0" \ + label.color=0xff47455c \ + label.padding_right=8 \ + background.drawing=on \ + background.color=0xfff4f5f8 \ + script="$PLUGIN_DIR/mem.sh" + +# ### cpu Widget ### +# sketchybar --add item cpu right \ +# --set cpu update_freq=10 \ +# icon.font="Font Awesome 6 Free:Solid:15.4" \ +# icon.padding_right=4 \ +# icon.color=0xffedd6a4 \ +# icon.y_offset=-3 \ +# label.y_offset=-3 \ +# label.font="$FONT:Medium:19.0" \ +# label.color=0xff47455c \ +# label.padding_right=8 \ +# background.drawing=on \ +# background.color=0xfff4f5f8 \ +# script="$PLUGIN_DIR/cpu.sh" \ + +### ssd Widget ### +sketchybar --add item disk right \ + --set disk update_freq=10 \ + icon="asdf" \ + icon.font="Font Awesome 6 Free:Solid:15.4" \ + icon.padding_right=4 \ + icon.color=0xfff37ea0 \ + icon.y_offset=-3 \ + label.y_offset=-3 \ + label.font="$FONT:Medium:19.0" \ + label.color=0xff47455c \ + label.padding_right=8 \ + background.drawing=on \ + background.color=0xfff4f5f8 \ + script="$PLUGIN_DIR/disk.sh" + +# sketchybar --add item collapse right \ +# --set collapse icon="" \ +# icon.font="Font Awesome 6 Free:Solid:20.0" \ +# icon.color=0xff47455c \ +# icon.y_offset=-3 \ +# click_script="$PLUGIN_DIR/collapse.sh" diff --git a/mac/.config/sketchybar/items/thunderbird.sh b/mac/.config/sketchybar/items/thunderbird.sh new file mode 100644 index 0000000..234b038 --- /dev/null +++ b/mac/.config/sketchybar/items/thunderbird.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +thunderbird=( + "${notification_defaults[@]}" + icon= + icon.font.size=17 + icon.color=$OSBLUE + icon.y_offset=0 + background.color=$WHITE + script="$PLUGIN_DIR/thunderbird.sh" + click_script="open -a /System/Applications/Thunderbird.app" + icon.padding_left=7 + icon.padding_right=-1 + label.padding_right=7 + background.padding_right=5 + background.height=20 +) + +sketchybar --add item thunderbird right \ + --set thunderbird "${thunderbird[@]}" diff --git a/mac/.config/sketchybar/items/toggle_stats.sh b/mac/.config/sketchybar/items/toggle_stats.sh new file mode 100644 index 0000000..301e0e4 --- /dev/null +++ b/mac/.config/sketchybar/items/toggle_stats.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +sketchybar --add event hide_stats \ + --add event show_stats \ + --add event toggle_stats \ + \ + --add item animator right \ + --set animator drawing=off \ + updates=on \ + script="$PLUGIN_DIR/toggle_stats.sh" \ + --subscribe animator hide_stats show_stats toggle_stats diff --git a/mac/.config/sketchybar/items/volume.sh b/mac/.config/sketchybar/items/volume.sh new file mode 100644 index 0000000..a8efdd5 --- /dev/null +++ b/mac/.config/sketchybar/items/volume.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +volume_slider=( + script="$PLUGIN_DIR/volume.sh" + updates=on + label.drawing=off + icon.drawing=off + slider.highlight_color=$BLUE + slider.background.height=5 + slider.background.corner_radius=3 + slider.background.color=$BACKGROUND_2 + slider.knob= + slider.knob.drawing=on + padding_left=-5 + padding_right=-1 +) + +volume_icon=( + click_script="$PLUGIN_DIR/volume_click.sh" + icon=$VOLUME_100 + icon.width=0 + icon.align=left + icon.font="$FONT:Regular:14.0" + label.width=25 + label.align=left + label.font="$FONT:Regular:14.0" +) + +sketchybar --add slider volume right \ + --set volume "${volume_slider[@]}" \ + --subscribe volume volume_change \ + mouse.clicked \ + \ + --add item volume_icon right \ + --set volume_icon "${volume_icon[@]}" diff --git a/mac/.config/sketchybar/items/weather.sh b/mac/.config/sketchybar/items/weather.sh new file mode 100644 index 0000000..287354d --- /dev/null +++ b/mac/.config/sketchybar/items/weather.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Load global styles, colors and icons +source "$CONFIG_DIR/globalstyles.sh" + +weather=( + script="$PLUGIN_DIR/weather.sh" + "${menu_defaults[@]}" + popup.align=right + update_freq=300 + updates=on + click_script="sketchybar --set $NAME popup.drawing=toggle; open -a /System/Applications/Weather.app" + --subscribe weather wifi_change + mouse.entered + mouse.exited + mouse.exited.global +) + +sketchybar \ + --add item weather right \ + --set weather "${weather[@]}" \ + --add item weather.details popup.weather \ + --set weather.details "${menu_item_defaults[@]}" icon.drawing=off diff --git a/mac/.config/sketchybar/items/wifi.sh b/mac/.config/sketchybar/items/wifi.sh new file mode 100644 index 0000000..a903c23 --- /dev/null +++ b/mac/.config/sketchybar/items/wifi.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +POPUP_OFF="sketchybar --set wifi popup.drawing=off" + +wifi=( + "${menu_defaults[@]}" + icon="$WIFI_DISCONNECTED" + script="$PLUGIN_DIR/wifi.sh" + label.drawing=off + click_script="$POPUP_CLICK_SCRIPT" + popup.align=right + updates=when_shown + update_freq=5 + --subscribe wifi wifi_change + mouse.entered + mouse.exited + mouse.exited.global + icon.padding_left=-3 +) + +sketchybar \ + --add item wifi right \ + --set wifi "${wifi[@]}" \ + --add item wifi.ssid popup.wifi \ + --set wifi.ssid icon= \ + label="SSID" \ + "${menu_item_defaults[@]}" \ + click_script="open 'x-apple.systempreferences:com.apple.preference.network?Wi-Fi';$POPUP_OFF" \ + --add item wifi.strength popup.wifi \ + --set wifi.strength icon= \ + label="Speed" \ + "${menu_item_defaults[@]}" \ + click_script="open 'x-apple.systempreferences:com.apple.preference.network?Wi-Fi';$POPUP_OFF" \ + --add item wifi.ipaddress popup.wifi \ + --set wifi.ipaddress icon= \ + label="IP Address" \ + "${menu_item_defaults[@]}" \ + click_script="echo \"$IP_ADDRESS\"|pbcopy;$POPUP_OFF" \ + --subscribe wifi wifi_change mouse.clicked diff --git a/mac/.config/sketchybar/items/yabai.sh b/mac/.config/sketchybar/items/yabai.sh new file mode 100644 index 0000000..c123a8b --- /dev/null +++ b/mac/.config/sketchybar/items/yabai.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +yabai=( + icon=$YABAI_GRID + label.drawing=off + script="$PLUGIN_DIR/yabai.sh" + icon.font="$FONT:Bold:14.0" + icon.color="$FLAMINGO" + padding_left=-2 + padding_right=0 +) + +sketchybar --add event window_focus \ + --add event windows_on_spaces \ + --add item yabai left \ + --set yabai "${yabai[@]}" \ + --subscribe yabai window_focus \ + space_change \ + windows_on_spaces \ + mouse.scrolled.global \ + mouse.clicked diff --git a/mac/.config/sketchybar/plugins/battery.sh b/mac/.config/sketchybar/plugins/battery.sh new file mode 100644 index 0000000..60a8dc4 --- /dev/null +++ b/mac/.config/sketchybar/plugins/battery.sh @@ -0,0 +1,85 @@ +#!/bin/bash + +source "$CONFIG_DIR/colors.sh" + +render_item() { + + PERCENTAGE=$(pmset -g batt | grep -Eo "\d+%" | cut -d% -f1) + CHARGING=$(pmset -g batt | grep 'AC Power') + CHARGING_STATUS="Not charging" + + if [ $PERCENTAGE = "" ]; then + exit 0 + fi + + COLOR=$LABEL_COLOR + ICON="" + + case ${PERCENTAGE} in + 9[0-9]) + ICON="" + ;; + 8[0-9]) + ICON="" + ;; + 7[0-9]) + ICON="" + ;; + 6[0-9]) + ICON="" + ;; + 5[0-9]) + ICON="" + ;; + 4[0-9]) + ICON="" + ;; + 3[0-9]) + ICON="" + ;; + 2[0-9]) + ICON="" + ;; + 1[0-9]) + ICON="" + ;; + *) + ICON="" + COLOR=$RED + ;; + esac + + if [[ $CHARGING != "" ]]; then + ICON="" + CHARGING_STATUS="Charging" + COLOR=$LABEL_COLOR + fi + + sketchybar --set battery icon=$ICON + +} + +render_popup() { + sketchybar --set battery.details label="$PERCENTAGE% (${CHARGING_STATUS})" +} + +update() { + render_item + render_popup +} + +popup() { + sketchybar --set "$NAME" popup.drawing="$1" +} + +case "$SENDER" in +"routine" | "forced" | "power_source_change") + update + ;; +"mouse.entered") + popup on + ;; +"mouse.exited" | "mouse.exited.global") + popup off + ;; +esac diff --git a/mac/.config/sketchybar/plugins/brew.sh b/mac/.config/sketchybar/plugins/brew.sh new file mode 100644 index 0000000..308fd78 --- /dev/null +++ b/mac/.config/sketchybar/plugins/brew.sh @@ -0,0 +1,104 @@ +#!/bin/bash + +source "$CONFIG_DIR/globalstyles.sh" + +PREV_COUNT=$(sketchybar --query brew | jq -r .popup.items | grep ".package*" -c) + +render_bar_item() { + case "$COUNT" in + [3-5][0-9]) + COLOR=$MAROON + ;; + [1-2][0-9]) + COLOR=$PEACH + ;; + [1-9]) + COLOR=$YELLOW + ;; + 0) + COLOR=$GREEN + COUNT= + ;; + esac + + sketchybar --set "$NAME" label="$COUNT" label.color="$COLOR" icon.color="$COLOR" +} + +add_outdated_header() { + brew_header=( + label="$(echo -e 'Outdated Brews')" + label.font="$FONT:Bold:14.0" + label.align=left + icon.drawing=off + click_script="sketchybar --set $NAME popup.drawing=off" + ) + + sketchybar --set brew.details "${brew_header[@]}" + +} + +render_popup() { + add_outdated_header + + COUNTER=0 + sketchybar --remove '/brew.package\.*/' + + if [[ -n "$OUTDATED" ]]; then + while IFS= read -r package; do + + brew_package=( + label="$package" + label.align=right + label.padding_left=20 + icon.drawing=off + click_script="sketchybar --set $NAME popup.drawing=off" + + ) + item=brew.package."$COUNTER" + + sketchybar --add item "$item" popup."$NAME" \ + --set "$item" "${brew_package[@]}" + + COUNTER=$((COUNTER + 1)) + + done <<<"$(echo -n "$OUTDATED" | grep '^')" + fi +} + +update() { + brew update + COLOR=$RED + OUTDATED=$(brew outdated) + COUNT=$(echo -n "$OUTDATED" | grep -c '^') + + render_bar_item + render_popup + + if [ "$COUNT" -ne "$PREV_COUNT" ] 2>/dev/null || [ "$SENDER" = "forced" ]; then + sketchybar --animate tanh 15 --set "$NAME" + fi +} + +popup() { + if [[ "$PREV_COUNT" -gt 0 ]]; then + sketchybar --set "$NAME" popup.drawing="$1" + else + sketchybar --set "$NAME" popup.drawing=off + fi + +} + +case "$SENDER" in +"routine" | "forced") + update + ;; +"mouse.entered") + popup on + ;; +"mouse.exited" | "mouse.exited.global") + popup off + ;; +"mouse.clicked") + popup toggle + ;; +esac diff --git a/mac/.config/sketchybar/plugins/disk.sh b/mac/.config/sketchybar/plugins/disk.sh new file mode 100644 index 0000000..f2adc30 --- /dev/null +++ b/mac/.config/sketchybar/plugins/disk.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +source "$CONFIG_DIR/globalstyles.sh" + +COUNT="$(df -H | grep -E '^(/dev/disk3s5)' | awk '{ printf ("%s\n", $5) }' | sed 's/%//')" + +COLOR=$RED + +case "$COUNT" in +[7-8][0-9]) # 70-89% + COLOR=$PEACH + ;; +[5-6][0-9]) # 50-69% + COLOR=$YELLOW + ;; +[3-4][0-9]) # 20-49% + COLOR=$GREEN + ;; +[1-2][0-9]) # 10-19% + COLOR=$LAVENDER + ;; +[0-9]) # 0-9% + COLOR=$WHITE + ;; +esac + +sketchybar -m --set "$NAME" \ + label="$COUNT%" \ + icon.color=$COLOR diff --git a/mac/.config/sketchybar/plugins/dnd.sh b/mac/.config/sketchybar/plugins/dnd.sh new file mode 100644 index 0000000..42c7ba6 --- /dev/null +++ b/mac/.config/sketchybar/plugins/dnd.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +# Load global styles, colors and icons +source "$CONFIG_DIR/globalstyles.sh" + +update() { + dnd_enabled=$(cat ~/Library/DoNotDisturb/DB/Assertions.json | jq .data[0].storeAssertionRecords) + # alternate method: defaults read com.apple.controlcenter "NSStatusItem Visible FocusModes" + ICON= + + if [ "$dnd_enabled" = "null" ]; then + COLOR=$WHITE_25 + # echo $NAME: "Disabled" + else + COLOR=$WHITE + # echo $NAME: "Enabled" + fi + + sketchybar --set $NAME icon=$ICON icon.color=$COLOR +} + +toggle() { + osascript -e 'tell application "System Events" to keystroke "\\" using {control down, shift down, command down, option down}' +} + +case "$SENDER" in +"routine" | "forced" | "focus_on" | "focus_off") + update + ;; +"mouse.clicked") + toggle + ;; +esac diff --git a/mac/.config/sketchybar/plugins/dndindicator.sh b/mac/.config/sketchybar/plugins/dndindicator.sh new file mode 100644 index 0000000..0dd05e8 --- /dev/null +++ b/mac/.config/sketchybar/plugins/dndindicator.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +# Thanks to reddit:rudypaul +# BIN_DIR="/usr/bin" + +# PLUTIL="${BIN_DIR}/plutil" +# XPATH="${BIN_DIR}/xpath" +# BASE64="${BIN_DIR}/base64" + +dnd_enabled=$( +defaults read com.apple.controlcenter "NSStatusItem Visible FocusModes" +# dnd_enabled=$( +# "${PLUTIL}" -extract dnd_prefs xml1 -o - ~/Library/Preferences/com.apple.ncprefs.plist | +# "${XPATH}" -q -e 'string(//data)' | +# "${BASE64}" -D | +# "${PLUTIL}" -convert xml1 - -o - | +# "${XPATH}" -q -e 'boolean(//key[text()="userPref"]/following-sibling::dict/key[text()="enabled"])' +) + +if [ $dnd_enabled -eq 1 ]; then + sketchybar --set $NAME drawing=on icon= +else + sketchybar --set $NAME drawing=off icon= +fi
\ No newline at end of file diff --git a/mac/.config/sketchybar/plugins/front_app.sh b/mac/.config/sketchybar/plugins/front_app.sh new file mode 100644 index 0000000..066efb0 --- /dev/null +++ b/mac/.config/sketchybar/plugins/front_app.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +if [ "$SENDER" = "front_app_switched" ]; then + # Set the app name and app icon and then animate a bounce for the icon size + sketchybar --set $NAME label="$INFO" icon.background.image="app.$INFO" \ + --animate tanh 10 --set $NAME icon.background.image.scale=0.8 \ + icon.background.image.scale=0.55 +fi diff --git a/mac/.config/sketchybar/plugins/github.sh b/mac/.config/sketchybar/plugins/github.sh new file mode 100644 index 0000000..bf09991 --- /dev/null +++ b/mac/.config/sketchybar/plugins/github.sh @@ -0,0 +1,108 @@ +#!/bin/bash + +update() { + source "$CONFIG_DIR/colors.sh" + source "$CONFIG_DIR/icons.sh" + + NOTIFICATIONS="$(gh api notifications)" + COUNT="$(echo "$NOTIFICATIONS" | jq 'length')" + args=() + if [ "$NOTIFICATIONS" = "[]" ]; then + args+=(--set $NAME icon=$BELL label="0") + else + args+=(--set $NAME icon=$BELL_DOT label="$COUNT") + fi + + PREV_COUNT=$(sketchybar --query github.bell | jq -r .label.value) + # For sound to play around with: + # afplay /System/Library/Sounds/Morse.aiff + + args+=(--remove '/github.notification\.*/') + + COUNTER=0 + COLOR=$BLUE + args+=(--set github.bell icon.color=$COLOR) + + while read -r repo url type title; do + COUNTER=$((COUNTER + 1)) + IMPORTANT="$(echo "$title" | egrep -i "(deprecat|break|broke)")" + COLOR=$BLUE + PADDING=0 + + if [ "${repo}" = "" ] && [ "${title}" = "" ]; then + repo="Note" + title="No new notifications" + fi + case "${type}" in + "'Issue'") + COLOR=$GREEN + ICON=$GIT_ISSUE + URL="$(gh api "$(echo "${url}" | sed -e "s/^'//" -e "s/'$//")" | jq .html_url)" + ;; + "'Discussion'") + COLOR=$WHITE + ICON=$GIT_DISCUSSION + URL="https://www.github.com/notifications" + ;; + "'PullRequest'") + COLOR=$MAGENTA + ICON=$GIT_PULL_REQUEST + URL="$(gh api "$(echo "${url}" | sed -e "s/^'//" -e "s/'$//")" | jq .html_url)" + ;; + "'Commit'") + COLOR=$WHITE + ICON=$GIT_COMMIT + URL="$(gh api "$(echo "${url}" | sed -e "s/^'//" -e "s/'$//")" | jq .html_url)" + ;; + esac + + if [ "$IMPORTANT" != "" ]; then + COLOR=$RED + ICON= + args+=(--set github.bell icon.color=$COLOR) + fi + + notification=( + label="$(echo "$title" | sed -e "s/^'//" -e "s/'$//")" + icon="$ICON $(echo "$repo" | sed -e "s/^'//" -e "s/'$//"):" + icon.padding_left="$PADDING" + label.padding_right="$PADDING" + icon.color=$COLOR + position=popup.github.bell + icon.background.color=$COLOR + drawing=on + click_script="open \"$URL\"; sketchybar --set github.bell popup.drawing=off; sleep 5; sketchybar --trigger github.update" + ) + + args+=(--clone github.notification.$COUNTER github.template + --set github.notification.$COUNTER "${notification[@]}") + done <<<"$(echo "$NOTIFICATIONS" | jq -r '.[] | [.repository.name, .subject.latest_comment_url, .subject.type, .subject.title] | @sh')" + + sketchybar -m "${args[@]}" >/dev/null + + if [ $COUNT -gt $PREV_COUNT ] 2>/dev/null || [ "$SENDER" = "forced" ]; then + sketchybar --animate tanh 15 --set github.bell label.y_offset=5 label.y_offset=0 + fi +} + +popup() { + sketchybar --set $NAME popup.drawing=$1 +} + +case "$SENDER" in +"routine" | "forced" | "github.update") + update + ;; +"system_woke") + sleep 10 && update # Wait for network to connect + ;; +"mouse.entered") + popup on + ;; +"mouse.exited" | "mouse.exited.global") + popup off + ;; +"mouse.clicked") + popup toggle + ;; +esac diff --git a/mac/.config/sketchybar/plugins/icon_map.sh b/mac/.config/sketchybar/plugins/icon_map.sh new file mode 100644 index 0000000..1b2f82a --- /dev/null +++ b/mac/.config/sketchybar/plugins/icon_map.sh @@ -0,0 +1,486 @@ +#!/bin/bash + +function icon_map() { + case "$1" in + "Typora") + icon_result=":text:" + ;; + "Orion" | "Orion RC") + icon_result=":orion:" + ;; + "Grammarly Editor") + icon_result=":grammarly:" + ;; + "kitty") + icon_result=":kitty:" + ;; + "ClickUp") + icon_result=":click_up:" + ;; + "Iris") + icon_result=":iris:" + ;; + "PomoDone App") + icon_result=":pomodone:" + ;; + "qutebrowser") + icon_result=":qute_browser:" + ;; + "Raindrop.io") + icon_result=":raindrop_io:" + ;; + "Airmail") + icon_result=":airmail:" + ;; + "Affinity Publisher 2") + icon_result=":affinity_publisher_2:" + ;; + "Calendar" | "日历" | "Fantastical" | "Cron" | "Amie") + icon_result=":calendar:" + ;; + "Figma") + icon_result=":figma:" + ;; + "Element") + icon_result=":element:" + ;; + "Signal") + icon_result=":signal:" + ;; + "Mattermost") + icon_result=":mattermost:" + ;; + "Caprine") + icon_result=":caprine:" + ;; + "Microsoft To Do" | "Things") + icon_result=":things:" + ;; + "Godot") + icon_result=":godot:" + ;; + "Android Messages") + icon_result=":android_messages:" + ;; + "Zed") + icon_result=":zed:" + ;; + "Anytype") + icon_result=":anytype:" + ;; + "TeamSpeak 3") + icon_result=":team_speak:" + ;; + "LibreWolf") + icon_result=":libre_wolf:" + ;; + "Neovide" | "neovide") + icon_result=":neovide:" + ;; + "Spotlight") + icon_result=":spotlight:" + ;; + "微信") + icon_result=":wechat:" + ;; + "Dropbox") + icon_result=":dropbox:" + ;; + "Transmit") + icon_result=":transmit:" + ;; + "TickTick") + icon_result=":tick_tick:" + ;; + "Parallels Desktop") + icon_result=":parallels:" + ;; + "Audacity") + icon_result=":audacity:" + ;; + "Rider" | "JetBrains Rider") + icon_result=":rider:" + ;; + "DEVONthink 3") + icon_result=":devonthink3:" + ;; + "Docker" | "Docker Desktop") + icon_result=":docker:" + ;; + "Matlab") + icon_result=":matlab:" + ;; + "VLC") + icon_result=":vlc:" + ;; + "Alacritty") + icon_result=":alacritty:" + ;; + "Pages" | "Pages 文稿") + icon_result=":pages:" + ;; + "Bear") + icon_result=":bear:" + ;; + "Pine") + icon_result=":pine:" + ;; + "Affinity Designer 2") + icon_result=":affinity_designer_2:" + ;; + "Keyboard Maestro") + icon_result=":keyboard_maestro:" + ;; + "Joplin") + icon_result=":joplin:" + ;; + "mpv") + icon_result=":mpv:" + ;; + "zoom.us") + icon_result=":zoom:" + ;; + "Affinity Photo 2") + icon_result=":affinity_photo_2:" + ;; + "Music" | "音乐") + icon_result=":music:" + ;; + "League of Legends") + icon_result=":league_of_legends:" + ;; + "Tor Browser") + icon_result=":tor_browser:" + ;; + "Hyper") + icon_result=":hyper:" + ;; + "WhatsApp") + icon_result=":whats_app:" + ;; + "카카오톡") + icon_result=":kakaotalk:" + ;; + "Discord" | "Discord Canary" | "Discord PTB") + icon_result=":discord:" + ;; + "Neovide" | "MacVim" | "Vim" | "VimR") + icon_result=":vim:" + ;; + "Keynote" | "Keynote 讲演") + icon_result=":keynote:" + ;; + "iTerm") + icon_result=":iterm:" + ;; + "IntelliJ IDEA") + icon_result=":idea:" + ;; + "Finder" | "访达") + icon_result=":finder:" + ;; + "Xcode") + icon_result=":xcode:" + ;; + "GoLand") + icon_result=":goland:" + ;; + "Android Studio") + icon_result=":android_studio:" + ;; + "MoneyMoney") + icon_result=":bank:" + ;; + "Spotify") + icon_result=":spotify:" + ;; + "KeePassXC") + icon_result=":kee_pass_x_c:" + ;; + "Alfred") + icon_result=":alfred:" + ;; + "Color Picker" | "数码测色计") + icon_result=":color_picker:" + ;; + "Microsoft Word") + icon_result=":microsoft_word:" + ;; + "Microsoft PowerPoint") + icon_result=":microsoft_power_point:" + ;; + "Notes" | "备忘录") + icon_result=":notes:" + ;; + "Microsoft Edge") + icon_result=":microsoft_edge:" + ;; + "Sublime Text") + icon_result=":sublime_text:" + ;; + "Sequel Ace") + icon_result=":sequel_ace:" + ;; + "Folx") + icon_result=":folx:" + ;; + "DingTalk" | "钉钉" | "阿里钉") + icon_result=":dingtalk:" + ;; + "WebStorm") + icon_result=":web_storm:" + ;; + "Sequel Pro") + icon_result=":sequel_pro:" + ;; + "Skype") + icon_result=":skype:" + ;; + "网易云音乐") + icon_result=":netease_music:" + ;; + "PyCharm") + icon_result=":pycharm:" + ;; + "Canary Mail" | "HEY" | "Mail" | "Mailspring" | "MailMate" | "邮件") + icon_result=":mail:" + ;; + "Default") + icon_result=":default:" + ;; + "App Store") + icon_result=":app_store:" + ;; + "Calibre") + icon_result=":book:" + ;; + "Todoist") + icon_result=":todoist:" + ;; + "Emacs") + icon_result=":emacs:" + ;; + "Messenger") + icon_result=":messenger:" + ;; + "Tower") + icon_result=":tower:" + ;; + "VSCodium") + icon_result=":vscodium:" + ;; + "Drafts") + icon_result=":drafts:" + ;; + "Cypress") + icon_result=":cypress:" + ;; + "GitHub Desktop") + icon_result=":git_hub:" + ;; + "Telegram") + icon_result=":telegram:" + ;; + "Firefox Developer Edition" | "Firefox Nightly") + icon_result=":firefox_developer_edition:" + ;; + "Min") + icon_result=":min_browser:" + ;; + "Sketch") + icon_result=":sketch:" + ;; + "Affinity Photo") + icon_result=":affinity_photo:" + ;; + "MAMP" | "MAMP PRO") + icon_result=":mamp:" + ;; + "Insomnia") + icon_result=":insomnia:" + ;; + "Bitwarden") + icon_result=":bit_warden:" + ;; + "Warp") + icon_result=":warp:" + ;; + "System Preferences" | "System Settings" | "系统设置") + icon_result=":gear:" + ;; + "Affinity Designer") + icon_result=":affinity_designer:" + ;; + "Live") + icon_result=":ableton:" + ;; + "Arc") + icon_result=":arc:" + ;; + "Chromium" | "Google Chrome" | "Google Chrome Canary") + icon_result=":google_chrome:" + ;; + "Jellyfin Media Player") + icon_result=":jellyfin:" + ;; + "Zulip") + icon_result=":zulip:" + ;; + "1Password") + icon_result=":one_password:" + ;; + "FaceTime" | "FaceTime 通话") + icon_result=":face_time:" + ;; + "Citrix Workspace" | "Citrix Viewer") + icon_result=":citrix:" + ;; + "Logseq") + icon_result=":logseq:" + ;; + "Reeder") + icon_result=":reeder5:" + ;; + "Code" | "Code - Insiders") + icon_result=":code:" + ;; + "Notion") + icon_result=":notion:" + ;; + "Final Cut Pro") + icon_result=":final_cut_pro:" + ;; + "Zotero") + icon_result=":zotero:" + ;; + "Safari" | "Safari浏览器" | "Safari Technology Preview") + icon_result=":safari:" + ;; + "Blender") + icon_result=":blender:" + ;; + "Affinity Publisher") + icon_result=":affinity_publisher:" + ;; + "Spark Desktop") + icon_result=":spark:" + ;; + "Zeplin") + icon_result=":zeplin:" + ;; + "Replit") + icon_result=":replit:" + ;; + "Podcasts" | "播客") + icon_result=":podcasts:" + ;; + "NordVPN") + icon_result=":nord_vpn:" + ;; + "Notability") + icon_result=":notability:" + ;; + "Numbers" | "Numbers 表格") + icon_result=":numbers:" + ;; + "Nova") + icon_result=":nova:" + ;; + "Microsoft Excel") + icon_result=":microsoft_excel:" + ;; + "Trello") + icon_result=":trello:" + ;; + "Pi-hole Remote") + icon_result=":pihole:" + ;; + "Linear") + icon_result=":linear:" + ;; + "CleanMyMac X") + icon_result=":desktop:" + ;; + "GrandTotal" | "Receipts") + icon_result=":dollar:" + ;; + "Evernote Legacy") + icon_result=":evernote_legacy:" + ;; + "OmniFocus") + icon_result=":omni_focus:" + ;; + "Terminal" | "终端") + icon_result=":terminal:" + ;; + "Atom") + icon_result=":atom:" + ;; + "Kakoune") + icon_result=":kakoune:" + ;; + "Reminders" | "提醒事项") + icon_result=":reminders:" + ;; + "Tana") + icon_result=":tana:" + ;; + "OBS") + icon_result=":obsstudio:" + ;; + "VMware Fusion") + icon_result=":vmware_fusion:" + ;; + "Tweetbot" | "Twitter") + icon_result=":twitter:" + ;; + "Microsoft Teams") + icon_result=":microsoft_teams:" + ;; + "Yuque" | "语雀") + icon_result=":yuque:" + ;; + "Slack") + icon_result=":slack:" + ;; + "Vivaldi") + icon_result=":vivaldi:" + ;; + "Setapp") + icon_result=":setapp:" + ;; + "TIDAL") + icon_result=":tidal:" + ;; + "Miro") + icon_result=":miro:" + ;; + "Messages" | "信息" | "Nachrichten") + icon_result=":messages:" + ;; + "Brave Browser") + icon_result=":brave_browser:" + ;; + "Preview" | "预览" | "Skim" | "zathura") + icon_result=":pdf:" + ;; + "Obsidian") + icon_result=":obsidian:" + ;; + "Thunderbird") + icon_result=":thunderbird:" + ;; + "Firefox") + icon_result=":firefox:" + ;; + "WezTerm") + icon_result=":wezterm:" + ;; + *) + icon_result=":default:" + ;; + esac +} + +icon_map "$1" +echo "$icon_result" diff --git a/mac/.config/sketchybar/plugins/kakaotalk.sh b/mac/.config/sketchybar/plugins/kakaotalk.sh new file mode 100644 index 0000000..e959621 --- /dev/null +++ b/mac/.config/sketchybar/plugins/kakaotalk.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +TEXT=$(lsappinfo info -only StatusLabel "KakaoTalk" | grep -o '"label"="[0-9]*"' | awk -F'"' '{print $4}') + +if [[ $TEXT -gt 0 ]]; then + sketchybar -m --set $NAME drawing=on label="$TEXT" +else + sketchybar -m --set $NAME drawing=off +fi diff --git a/mac/.config/sketchybar/plugins/keyboard.sh b/mac/.config/sketchybar/plugins/keyboard.sh new file mode 100644 index 0000000..c6b5681 --- /dev/null +++ b/mac/.config/sketchybar/plugins/keyboard.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +# this is jank and ugly, I know +LAYOUT="$(defaults read ~/Library/Preferences/com.apple.HIToolbox.plist AppleSelectedInputSources | grep "KeyboardLayout Name" | cut -c 33- | rev | cut -c 2- | rev)" + +# specify short layouts individually. +case "$LAYOUT" in +"\"Dvorak\"") SHORT_LAYOUT="DV" ;; +"\"U.S.\"") SHORT_LAYOUT="US" ;; +*) SHORT_LAYOUT="한" ;; +esac + +sketchybar --set keyboard label="$SHORT_LAYOUT" diff --git a/mac/.config/sketchybar/plugins/mail.sh b/mac/.config/sketchybar/plugins/mail.sh new file mode 100644 index 0000000..6a74b07 --- /dev/null +++ b/mac/.config/sketchybar/plugins/mail.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +TEXT=$(lsappinfo info -only StatusLabel "Mail" | grep -o '"label"="[0-9]*"' | awk -F'"' '{print $4}') + +if [[ $TEXT -gt 0 ]]; then + sketchybar -m --set $NAME drawing=on label="$TEXT" +else + sketchybar -m --set $NAME drawing=off +fi
\ No newline at end of file diff --git a/mac/.config/sketchybar/plugins/memory.sh b/mac/.config/sketchybar/plugins/memory.sh new file mode 100644 index 0000000..6917458 --- /dev/null +++ b/mac/.config/sketchybar/plugins/memory.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +source "$CONFIG_DIR/globalstyles.sh" + +# Get total physical memory in bytes +total_memory=$(sysctl -n hw.memsize) + +# Get memory page size in bytes +page_size=$(vm_stat | grep "page size of" | awk '{print $8}' | sed 's/\.$//') # Correctly strip the period at the end + +# Get various memory statistics from vm_stat +vm_stat=$(vm_stat) +pages_free=$(echo "$vm_stat" | grep "Pages free:" | awk '{print $3}' | sed 's/\.$//') # Remove dot at the end +pages_active=$(echo "$vm_stat" | grep "Pages active:" | awk '{print $3}' | sed 's/\.$//') +pages_inactive=$(echo "$vm_stat" | grep "Pages inactive:" | awk '{print $3}' | sed 's/\.$//') +pages_speculative=$(echo "$vm_stat" | grep "Pages speculative:" | awk '{print $3}' | sed 's/\.$//') +pages_wired_down=$(echo "$vm_stat" | grep "Pages wired down:" | awk '{print $4}' | sed 's/\.$//') +compressed_pages=$(echo "$vm_stat" | grep "Pages occupied by compressor:" | awk '{print $5}' | sed 's/\.$//') + +# Calculate total used memory pages +total_used_pages=$((pages_active + pages_wired_down + compressed_pages)) + +# Convert pages to bytes +total_used_memory_bytes=$((total_used_pages * page_size)) + +# Calculate memory used percentage as an integer +USAGE=$((total_used_memory_bytes * 100 / total_memory)) +COUNT="$(memory_pressure | grep "System-wide memory free percentage:" | awk '{ val = 100 - $5; if (val < 10) printf("%1.0f\n", val); else printf("%02.0f\n", val) }')" + +COLOR=$RED + +case "$COUNT" in +[5-6][0-9]) # 50-69% + COLOR=$YELLOW + ;; +[3-4][0-9]) # 20-49% + COLOR=$GREEN + ;; +[1-2][0-9]) # 10-19% + COLOR=$LAVENDER + ;; +[0-9]) # 0-9% + COLOR=$WHITE + ;; +esac + +sketchybar -m --set "$NAME" \ + label="$COUNT / $USAGE%" \ + icon.color=$COLOR diff --git a/mac/.config/sketchybar/plugins/messages.sh b/mac/.config/sketchybar/plugins/messages.sh new file mode 100644 index 0000000..1ca1ec1 --- /dev/null +++ b/mac/.config/sketchybar/plugins/messages.sh @@ -0,0 +1,7 @@ +TEXT=$(sqlite3 ~/Library/Messages/chat.db "SELECT text FROM message WHERE is_read=0 AND is_from_me=0 AND text!='' AND date_read=0" | wc -l | awk '{$1=$1};1') + +if [ $TEXT = 0 ]; then + sketchybar -m --set $NAME drawing=off +else + sketchybar -m --set $NAME drawing=on label="$TEXT" +fi
\ No newline at end of file diff --git a/mac/.config/sketchybar/plugins/mic.sh b/mac/.config/sketchybar/plugins/mic.sh new file mode 100644 index 0000000..35cde89 --- /dev/null +++ b/mac/.config/sketchybar/plugins/mic.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +MIC_VOLUME=$(osascript -e 'input volume of (get volume settings)') + +if [[ $MIC_VOLUME -eq 0 ]]; then + sketchybar -m --set mic icon= +elif [[ $MIC_VOLUME -gt 0 ]]; then + sketchybar -m --set mic icon= +fi diff --git a/mac/.config/sketchybar/plugins/mic_click.sh b/mac/.config/sketchybar/plugins/mic_click.sh new file mode 100644 index 0000000..90a6ac6 --- /dev/null +++ b/mac/.config/sketchybar/plugins/mic_click.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +MIC_VOLUME=$(osascript -e 'input volume of (get volume settings)') + +if [[ $MIC_VOLUME -eq 0 ]]; then + osascript -e 'set volume input volume 25' + sketchybar -m --set mic icon= +elif [[ $MIC_VOLUME -gt 0 ]]; then + osascript -e 'set volume input volume 0' + sketchybar -m --set mic icon= +fi diff --git a/mac/.config/sketchybar/plugins/music.sh b/mac/.config/sketchybar/plugins/music.sh new file mode 100644 index 0000000..ce23701 --- /dev/null +++ b/mac/.config/sketchybar/plugins/music.sh @@ -0,0 +1,92 @@ +#!/bin/sh + +# Load global styles, colors and icons +source "$CONFIG_DIR/globalstyles.sh" + +music_item_defaults=( + align=center + width=240 + label.max_chars=33 +) + +music_cover=( + background.image=media.artwork + background.image.scale=5 + background.image.corner_radius=4 + background.image.padding_left=$PADDINGS + background.image.padding_right=$PADDINGS + background.label.align=center + y_offset=-$PADDINGS + align=center +) + +music_artist=( + "${music_item_defaults[@]}" +) + +music_title=( + "${music_item_defaults[@]}" + label.font.style="Bold" +) + +music_album=( + "${music_item_defaults[@]}" +) + +render_bar_item() { + sketchybar --set $NAME label="$CURRENT_ARTIST: $CURRENT_SONG" +} + +render_popup() { + sketchybar --set $NAME.cover "${music_cover[@]}" \ + --set $NAME.artist "${music_artist[@]}" \ + --set $NAME.title "${music_title[@]}" \ + --set $NAME.album "${music_album[@]}" +} + +update() { + CURRENT_ARTIST="$(echo "$INFO" | jq -r '.artist')" + CURRENT_SONG="$(echo "$INFO" | jq -r '.title')" + CURRENT_ALBUM="$(echo "$INFO" | jq -r '.album')" + PLAYER_STATE="$(echo "$INFO" | jq -r '.state')" + + if [ "$PLAYER_STATE" = "playing" ]; then + sketchybar --set $NAME drawing=on \ + icon= \ + --set $NAME.artist label="$CURRENT_ARTIST" \ + --set $NAME.title label="$CURRENT_SONG" \ + --set $NAME.album label="$CURRENT_ALBUM" + render_bar_item + render_popup + + else + sketchybar --set $NAME icon= + popup off + sketchybar --set $NAME drawing=off + fi + +} + +popup() { + sketchybar --set "$NAME" popup.drawing="$1" +} + +playpause() { + osascript -e 'tell application "Music" to playpause' +} + + +case "$SENDER" in +"routine" | "forced" | "media_change") + update + ;; +"mouse.entered") + popup on + ;; +"mouse.exited" | "mouse.exited.global") + popup off + ;; +"mouse.clicked") + playpause + ;; +esac diff --git a/mac/.config/sketchybar/plugins/music/Cover-Default.png b/mac/.config/sketchybar/plugins/music/Cover-Default.png Binary files differnew file mode 100644 index 0000000..a65c63f --- /dev/null +++ b/mac/.config/sketchybar/plugins/music/Cover-Default.png diff --git a/mac/.config/sketchybar/plugins/music/Get-Artwork.applescript b/mac/.config/sketchybar/plugins/music/Get-Artwork.applescript new file mode 100644 index 0000000..ca3ee31 --- /dev/null +++ b/mac/.config/sketchybar/plugins/music/Get-Artwork.applescript @@ -0,0 +1,65 @@ +--get current path +tell application "Finder" to set current_path to container of (path to me) as alias + +--get artwork +tell application "Music" + try + if player state is not stopped then + set alb to (get album of current track) + tell artwork 1 of current track + if format is JPEG picture then + set imgFormat to ".jpg" + else + set imgFormat to ".png" + end if + end tell + set rawData to (get raw data of artwork 1 of current track) + else + return + end if + on error + return POSIX path of ((current_path as text) & "Cover-Default.png") + return + end try +end tell + +--create path to save image as jpg or png +set newPath to ((current_path as text) & "tmp" & imgFormat) as text + +try + --create file + tell me to set fileRef to (open for access newPath with write permission) + --overwrite existing file + write rawData to fileRef starting at 0 + tell me to close access fileRef + + delay 1 + + --resize image + set the target_length to 500 + try + tell application "Image Events" + -- start the Image Events application + launch + -- open the image file + set this_image to open newPath + -- perform action + scale this_image to size target_length + -- save the changes + save this_image with icon + -- purge the open image data + close this_image + end tell + on error + return POSIX path of ((current_path as text) & "Cover-Default.png") + end try + + return POSIX path of newPath +on error m number n + log n + log m + try + tell me to close access fileRef + end try + return ((current_path as text) & "Cover-Default.png") as text +end try
\ No newline at end of file diff --git a/mac/.config/sketchybar/plugins/network.sh b/mac/.config/sketchybar/plugins/network.sh new file mode 100644 index 0000000..99fda23 --- /dev/null +++ b/mac/.config/sketchybar/plugins/network.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +source "$CONFIG_DIR/colors.sh" # Loads all defined colors +source "$CONFIG_DIR/icons.sh" # Loads all defined icons + +UPDOWN=$(ifstat -i "en0" -b 0.1 1 | tail -n1) +DOWN=$(echo "$UPDOWN" | awk "{ print \$1 }" | cut -f1 -d ".") +UP=$(echo "$UPDOWN" | awk "{ print \$2 }" | cut -f1 -d ".") + +DOWN_FORMAT="" +if [ "$DOWN" -gt "999" ]; then + DOWN_FORMAT=$(echo "$DOWN" | awk '{ printf "%03.0f Mbps", $1 / 1000}') +else + DOWN_FORMAT=$(echo "$DOWN" | awk '{ printf "%03.0f kbps", $1}') +fi + +UP_FORMAT="" +if [ "$UP" -gt "999" ]; then + UP_FORMAT=$(echo "$UP" | awk '{ printf "%03.0f Mbps", $1 / 1000}') +else + UP_FORMAT=$(echo "$UP" | awk '{ printf "%03.0f kbps", $1}') +fi + +sketchybar -m --set network.down label="$DOWN_FORMAT" icon.highlight=$(if [ "$DOWN" -gt "0" ]; then echo "on"; else echo "off"; fi) \ + --set network.up label="$UP_FORMAT" icon.highlight=$(if [ "$UP" -gt "0" ]; then echo "on"; else echo "off"; fi) diff --git a/mac/.config/sketchybar/plugins/nextevent.applescript b/mac/.config/sketchybar/plugins/nextevent.applescript new file mode 100644 index 0000000..6ffc56a --- /dev/null +++ b/mac/.config/sketchybar/plugins/nextevent.applescript @@ -0,0 +1,19 @@ +set input to paragraphs of (do shell script "/opt/homebrew/bin/icalBuddy -ec 'Found in Natural Language,CCSF' -npn -nc -iep 'datetime,title' -po 'datetime,title' -eed -ea -n -li 4 -ps '|: |' -b '' eventsToday") + +set currentTime to date (do shell script "date '+%I:%M %p'") + +set theEvent to "" + +if input is not "" then + repeat with anEvent in input + set text item delimiters to "^" + set eventTime to date (text item 1 of anEvent) + set text item delimiters to "" + if eventTime > currentTime then + set theEvent to anEvent as string + exit repeat + end if + end repeat +end if + +return theEvent
\ No newline at end of file diff --git a/mac/.config/sketchybar/plugins/nextevent.sh b/mac/.config/sketchybar/plugins/nextevent.sh new file mode 100644 index 0000000..732629a --- /dev/null +++ b/mac/.config/sketchybar/plugins/nextevent.sh @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +render_item() { + sketchybar --set $NAME label="$(date "+%I:%M %p")" +} + +render_popup() { + + if which "icalBuddy" &>/dev/null; then + input=$(/opt/homebrew/bin/icalBuddy -ec 'Found in Natural Language,CCSF' -npn -nc -iep 'datetime,title' -po 'datetime,title' -eed -ea -n -li 4 -ps '|: |' -b '' eventsToday) + currentTime=$(date '+%I:%M %p') + + # echo "Debug: $NAME #11 $input" + + if [ -n "$input" ]; then + IFS='^' read -ra events <<< "$input" + for anEvent in "${events[@]}"; do + IFS='^' read -ra eventItems <<< "$anEvent" + eventTime=${eventItems[0]} + if [ "$eventTime" '>' "$currentTime" ]; then + theEvent="$anEvent" + break + fi + done + else + theEvent="No events today" + fi + else + theEvent="Please install icalBuddy → brew install ical-buddy." + fi + + + sketchybar --set clock.details label="$theEvent" click_script="sketchybar --set $NAME popup.drawing=off" >/dev/null +} + +update() { + render_item +} + +popup() { + render_popup + sketchybar --set "$NAME" popup.drawing="$1" +} + +case "$SENDER" in +"routine" | "forced") + update + ;; +"mouse.entered") + popup on + ;; +"mouse.exited" | "mouse.exited.global") + popup off + ;; +esac
\ No newline at end of file diff --git a/mac/.config/sketchybar/plugins/space.py b/mac/.config/sketchybar/plugins/space.py new file mode 100644 index 0000000..7ed3e55 --- /dev/null +++ b/mac/.config/sketchybar/plugins/space.py @@ -0,0 +1,199 @@ +#!/usr/bin/python3 + +import os, json, re + +ICON_MAP = [ + {"regex": r"1Password", "icon": ":one_password:"}, + {"regex": r"Affinity Designer", "icon": ":affinity_designer:"}, + {"regex": r"Affinity Photo", "icon": ":affinity_photo:"}, + {"regex": r"Affinity Publisher", "icon": ":affinity_publisher:"}, + {"regex": r"Airmail", "icon": ":airmail:"}, + {"regex": r"Alacritty|Hyper|iTerm2|kitty|Terminal|WezTerm", "icon": ":terminal:"}, + {"regex": r"Alfred", "icon": ":alfred:"}, + {"regex": r"Android Messages", "icon": ":android_messages:"}, + {"regex": r"Android Studio", "icon": ":android_studio:"}, + {"regex": r"App Store", "icon": ":app_store:"}, + {"regex": r"Atom", "icon": ":atom:"}, + {"regex": r"Audacity", "icon": ":audacity:"}, + {"regex": r"Bear", "icon": ":bear:"}, + {"regex": r"Bitwarden", "icon": ":bit_warden:"}, + {"regex": r"Blender", "icon": ":blender:"}, + {"regex": r"Brave Browser", "icon": ":brave_browser:"}, + {"regex": r"Calendar|Fantastical|Cron|Morgen", "icon": ":calendar:"}, + {"regex": r"Calibre", "icon": ":book:"}, + { + "regex": r"Canary Mail|HEY|Mail|Mailspring|MailMate|邮件|Outlook|Gmail|Mimestream", + "icon": ":mail:", + }, + {"regex": r"Caprine", "icon": ":caprine:"}, + { + "regex": r"Chromium|Google Chrome|Google Chrome Canary", + "icon": ":google_chrome:", + }, + {"regex": r"CleanMyMac X", "icon": ":desktop:"}, + {"regex": r"ClickUp", "icon": ":click_up:"}, + {"regex": r"Code|Code - Insiders", "icon": ":code:"}, + {"regex": r"Color Picker", "icon": ":color_picker:"}, + {"regex": r"DataGrip", "icon": ":datagrip:"}, + {"regex": r"Default", "icon": ":default:"}, + {"regex": r"DEVONthink 3", "icon": ":devonthink3:"}, + {"regex": r"Discord|Discord Canary|Discord PTB", "icon": ":discord:"}, + {"regex": r"Drafts", "icon": ":drafts:"}, + {"regex": r"Dropbox", "icon": ":dropbox:"}, + {"regex": r"Element", "icon": ":element:"}, + {"regex": r"Emacs", "icon": ":emacs:"}, + {"regex": r"Evernote Legacy", "icon": ":evernote_legacy:"}, + {"regex": r"FaceTime", "icon": ":face_time:"}, + {"regex": r"Figma", "icon": ":figma:"}, + {"regex": r"Final Cut Pro", "icon": ":final_cut_pro:"}, + {"regex": r"Finder|访达", "icon": ":finder:"}, + { + "regex": r"Firefox Developer Edition|Firefox Nightly", + "icon": ":firefox_developer_edition:", + }, + {"regex": r"Firefox", "icon": ":firefox:"}, + {"regex": r"Folx", "icon": ":folx:"}, + {"regex": r"GitHub Desktop", "icon": ":git_hub:"}, + {"regex": r"Grammarly Editor", "icon": ":grammarly:"}, + {"regex": r"GrandTotal|Receipts", "icon": ":dollar:"}, + {"regex": r"IINA", "icon": ":playing:"}, + {"regex": r"Insomnia", "icon": ":insomnia:"}, + {"regex": r"IntelliJ IDEA", "icon": ":idea:"}, + {"regex": r"Iris", "icon": ":iris:"}, + {"regex": r"Joplin", "icon": ":joplin:"}, + {"regex": r"Kakoune", "icon": ":kakoune:"}, + {"regex": r"KeePassXC", "icon": ":kee_pass_x_c:"}, + {"regex": r"Keyboard Maestro", "icon": ":keyboard_maestro:"}, + {"regex": r"Keynote", "icon": ":keynote:"}, + {"regex": r"League of Legends", "icon": ":league_of_legends:"}, + {"regex": r"LibreWolf", "icon": ":libre_wolf:"}, + {"regex": r"Linear", "icon": ":linear:"}, + {"regex": r"Live", "icon": ":ableton:"}, + {"regex": r"MAMP|MAMP PRO", "icon": ":mamp:"}, + {"regex": r"Matlab", "icon": ":matlab:"}, + {"regex": r"Mattermost", "icon": ":mattermost:"}, + {"regex": r"Messages|Nachrichten", "icon": ":messages:"}, + {"regex": r"Microsoft Edge", "icon": ":microsoft_edge:"}, + {"regex": r"Microsoft Excel", "icon": ":microsoft_excel:"}, + {"regex": r"Microsoft PowerPoint", "icon": ":microsoft_power_point:"}, + {"regex": r"Microsoft Teams", "icon": ":microsoft_teams:"}, + {"regex": r"Microsoft To Do|Things", "icon": ":things:"}, + {"regex": r"Microsoft Word", "icon": ":microsoft_word:"}, + {"regex": r"Min", "icon": ":min_browser:"}, + {"regex": r"MoneyMoney", "icon": ":bank:"}, + {"regex": r"mpv", "icon": ":mpv:"}, + {"regex": r"Music", "icon": ":music:"}, + {"regex": r"Neovide|MacVim|Vim|VimR", "icon": ":vim:"}, + {"regex": r"Notability", "icon": ":notability:"}, + {"regex": r"Notes", "icon": ":notes:"}, + {"regex": r"Notion", "icon": ":notion:"}, + {"regex": r"Nova", "icon": ":nova:"}, + {"regex": r"Numbers", "icon": ":numbers:"}, + {"regex": r"OBS", "icon": ":obsstudio:"}, + {"regex": r"Obsidian", "icon": ":obsidian:"}, + {"regex": r"OmniFocus", "icon": ":omni_focus:"}, + {"regex": r"Pages", "icon": ":pages:"}, + {"regex": r"Parallels Desktop", "icon": ":parallels:"}, + {"regex": r"Pi-hole Remote", "icon": ":pihole:"}, + {"regex": r"Pine", "icon": ":pine:"}, + {"regex": r"Podcasts", "icon": ":podcasts:"}, + {"regex": r"PomoDone App", "icon": ":pomodone:"}, + {"regex": r"Preview|Skim|zathura|PDFgear", "icon": ":pdf:"}, + {"regex": r"qutebrowser", "icon": ":qute_browser:"}, + {"regex": r"Reeder", "icon": ":reeder5:"}, + {"regex": r"Reminders", "icon": ":reminders:"}, + {"regex": r"Safari|Safari Technology Preview|Orion", "icon": ":safari:"}, + {"regex": r"Sequel Ace", "icon": ":sequel_ace:"}, + {"regex": r"Sequel Pro", "icon": ":sequel_pro:"}, + {"regex": r"Setapp", "icon": ":setapp:"}, + {"regex": r"Signal", "icon": ":signal:"}, + {"regex": r"Sketch", "icon": ":sketch:"}, + {"regex": r"Skype", "icon": ":skype:"}, + {"regex": r"Slack", "icon": ":slack:"}, + {"regex": r"Spark", "icon": ":spark:"}, + {"regex": r"Spotify", "icon": ":spotify:"}, + {"regex": r"Spotlight", "icon": ":spotlight:"}, + {"regex": r"Sublime Text", "icon": ":sublime_text:"}, + {"regex": r"System Preferences|System Settings", "icon": ":gear:"}, + {"regex": r"TeamSpeak 3", "icon": ":team_speak:"}, + {"regex": r"Telegram", "icon": ":telegram:"}, + {"regex": r"Thunderbird", "icon": ":thunderbird:"}, + {"regex": r"TickTick", "icon": ":tick_tick:"}, + {"regex": r"TIDAL", "icon": ":tidal:"}, + {"regex": r"Todoist", "icon": ":todoist:"}, + {"regex": r"Tor Browser", "icon": ":tor_browser:"}, + {"regex": r"Tower", "icon": ":tower:"}, + {"regex": r"Transmit", "icon": ":transmit:"}, + {"regex": r"Trello", "icon": ":trello:"}, + {"regex": r"Tweetbot|Twitter", "icon": ":twitter:"}, + {"regex": r"Typora", "icon": ":text:"}, + {"regex": r"Vivaldi", "icon": ":vivaldi:"}, + {"regex": r"VLC", "icon": ":vlc:"}, + {"regex": r"VMware Fusion", "icon": ":vmware_fusion:"}, + {"regex": r"VSCodium", "icon": ":vscodium:"}, + {"regex": r"WebStorm", "icon": ":web_storm:"}, + {"regex": r"WhatsApp", "icon": ":whats_app:"}, + {"regex": r"Xcode", "icon": ":xcode:"}, + {"regex": r"Zeplin", "icon": ":zeplin:"}, + {"regex": r"zoom.us", "icon": ":zoom:"}, + {"regex": r"Zotero", "icon": ":zotero:"}, + {"regex": r"Zulip", "icon": ":zulip:"}, + {"regex": r"微信", "icon": ":wechat:"}, + {"regex": r"网易云音乐", "icon": ":netease_music:"}, +] + + +def to_sup(s): + sups = { + "0": "\u2070", + "1": "\xb9", + "2": "\xb2", + "3": "\xb3", + "4": "\u2074", + "5": "\u2075", + "6": "\u2076", + "7": "\u2077", + "8": "\u2078", + "9": "\u2079", + } + + return "".join(sups.get(char, char) for char in str(s)) + + +def to_icon(app): + for x in ICON_MAP: + if re.search(x["regex"], app): + return x["icon"] + return ":default:" + + +def to_formatted_icon(app, c): + cnt = f" {to_sup(c)}" if c > 1 else "" + return f"{to_icon(app)}{cnt}" + + +def to_formatted_icons(apps): + return " ".join([to_formatted_icon(app, cnt) for app, cnt in apps.items()]) + + +spaces = {} +apps = json.loads(os.popen("yabai -m query --windows").read()) +for app in apps: + spaces[app["space"]] = spaces.get(app["space"], {}) + spaces[app["space"]][app["app"]] = spaces[app["space"]].get(app["app"], 0) + 1 + +args = " ".join( + [ + f'--set space.{space} label="{to_formatted_icons(apps)}" label.drawing=on' + for space, apps in spaces.items() + ] +) +default_args = "--set spaces_bracket drawing=off --set '/space\..*/' background.drawing=on --animate sin 10" + +args2 = "" +spaces = json.loads(os.popen("yabai -m query --spaces").read()) +for space in spaces: + if not space["windows"]: + args2 = f'{args2} --set space.{space["index"]} label="" label.drawing=off' + +os.system(f"sketchybar -m {default_args} {args} {args2}") diff --git a/mac/.config/sketchybar/plugins/space.sh b/mac/.config/sketchybar/plugins/space.sh new file mode 100644 index 0000000..70f3ac4 --- /dev/null +++ b/mac/.config/sketchybar/plugins/space.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +source "$CONFIG_DIR/globalstyles.sh" + +if [ "$SELECTED" = "true" ]; then + COLOR=$HIGHLIGHT + OFFSET=-12 # under line + WIDTH="dynamic" +else + COLOR=$TRANSPARENT +fi + +sketchybar --animate tanh 10 \ + --set $NAME icon.highlight=$SELECTED \ + label.highlight=$SELECTED \ + background.color=$COLOR \ + background.y_offset=$OFFSET + +update() { + source "$CONFIG_DIR/colors.sh" + COLOR=$BACKGROUND_2 + WIDTH="dynamic" + + sketchybar --set $NAME icon.highlight=$SELECTED \ + label.highlight=$SELECTED \ + background.border_color=$COLOR \ + sketchybar --animate tanh 8 \ + label.width=$WIDTH \ +} + +set_space_label() { + sketchybar --set $NAME icon="$@" +} + +mouse_clicked() { + if [ "$BUTTON" = "right" ]; then + yabai -m space --destroy $SID + sketchybar --trigger space_change --trigger windows_on_spaces + else + if [ "$MODIFIER" = "shift" ]; then + SPACE_LABEL="$(osascript -e "return (text returned of (display dialog \"Give a name to space $NAME:\" default answer \"\" with icon note buttons {\"Cancel\", \"Continue\"} default button \"Continue\"))")" + if [ $? -eq 0 ]; then + if [ "$SPACE_LABEL" = "" ]; then + set_space_label "${NAME:6}" + else + set_space_label "${NAME:6} ($SPACE_LABEL)" + fi + fi + else + yabai -m space --focus $SID 2>/dev/null + fi + fi +} + +case "$SENDER" in +"mouse.clicked") + mouse_clicked + ;; +*) + update + ;; +esac diff --git a/mac/.config/sketchybar/plugins/space_windows.sh b/mac/.config/sketchybar/plugins/space_windows.sh new file mode 100644 index 0000000..f175891 --- /dev/null +++ b/mac/.config/sketchybar/plugins/space_windows.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +if [ "$SENDER" = "space_windows_change" ]; then + args=(--animate sin 10) + + space="$(echo "$INFO" | jq -r '.space')" + apps="$(echo "$INFO" | jq -r '.apps | keys[]')" + + icon_strip=" " + if [ "${apps}" != "" ]; then + while read -r app; do + icon_strip+=" $($CONFIG_DIR/plugins/icon_map.sh "$app")" + done <<<"${apps}" + else + icon_strip="" + fi + args+=(--set space.$space label="$icon_strip") + + sketchybar -m "${args[@]}" +fi diff --git a/mac/.config/sketchybar/plugins/spotify.sh b/mac/.config/sketchybar/plugins/spotify.sh new file mode 100644 index 0000000..521ac60 --- /dev/null +++ b/mac/.config/sketchybar/plugins/spotify.sh @@ -0,0 +1,147 @@ +#!/bin/bash + +next () +{ + osascript -e 'tell application "Spotify" to play next track' +} + +back () +{ + osascript -e 'tell application "Spotify" to play previous track' +} + +play () +{ + osascript -e 'tell application "Spotify" to playpause' +} + +repeat () +{ + REPEAT=$(osascript -e 'tell application "Spotify" to get repeating') + if [ "$REPEAT" = "false" ]; then + sketchybar -m --set spotify.repeat icon.highlight=on + osascript -e 'tell application "Spotify" to set repeating to true' + else + sketchybar -m --set spotify.repeat icon.highlight=off + osascript -e 'tell application "Spotify" to set repeating to false' + fi +} + +shuffle () +{ + SHUFFLE=$(osascript -e 'tell application "Spotify" to get shuffling') + if [ "$SHUFFLE" = "false" ]; then + sketchybar -m --set spotify.shuffle icon.highlight=on + osascript -e 'tell application "Spotify" to set shuffling to true' + else + sketchybar -m --set spotify.shuffle icon.highlight=off + osascript -e 'tell application "Spotify" to set shuffling to false' + fi +} + +update () +{ + PLAYING=1 + if [ "$(echo "$INFO" | jq -r '.["Player State"]')" = "Playing" ]; then + PLAYING=0 + TRACK="$(echo "$INFO" | jq -r .Name)" + ARTIST="$(echo "$INFO" | jq -r .Artist)" + ALBUM="$(echo "$INFO" | jq -r .Album)" + SHUFFLE=$(osascript -e 'tell application "Spotify" to get shuffling') + REPEAT=$(osascript -e 'tell application "Spotify" to get repeating') + COVER=$(osascript -e 'tell application "Spotify" to get artwork url of current track') + fi + + args=() + if [ $PLAYING -eq 0 ]; then + curl -s --max-time 20 "$COVER" -o /tmp/cover.jpg + if [ "$ARTIST" == "" ]; then + args+=(--set spotify.title label="$TRACK" + --set spotify.album label="Podcast" + --set spotify.artist label="$ALBUM" ) + else + args+=(--set spotify.title label="$TRACK" + --set spotify.album label="$ALBUM" + --set spotify.artist label="$ARTIST") + fi + args+=(--set spotify.play icon= + --set spotify.shuffle icon.highlight=$SHUFFLE + --set spotify.repeat icon.highlight=$REPEAT + --set spotify.cover background.image="/tmp/cover.jpg" + background.color=0x00000000 + --set spotify.anchor drawing=on ) + else + args+=(--set spotify.anchor drawing=off popup.drawing=off + --set spotify.play icon= ) + fi + sketchybar -m "${args[@]}" +} + +scrubbing() { + DURATION_MS=$(osascript -e 'tell application "Spotify" to get duration of current track') + DURATION=$((DURATION_MS/1000)) + + TARGET=$((DURATION*PERCENTAGE/100)) + osascript -e "tell application \"Spotify\" to set player position to $TARGET" + sketchybar --set spotify.state slider.percentage=$PERCENTAGE +} + +scroll() { + DURATION_MS=$(osascript -e 'tell application "Spotify" to get duration of current track') + DURATION=$((DURATION_MS/1000)) + + FLOAT="$(osascript -e 'tell application "Spotify" to get player position')" + TIME=${FLOAT%.*} + + sketchybar --animate linear 10 \ + --set spotify.state slider.percentage="$((TIME*100/DURATION))" \ + icon="$(date -r $TIME +'%M:%S')" \ + label="$(date -r $DURATION +'%M:%S')" +} + +mouse_clicked () { + case "$NAME" in + "spotify.next") next + ;; + "spotify.back") back + ;; + "spotify.play") play + ;; + "spotify.shuffle") shuffle + ;; + "spotify.repeat") repeat + ;; + "spotify.state") scrubbing + ;; + *) exit + ;; + esac +} + +popup () { + sketchybar --set spotify.anchor popup.drawing=$1 +} + +routine() { + case "$NAME" in + "spotify.state") scroll + ;; + *) update + ;; + esac +} + +case "$SENDER" in + "mouse.clicked") mouse_clicked + ;; + "mouse.entered") popup on + ;; + "mouse.exited"|"mouse.exited.global") popup off + ;; + "routine") routine + ;; + "forced") exit 0 + ;; + *) update + ;; +esac diff --git a/mac/.config/sketchybar/plugins/svim.sh b/mac/.config/sketchybar/plugins/svim.sh new file mode 100644 index 0000000..cb792b8 --- /dev/null +++ b/mac/.config/sketchybar/plugins/svim.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +source "$CONFIG_DIR/icons.sh" +source "$CONFIG_DIR/colors.sh" + +if [ "$SENDER" = "svim_update" ]; then + DRAWING=on + DRAW_CMD=off + COLOR=$WHITE + case "$MODE" in + "I") ICON="$MODE_INSERT" DRAWING=off + ;; + "N") ICON="$MODE_NORMAL" + ;; + "V") ICON="$MODE_VISUAL" COLOR=$YELLOW + ;; + "C") ICON="$MODE_CMD" DRAW_CMD=on COLOR=$RED + ;; + "_") ICON="$MODE_PENDING" + ;; + *) DRAWING=off + ;; + esac + + sketchybar --set $NAME drawing="$DRAWING" \ + label.drawing="$DRAW_CMD" \ + icon="$ICON" \ + icon.color="$COLOR" \ + label="$CMDLINE" +fi diff --git a/mac/.config/sketchybar/plugins/thunderbird.sh b/mac/.config/sketchybar/plugins/thunderbird.sh new file mode 100644 index 0000000..53f8e31 --- /dev/null +++ b/mac/.config/sketchybar/plugins/thunderbird.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +TEXT=$(lsappinfo info -only StatusLabel "Thunderbird" | grep -o '"label"="[0-9]*"' | awk -F'"' '{print $4}') + +if [[ $TEXT -gt 0 ]]; then + sketchybar -m --set $NAME drawing=on label="$TEXT" +else + sketchybar -m --set $NAME drawing=off +fi diff --git a/mac/.config/sketchybar/plugins/toggle_stats.sh b/mac/.config/sketchybar/plugins/toggle_stats.sh new file mode 100644 index 0000000..b364c18 --- /dev/null +++ b/mac/.config/sketchybar/plugins/toggle_stats.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +stats=( + cpu.top + cpu.percent + cpu.sys + cpu.user + memory + disk + network.up + network.down +) + +hide_stats() { + args=() + for item in "${stats[@]}"; do + args+=(--set "$item" drawing=off) + done + + sketchybar "${args[@]}" \ + --set separator_right \ + icon= \ + icon.font.size=25 \ + padding_right=10 +} + +show_stats() { + args=() + for item in "${stats[@]}"; do + args+=(--set "$item" drawing=on) + done + + sketchybar "${args[@]}" \ + --set separator_right \ + icon= \ + icon.font.size=25 \ + padding_right=10 +} + +toggle_stats() { + state=$(sketchybar --query separator_right | jq -r .icon.value) + + case $state in + "") + show_stats + ;; + "") + hide_stats + ;; + esac +} + +case "$SENDER" in +"hide_stats") + hide_stats + ;; +"show_stats") + show_stats + ;; +"toggle_stats") + toggle_stats + ;; +esac diff --git a/mac/.config/sketchybar/plugins/volume.sh b/mac/.config/sketchybar/plugins/volume.sh new file mode 100644 index 0000000..a03a790 --- /dev/null +++ b/mac/.config/sketchybar/plugins/volume.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +WIDTH=100 + +volume_change() { + source "$CONFIG_DIR/icons.sh" + source "$CONFIG_DIR/colors.sh" + + case $INFO in + [6-9][0-9]|100) ICON=$VOLUME_100 + ;; + [3-5][0-9]) ICON=$VOLUME_66 + ;; + [1-2][0-9]) ICON=$VOLUME_33 + ;; + [1-9]) ICON=$VOLUME_10 + ;; + 0) ICON=$VOLUME_0 + ;; + *) ICON=$VOLUME_100 + esac + + sketchybar --set volume_icon icon=$ICON + sketchybar --set $NAME slider.percentage=$INFO --animate tanh 30 --set $NAME slider.width=$WIDTH + sleep 2 + + # Check wether the volume was changed another time while sleeping + FINAL_PERCENTAGE=$(sketchybar --query $NAME | jq -r ".slider.percentage") + if [ "$FINAL_PERCENTAGE" -eq "$INFO" ]; then + sketchybar --animate tanh 30 --set $NAME slider.width=0 + fi +} + +mouse_clicked() { + osascript -e "set volume output volume $PERCENTAGE" +} + +case "$SENDER" in + "volume_change") volume_change + ;; + "mouse.clicked") mouse_clicked + ;; +esac
\ No newline at end of file diff --git a/mac/.config/sketchybar/plugins/volume_click.sh b/mac/.config/sketchybar/plugins/volume_click.sh new file mode 100644 index 0000000..e05c0d8 --- /dev/null +++ b/mac/.config/sketchybar/plugins/volume_click.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +WIDTH=100 + +detail_on() { + sketchybar --animate tanh 30 --set volume slider.width=$WIDTH +} + +detail_off() { + sketchybar --animate tanh 30 --set volume slider.width=0 +} + +toggle_detail() { + INITIAL_WIDTH=$(sketchybar --query volume | jq -r ".slider.width") + if [ "$INITIAL_WIDTH" -eq "0" ]; then + detail_on + else + detail_off + fi +} + +toggle_devices() { + which SwitchAudioSource >/dev/null || exit 0 + source "$CONFIG_DIR/colors.sh" + source "$CONFIG_DIR/globalstyles.sh" + + args=(--remove '/volume.device\.*/' --set "$NAME" popup.drawing=toggle "${menu_defaults[@]}") + COUNTER=0 + CURRENT="$(SwitchAudioSource -t output -c)" + while IFS= read -r device; do + COLOR=$WHITE + ICON= + ICON_COLOR=$TRANSPARENT + if [ "${device}" = "$CURRENT" ]; then + COLOR=$HIGHLIGHT + ICON= + ICON_COLOR=$COLOR + fi + + args+=(--add item volume.device.$COUNTER popup."$NAME" \ + --set volume.device.$COUNTER label="${device}" \ + label.color="$COLOR" \ + icon=$ICON \ + icon.color=$ICON_COLOR \ + "${menu_item_defaults[@]}" \ + click_script="SwitchAudioSource -s \"${device}\" && sketchybar --set /volume.device\.*/ label.color=$GREY --set \$NAME label.color=$WHITE --set $NAME popup.drawing=off") + COUNTER=$((COUNTER+1)) + done <<< "$(SwitchAudioSource -a -t output)" + + sketchybar -m "${args[@]}" > /dev/null +} + +if [ "$BUTTON" = "left" ] || [ "$MODIFIER" = "shift" ]; then + toggle_devices +else + toggle_detail +fi
\ No newline at end of file diff --git a/mac/.config/sketchybar/plugins/weather.sh b/mac/.config/sketchybar/plugins/weather.sh new file mode 100644 index 0000000..61644de --- /dev/null +++ b/mac/.config/sketchybar/plugins/weather.sh @@ -0,0 +1,191 @@ +#!/usr/bin/env bash + +# Load global styles, colors and icons +source "$CONFIG_DIR/globalstyles.sh" + +# API_KEY="462eeb49a1b844f191f175554222607" # insert api key here +API_KEY="2aa1a4f60e2542efae051005240402" # insert api key here + +# first comment is description, second is icon number +WEATHER_ICONS_DAY=( + [1000]= # Sunny/113 + [1003]= # Partly cloudy/116 + [1006]= # Cloudy/119 + [1009]= # Overcast/122 + [1030]= # Mist/143 + [1063]= # Patchy rain possible/176 + [1066]= # Patchy snow possible/179 + [1069]= # Patchy sleet possible/182 + [1072]= # Patchy freezing drizzle possible/185 + [1087]= # Thundery outbreaks possible/200 + [1114]= # Blowing snow/227 + [1117]= # Blizzard/230 + [1135]= # Fog/248 + [1147]= # Freezing fog/260 + [1150]= # Patchy light drizzle/263 + [1153]= # Light drizzle/266 + [1168]= # Freezing drizzle/281 + [1171]= # Heavy freezing drizzle/284 + [1180]= # Patchy light rain/293 + [1183]= # Light rain/296 + [1186]= # Moderate rain at times/299 + [1189]= # Moderate rain/302 + [1192]= # Heavy rain at times/305 + [1195]= # Heavy rain/308 + [1198]= # Light freezing rain/311 + [1201]= # Moderate or heavy freezing rain/314 + [1204]= # Light sleet/317 + [1207]= # Moderate or heavy sleet/320 + [1210]= # Patchy light snow/323 + [1213]= # Light snow/326 + [1216]= # Patchy moderate snow/329 + [1219]= # Moderate snow/332 + [1222]= # Patchy heavy snow/335 + [1225]= # Heavy snow/338 + [1237]= # Ice pellets/350 + [1240]= # Light rain shower/353 + [1243]= # Moderate or heavy rain shower/356 + [1246]= # Torrential rain shower/359 + [1249]= # Light sleet showers/362 + [1252]= # Moderate or heavy sleet showers/365 + [1255]= # Light snow showers/368 + [1258]= # Moderate or heavy snow showers/371 + [1261]= # Light showers of ice pellets/374 + [1264]= # Moderate or heavy showers of ice pellets/377 + [1273]= # Patchy light rain with thunder/386 + [1276]= # Moderate or heavy rain with thunder/389 + [1279]= # Patchy light snow with thunder/392 + [1282]= # Moderate or heavy snow with thunder/395 +) + +WEATHER_ICONS_NIGHT=( + [1000]= # Clear/113 + [1003]= # Partly cloudy/116 + [1006]= # Cloudy/119 + [1009]= # Overcast/122 + [1030]= # Mist/143 + [1063]= # Patchy rain possible/176 + [1066]= # Patchy snow possible/179 + [1069]= # Patchy sleet possible/182 + [1072]= # Patchy freezing drizzle possible/185 + [1087]= # Thundery outbreaks possible/200 + [1114]= # Blowing snow/227 + [1117]= # Blizzard/230 + [1135]= # Fog/248 + [1147]= # Freezing fog/260 + [1150]= # Patchy light drizzle/263 + [1153]= # Light drizzle/266 + [1168]= # Freezing drizzle/281 + [1171]= # Heavy freezing drizzle/284 + [1180]= # Patchy light rain/293 + [1183]= # Light rain/296 + [1186]= # Moderate rain at times/299 + [1189]= # Moderate rain/302 + [1192]= # Heavy rain at times/305 + [1195]= # Heavy rain/308 + [1198]= # Light freezing rain/311 + [1201]= # Moderate or heavy freezing rain/314 + [1204]= # Light sleet/317 + [1207]= # Moderate or heavy sleet/320 + [1210]= # Patchy light snow/323 + [1213]= # Light snow/326 + [1216]= # Patchy moderate snow/329 + [1219]= # Moderate snow/332 + [1222]= # Patchy heavy snow/335 + [1225]= # Heavy snow/338 + [1237]= # Ice pellets/350 + [1240]= # Light rain shower/353 + [1243]= # Moderate or heavy rain shower/356 + [1246]= # Torrential rain shower/359 + [1249]= # Light sleet showers/362 + [1252]= # Moderate or heavy sleet showers/365 + [1255]= # Light snow showers/368 + [1258]= # Moderate or heavy snow showers/371 + [1261]= # Light showers of ice pellets/374 + [1264]= # Moderate or heavy showers of ice pellets/377 + [1273]= # Patchy light rain with thunder/386 + [1276]= # Moderate or heavy rain with thunder/389 + [1279]= # Patchy light snow with thunder/392 + [1282]= # Moderate or heavy snow with thunder/395 +) + +render_item() { + if [ "$CITY" = "" ]; then + args+=(--set $NAME icon="" label.drawing=off icon.padding_right=-3) + else + args+=(--set $NAME icon="$ICON" icon.font="Hack Nerd Font:Bold:14.0" label="${TEMP}°C" label.drawing=on icon.padding_right=-3) + fi + + sketchybar "${args[@]}" >/dev/null + +} + +render_popup() { + if [ "$CITY" = "" ]; then + args+=(--set weather.details label="N/A" + click_script="sketchybar --set $NAME popup.drawing=off") + else + args+=(--set weather.details label="$CONDITION_TEXT, Humidity: $HUMIDITY% ($LOCATION)" + click_script="sketchybar --set $NAME popup.drawing=off") + fi + + sketchybar "${args[@]}" >/dev/null + +} + +update() { + CURRENT_WIFI="$(/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I)" + SSID="$(echo "$CURRENT_WIFI" | grep -o "SSID: .*" | sed 's/^SSID: //')" + + # Attempt to get the city name using the IP info service + CITY="$(curl -s -m 5 ipinfo.io/loc)" + + # Check if the CITY variable is empty or contains an error message + if [ -z "$CITY" ] || echo "$CITY" | grep -q "error"; then + # Default to Birmingham,AL if the curl command failed or returned an error + CITY="Birmingham,AL" + fi + + # Replace spaces with '%20' for URL encoding + CITY=$(echo "$CITY" | sed 's/ /%20/g') + + if [ "$CITY" != "" ]; then + DATA=$(curl -s -m 5 "http://api.weatherapi.com/v1/current.json?key=$API_KEY&q=$CITY") + CONDITION=$(echo $DATA | jq -r '.current.condition.code') + CONDITION_TEXT=$(echo $DATA | jq -r '.current.condition.text') + TEMP=$(echo $DATA | jq -r '.current.temp_c | floor') + FEELSLIKE=$(echo $DATA | jq -r '.current.feelslike_f') + HUMIDITY=$(echo $DATA | jq -r '.current.humidity') + IS_DAY=$(echo $DATA | jq -r '.current.is_day') + LOCATION=$(echo $DATA | jq -r '.location.name' && echo ', ' && echo $DATA | jq -r '.location.country') + + [ "$IS_DAY" = "1" ] && ICON=${WEATHER_ICONS_DAY[$CONDITION]} || ICON=${WEATHER_ICONS_NIGHT[$CONDITION]} + args=() + fi + + render_item + render_popup + + if [ "$SENDER" = "forced" ]; then + sketchybar --set "$NAME" + fi +} + +popup() { + sketchybar --set "$NAME" popup.drawing="$1" +} + +case "$SENDER" in +"routine" | "forced" | "wifi_change") + update + ;; +"mouse.entered") + popup on + ;; +"mouse.exited" | "mouse.exited.global") + popup off + ;; +"mouse.clicked") + popup toggle + ;; +esac diff --git a/mac/.config/sketchybar/plugins/wifi.sh b/mac/.config/sketchybar/plugins/wifi.sh new file mode 100644 index 0000000..3f78223 --- /dev/null +++ b/mac/.config/sketchybar/plugins/wifi.sh @@ -0,0 +1,104 @@ +#!/bin/bash + +POPUP_OFF="sketchybar --set wifi popup.drawing=off" +POPUP_CLICK_SCRIPT="sketchybar --set wifi popup.drawing=toggle" + +source "$CONFIG_DIR/globalstyles.sh" # Loads defined colors + +INFO="$(/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk -F ' SSID: ' '/ SSID: / {print $2}')" +IS_VPN=$(/usr/local/bin/piactl get connectionstate) +CURRENT_WIFI="$(/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I)" +IP_ADDRESS="$(ipconfig getifaddr en0)" +SSID="$(echo "$CURRENT_WIFI" | grep -o "SSID: .*" | sed 's/^SSID: //')" +CURR_TX="$(echo "$CURRENT_WIFI" | grep -o "lastTxRate: .*" | sed 's/^lastTxRate: //')" + +# ICON="$([ -n "$INFO" ] && echo "$WIFI_CONNECTED" || echo "$WIFI_DISCONNECTED")" + +if [ -n "$INFO" ]; then + ICON_COLOR=$GREEN + ICON="$WIFI_CONNECTED" +elif [ -z "$INFO" ]; then + ICON="$WIFI_DISCONNECTED" +elif [[ $IS_VPN != "Disconnected" ]]; then + ICON_COLOR=$HIGHLIGHT + ICON= +elif [[ $SSID = "Ebrietas" ]]; then + ICON_COLOR=$WHITE + ICON= +elif [[ $SSID != "" ]]; then + ICON_COLOR=$WHITE + ICON= +elif [[ $CURRENT_WIFI = "AirPort: Off" ]]; then + ICON_COLOR=$RED + ICON= +else + ICON_COLOR=$WHITE_25 + ICON= +fi + +render_bar_item() { + sketchybar --set $NAME \ + icon.color=$ICON_COLOR \ + icon=$ICON \ + click_script="$POPUP_CLICK_SCRIPT" +} + +render_popup() { + if [ "$SSID" != "" ]; then + args=( + --set wifi click_script="$POPUP_CLICK_SCRIPT" + --set wifi.ssid label="$SSID" + --set wifi.strength label="$CURR_TX Mbps" + --set wifi.ipaddress label="$IP_ADDRESS" + click_script="printf $IP_ADDRESS | pbcopy;$POPUP_OFF" + ) + else + args=( + --set wifi click_script="") + fi + + sketchybar "${args[@]}" >/dev/null +} + +update() { + render_bar_item + render_popup + source "$CONFIG_DIR/icons.sh" + INFO="$(/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk -F ' SSID: ' '/ SSID: / {print $2}')" + LABEL="$INFO ($(ipconfig getifaddr en0))" + ICON="$([ -n "$INFO" ] && echo "$WIFI_CONNECTED" || echo "$WIFI_DISCONNECTED")" + sketchybar --set $NAME icon="$ICON" label="$LABEL" +} + +click() { + CURRENT_WIDTH="$(sketchybar --query $NAME | jq -r .label.width)" + + WIDTH=0 + if [ "$CURRENT_WIDTH" -eq "0" ]; then + WIDTH=dynamic + fi + + sketchybar --animate sin 20 --set $NAME label.width="$WIDTH" +} + +popup() { + sketchybar --set "$NAME" popup.drawing="$1" +} + +case "$SENDER" in +"routine" | "forced") + update + ;; +"mouse.entered") + popup on + ;; +"mouse.exited" | "mouse.exited.global") + popup off + ;; +"wifi_change") + update + ;; +"mouse.clicked") + click + ;; +esac diff --git a/mac/.config/sketchybar/plugins/yabai.sh b/mac/.config/sketchybar/plugins/yabai.sh new file mode 100644 index 0000000..6027de1 --- /dev/null +++ b/mac/.config/sketchybar/plugins/yabai.sh @@ -0,0 +1,141 @@ +#!/bin/bash + +# window_state() { +# source "$CONFIG_DIR/globalstyles.sh" +# +# COLOR=$LABEL_COLOR +# +# WINDOW=$(yabai -m query --windows --window) +# read -r FLOATING SPLIT PARENT FULLSCREEN STICKY STACK_INDEX <<<$(echo "$WINDOW" | jq -rc '.["is-floating", "split-type", "has-parent-zoom", "has-fullscreen-zoom", "is-sticky", "stack-index"]') +# +# if [[ $STACK_INDEX -gt 0 ]]; then +# LAST_STACK_INDEX=$(yabai -m query --windows --window stack.last | jq '.["stack-index"]') +# ICON=$YABAI_STACK +# LABEL="$(printf "%s/%s " "$STACK_INDEX" "$LAST_STACK_INDEX")" +# COLOR=$YELLOW +# elif [[ $FLOATING == "true" ]]; then +# ICON=$YABAI_FLOAT +# elif [[ $PARENT == "true" ]]; then +# ICON="" +# elif [[ $FULLSCREEN == "true" ]]; then +# ICON=$YABAI_FULLSCREEN_ZOOM +# elif [[ $SPLIT == "vertical" ]]; then +# ICON=$YABAI_SPLIT_VERTICAL +# elif [[ $SPLIT == "horizontal" ]]; then +# ICON=$YABAI_SPLIT_HORIZONTAL +# else +# ICON=$YABAI_GRID +# fi +# +# args=(--bar border_color=$COLOR --animate sin 10 --set $NAME icon=$ICON icon.color=$COLOR) +# +# [ -z "$LABEL" ] && args+=(label.drawing=off) || +# args+=(label.drawing=on label="$LABEL" label.color=$COLOR) +# +# [ -z "$ICON" ] && args+=(icon.width=0) || +# args+=(icon="$ICON") +# +# sketchybar -m "${args[@]}" +# } +# +# windows_on_spaces() { +# /usr/bin/python3 $CONFIG_DIR/plugins/space.py # New spaces python script to consolidate spaces +# } +# +# mouse_clicked() { +# +# yabai_mode=$(yabai -m query --spaces --space | jq -r .type) +# +# case "$yabai_mode" in +# bsp) +# yabai -m config layout stack +# ;; +# stack) +# yabai -m config layout float +# ;; +# float) +# yabai -m config layout bsp +# ;; +# esac +# +# window_state +# } +# +# case "$SENDER" in +# "mouse.clicked") +# mouse_clicked +# ;; +# "forced") +# exit 0 +# ;; +# "window_focus") +# window_state +# ;; +# "windows_on_spaces" | "space_change") +# windows_on_spaces +# ;; +# esac + +window_state() { + source "$CONFIG_DIR/colors.sh" + source "$CONFIG_DIR/icons.sh" + + COLOR=$ROSEWATER + + WINDOW=$(yabai -m query --windows --window) + read -r FLOATING SPLIT PARENT FULLSCREEN STICKY STACK_INDEX <<<$(echo "$WINDOW" | jq -rc '.["is-floating", "split-type", "has-parent-zoom", "has-fullscreen-zoom", "is-sticky", "stack-index"]') + + if [[ $STACK_INDEX -gt 0 ]]; then + LAST_STACK_INDEX=$(yabai -m query --windows --window stack.last | jq '.["stack-index"]') + ICON=$YABAI_STACK + LABEL="$(printf "%s/%s " "$STACK_INDEX" "$LAST_STACK_INDEX")" + COLOR=$YELLOW + elif [[ $FLOATING == "true" ]]; then + ICON=$YABAI_FLOAT + elif [[ $PARENT == "true" ]]; then + ICON="" + elif [[ $FULLSCREEN == "true" ]]; then + ICON=$YABAI_FULLSCREEN_ZOOM + elif [[ $SPLIT == "vertical" ]]; then + ICON=$YABAI_SPLIT_VERTICAL + elif [[ $SPLIT == "horizontal" ]]; then + ICON=$YABAI_SPLIT_HORIZONTAL + else + ICON=$YABAI_GRID + fi + + args=(--bar --animate sin 10 --set $NAME icon=$ICON icon.color=$COLOR) + # args=(--bar border_color=$COLOR --animate sin 10 --set $NAME icon=$ICON icon.color=$COLOR) + + [ -z "$LABEL" ] && args+=(label.drawing=off) || + args+=(label.drawing=on label="$LABEL" label.color=$COLOR) + + [ -z "$ICON" ] && args+=(icon.width=0) || + args+=(icon="$ICON") + + sketchybar -m "${args[@]}" +} + +windows_on_spaces() { + /usr/bin/python3 $CONFIG_DIR/plugins/space.py # New spaces python script to consolidate spaces +} + +mouse_clicked() { + yabai -m window --toggle float + window_state +} + +case "$SENDER" in +"mouse.clicked") + mouse_clicked + ;; +"forced") + exit 0 + ;; +"window_focus") + window_state + ;; +# "windows_on_spaces" | "space_change") +# windows_on_spaces +# ;; +esac diff --git a/mac/.config/sketchybar/plugins/zen.sh b/mac/.config/sketchybar/plugins/zen.sh new file mode 100644 index 0000000..38f2291 --- /dev/null +++ b/mac/.config/sketchybar/plugins/zen.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +zen_on() { + sketchybar --set wifi drawing=off \ + --set apple.logo drawing=off \ + --set '/cpu.*/' drawing=off \ + --set calendar icon.drawing=off \ + --set separator drawing=off \ + --set front_app drawing=off \ + --set volume_icon drawing=off \ + --set spotify.anchor drawing=off \ + --set spotify.play updates=off \ + --set brew drawing=off \ + --set volume drawing=off \ + --set github.bell drawing=off +} + +zen_off() { + sketchybar --set wifi drawing=on \ + --set apple.logo drawing=on \ + --set '/cpu.*/' drawing=on \ + --set calendar icon.drawing=on \ + --set separator drawing=on \ + --set front_app drawing=on \ + --set volume_icon drawing=on \ + --set spotify.play updates=on \ + --set brew drawing=on \ + --set volume drawing=on \ + --set github.bell drawing=on +} + +if [ "$1" = "on" ]; then + zen_on +elif [ "$1" = "off" ]; then + zen_off +else + if [ "$(sketchybar --query apple.logo | jq -r ".geometry.drawing")" = "on" ]; then + zen_on + else + zen_off + fi +fi + diff --git a/mac/.config/sketchybar/sketchybarrc b/mac/.config/sketchybar/sketchybarrc new file mode 100644 index 0000000..f97aa3a --- /dev/null +++ b/mac/.config/sketchybar/sketchybarrc @@ -0,0 +1,56 @@ +PLUGIN_DIR="$CONFIG_DIR/plugins" +ITEM_DIR="$CONFIG_DIR/items" + +# Load global styles, colors and icons +source "$CONFIG_DIR/globalstyles.sh" + +POPUP_CLICK_SCRIPT="sketchybar --set \$NAME popup.drawing=toggle" +POPUP_OFF="sketchybar --set \$NAME popup.drawing=off" + +# Setting up and starting the helper process +HELPER=git.felix.helper +killall helper +(cd $CONFIG_DIR/helper && make) +$CONFIG_DIR/helper/helper $HELPER >/dev/null 2>&1 & + +# Unload the macOS on screen indicator overlay for volume change +launchctl unload -F /System/Library/LaunchAgents/com.apple.OSDUIHelper.plist >/dev/null 2>&1 & + +sketchybar --bar "${bar[@]}" --default "${item_defaults[@]}" + +# Left +# source "$ITEM_DIR/apple.sh" +source "$ITEM_DIR/yabai.sh" +source "$ITEM_DIR/spaces.sh" +source "$ITEM_DIR/front_app.sh" + +# Center +# source "$ITEM_DIR/spotify.sh" +# source "$ITEM_DIR/media.sh" +source "$ITEM_DIR/music.sh" + +# Right +# source "$ITEM_DIR/datetime.sh" +# source "$ITEM_DIR/weather.sh" +source "$ITEM_DIR/github.sh" +source "$ITEM_DIR/brew.sh" +# source "$ITEM_DIR/package_monitor.sh" +# source "$ITEM_DIR/wifi.sh" +# source "$ITEM_DIR/battery.sh" +# source "$ITEM_DIR/keyboard.sh" +# source "$ITEM_DIR/mic.sh" +# source "$ITEM_DIR/volume.sh" +source "$ITEM_DIR/kakaotalk.sh" +source "$ITEM_DIR/mail.sh" +# source "$ITEM_DIR/thunderbird.sh" +source "$ITEM_DIR/svim.sh" +source "$ITEM_DIR/messages.sh" +source "$ITEM_DIR/toggle_stats.sh" +source "$ITEM_DIR/separator_right.sh" +source "$ITEM_DIR/disk.sh" +source "$ITEM_DIR/memory.sh" +source "$ITEM_DIR/cpu.sh" +# source "$ITEM_DIR/network.sh" + +sketchybar --hotload on +sketchybar --update diff --git a/mac/.config/skhd/skhdrc b/mac/.config/skhd/skhdrc new file mode 100644 index 0000000..b4a3d81 --- /dev/null +++ b/mac/.config/skhd/skhdrc @@ -0,0 +1,215 @@ +# open terminal +alt - return : /Applications/Kitty.app/Contents/MacOS/kitty --single-instance -d ~ &> /dev/null + +# # open mpv with url from clipboard +# shift + cmd - m : mpv $(pbpaste) + +# focus window +alt - z : yabai -m window --focus recent +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 +alt - 0x2B : yabai -m window --focus stack.prev # alt + , +alt - 0x2F : yabai -m window --focus stack.next # alt + . + +# swap window +alt + ctrl - z : yabai -m window --swap recent +alt + ctrl - h : yabai -m window --swap west +alt + ctrl - j : yabai -m window --swap south +alt + ctrl - k : yabai -m window --swap north +alt + ctrl - l : yabai -m window --swap east + +# move window +cmd + ctrl - h : yabai -m window --warp west +cmd + ctrl - j : yabai -m window --warp south +cmd + ctrl - k : yabai -m window --warp north +cmd + ctrl - l : yabai -m window --warp east + +# balance size of windows +alt - 0x18 : yabai -m space --balance + +# toggle window float +cmd + shift - return : yabai -m window --toggle float --grid 4:4:1:1:2:2 +# make floating window fill screen +cmd + shift - f : yabai -m window --grid 1:1:0:0:1:4 +# make floating window fill top-left of screen +cmd + shift - u : yabai -m window --grid 2:2:0:0:0:0 +# make floating window fill top-right of screen +cmd + shift - i : yabai -m window --grid 2:2:1:0:0:0 +# make floating window fill bottom-left of screen +cmd + shift - m : yabai -m window --grid 2:2:0:1:0:0 +# make floating window fill bottom-right of screen +cmd + shift - 0x2B : yabai -m window --grid 2:2:1:1:4:4 +# make floating window fill top-half of screen +cmd + shift - k : yabai -m window --grid 4:4:0:0:4:2 +# make floating window fill bottom-half of screen +cmd + shift - j : yabai -m window --grid 2:2:0:1:4:4 +# make floating window fill left-half of screen +cmd + shift - h : yabai -m window --grid 1:2:0:0:1:1 +# make floating window fill right-half of screen +cmd + shift - l : yabai -m window --grid 1:2:1:0:1:1 + + +# # create desktop, move window and follow focus - uses jq for parsing json (brew install jq) +alt + shift - w : yabai -m space --create && \ + index="$(yabai -m query --spaces --display | jq 'map(select(."native-fullscreen" == 0))[-1].index')" && \ + yabai -m window --space "${index}" && \ + yabai -m space --focus "${index}" + +# # create desktop and follow focus - uses jq for parsing json (brew install jq) +alt + ctrl - w : yabai -m space --create && \ + index="$(yabai -m query --spaces --display | jq 'map(select(."native-fullscreen" == 0))[-1].index')" && \ + yabai -m space --focus "${index}" + +# destroy desktop +# cmd + alt - w : yabai -m space --destroy +alt + ctrl - x : yabai -m space --focus prev && yabai -m space recent --destroy + + +# fast focus desktop +alt - 0x32 : yabai -m space --focus recent +alt - 0x21 : yabai -m space --focus prev || skhd -k "ctrl + alt + cmd - p" +alt - 0x1E : yabai -m space --focus next || skhd -k "ctrl + alt + cmd - n" +alt - 1 : yabai -m space --focus 1 || skhd -k "ctrl + alt + cmd - 1" +alt - 2 : yabai -m space --focus 2 || skhd -k "ctrl + alt + cmd - 2" +alt - 3 : yabai -m space --focus 3 || skhd -k "ctrl + alt + cmd - 3" +alt - 4 : yabai -m space --focus 4 || skhd -k "ctrl + alt + cmd - 4" +alt - 5 : yabai -m space --focus 5 || skhd -k "ctrl + alt + cmd - 5" +alt - 6 : yabai -m space --focus 6 || skhd -k "ctrl + alt + cmd - 6" +alt - 7 : yabai -m space --focus 7 || skhd -k "ctrl + alt + cmd - 7" +alt - 8 : yabai -m space --focus 8 || skhd -k "ctrl + alt + cmd - 8" +alt - 9 : yabai -m space --focus 9 || skhd -k "ctrl + alt + cmd - 9" +alt - 0 : yabai -m space --focus 10 || skhd -k "ctrl + alt + cmd - 0" +alt + cmd - 1 : yabai -m space --focus 11 || skhd -k "ctrl + alt + cmd - 11" +alt + cmd - 2 : yabai -m space --focus 12 || skhd -k "ctrl + alt + cmd - 12" +alt + cmd - 3 : yabai -m space --focus 13 || skhd -k "ctrl + alt + cmd - 13" +alt + cmd - 4 : yabai -m space --focus 14 || skhd -k "ctrl + alt + cmd - 14" +alt + cmd - 5 : yabai -m space --focus 15 || skhd -k "ctrl + alt + cmd - 15" +alt + cmd - 6 : yabai -m space --focus 16 || skhd -k "ctrl + alt + cmd - 16" +alt + cmd - 7 : yabai -m space --focus 17 || skhd -k "ctrl + alt + cmd - 17" +alt + cmd - 8 : yabai -m space --focus 18 || skhd -k "ctrl + alt + cmd - 18" +alt + cmd - 9 : yabai -m space --focus 19 || skhd -k "ctrl + alt + cmd - 19" +alt + cmd - 0 : yabai -m space --focus 20 || skhd -k "ctrl + alt + cmd - 20" + +# send window to desktop +alt + ctrl - 0x21 : yabai -m window --space prev +alt + ctrl - 0x1E : yabai -m window --space next +alt + ctrl - 1 : yabai -m window --space 1 +alt + ctrl - 2 : yabai -m window --space 2 +alt + ctrl - 3 : yabai -m window --space 3 +alt + ctrl - 4 : yabai -m window --space 4 +alt + ctrl - 5 : yabai -m window --space 5 +alt + ctrl - 6 : yabai -m window --space 6 +alt + ctrl - 7 : yabai -m window --space 7 +alt + ctrl - 8 : yabai -m window --space 8 +alt + ctrl - 9 : yabai -m window --space 9 +alt + ctrl - 0 : yabai -m window --space 10 + +# send window to desktop and follow focus +alt + shift - 0x32 : yabai -m window --space recent && yabai -m space --focus recent +alt + shift - 0x21 : yabai -m window --space prev && skhd -k "ctrl + alt + cmd - p" || yabai -m space --focus prev +alt + shift - 0x1E : yabai -m window --space next && skhd -k "ctrl + alt + cmd - n" || yabai -m space --focus next +alt + shift - 1 : yabai -m window --space 1 && skhd -k "ctrl + alt + cmd - 1" || yabai -m space --focus 1 +alt + shift - 2 : yabai -m window --space 2 && skhd -k "ctrl + alt + cmd - 2" || yabai -m space --focus 2 +alt + shift - 3 : yabai -m window --space 3 && skhd -k "ctrl + alt + cmd - 3" || yabai -m space --focus 3 +alt + shift - 4 : yabai -m window --space 4 && skhd -k "ctrl + alt + cmd - 4" || yabai -m space --focus 4 +alt + shift - 5 : yabai -m window --space 5 && skhd -k "ctrl + alt + cmd - 5" || yabai -m space --focus 5 +alt + shift - 6 : yabai -m window --space 6 && skhd -k "ctrl + alt + cmd - 6" || yabai -m space --focus 6 +alt + shift - 7 : yabai -m window --space 7 && skhd -k "ctrl + alt + cmd - 7" || yabai -m space --focus 7 +alt + shift - 8 : yabai -m window --space 8 && skhd -k "ctrl + alt + cmd - 8" || yabai -m space --focus 8 +alt + shift - 9 : yabai -m window --space 9 && skhd -k "ctrl + alt + cmd - 9" || yabai -m space --focus 9 +alt + shift - 0 : yabai -m window --space 10 && skhd -k "ctrl + alt + cmd - 0" || yabai -m space --focus 0 + +# focus monitor +cmd + ctrl - z : yabai -m display --focus recent +cmd + ctrl - 0x21 : yabai -m display --focus prev +cmd + ctrl - 0x1E : yabai -m display --focus next +cmd + ctrl - 1 : yabai -m display --focus 1 +cmd + ctrl - 2 : yabai -m display --focus 2 +cmd + ctrl - 3 : yabai -m display --focus 3 + +# send window to monitor and follow focus +cmd + shift - r : yabai -m window --display recent && yabai -m display --focus recent +cmd + shift - 0x21 : yabai -m window --display prev && yabai -m display --focus prev +cmd + shift - 0x1E : yabai -m window --display next && yabai -m display --focus next +cmd + shift - 1 : yabai -m window --display 1 && yabai -m display --focus 1 +cmd + shift - 2 : yabai -m window --display 2 && yabai -m display --focus 2 +cmd + shift - 3 : yabai -m window --display 3 && yabai -m display --focus 3 + +# move window +ctrl + shift - h : yabai -m window --move rel:-20:0 +ctrl + shift - j : yabai -m window --move rel:0:20 +ctrl + shift - k : yabai -m window --move rel:0:-20 +ctrl + shift - l : yabai -m window --move rel:20:0 + +# increase window size +alt + ctrl - a : yabai -m window --resize left:-20:0 +alt + ctrl - s : yabai -m window --resize bottom:0:20 +alt + ctrl - w : yabai -m window --resize top:0:-20 +alt + ctrl - d : yabai -m window --resize right:20:0 + +# decrease window size +cmd + ctrl - a : yabai -m window --resize left:20:0 +cmd + ctrl - s : yabai -m window --resize bottom:0:-20 +cmd + ctrl - w : yabai -m window --resize top:0:20 +cmd + ctrl - d : yabai -m window --resize right:-20:0 + +# set insertion point in focused container +cmd + ctrl - 0x7B : yabai -m window --insert west +cmd + ctrl - 0x7D : yabai -m window --insert south +cmd + ctrl - 0x7E : yabai -m window --insert north +cmd + ctrl - 0x7C : yabai -m window --insert east +cmd + ctrl - i : yabai -m window --insert stack + +# rotate tree +alt - r : yabai -m space --rotate 90 + +# mirror tree y-axis +alt - y : yabai -m space --mirror y-axis + +# mirror tree x-axis +alt - x : yabai -m space --mirror x-axis + +# toggle desktop offset +alt - d : yabai -m space --toggle padding --toggle gap + +# toggle window parent zoom +alt + ctrl - f : yabai -m window --toggle zoom-parent + +# toggle window fullscreen zoom +alt - f : yabai -m window --toggle zoom-fullscreen + +# toggle window native fullscreen +alt + shift - f : yabai -m window --toggle native-fullscreen + +# toggle window split type +alt - s : yabai -m window --toggle split + +# float / unfloat window and restore position +alt - t : yabai -m window --toggle float && /tmp/yabai-restore/$(yabai -m query --windows --window | jq -re '.id').restore 2>/dev/null || true + +# toggle sticky (show on all spaces) +alt - 0x27 : yabai -m window --toggle sticky + +# toggle topmost (keep above other windows) +alt - o : yabai -m window --toggle topmost + +# toggle picture-in-picture +alt - i : yabai -m window --toggle border --toggle pip + +# change layout of desktop +# alt + ctrl - 1 : yabai -m space --layout bsp +# alt + ctrl - 2 : yabai -m space --layout float +alt + ctrl - t : yabai -m space --layout $(yabai -m query --spaces --space | jq -r 'if .type == "bsp" then "float" else "bsp" end') + +########################################################### +### --- Starting/Stopping/Restarting Yabai +########################################################### +# stop/start/restart yabai +alt + cmd + ctrl - q : yabai --stop-service +alt + cmd + ctrl - s : yabai --start-service +alt + cmd + ctrl - r : yabai --restart-service +alt + cmd + shift - q : skhd --stop-service +alt + cmd + shift - s : skhd --start-service +alt + cmd + shift - r : skhd --restart-service diff --git a/mac/.config/vscode/argv.json b/mac/.config/vscode/argv.json new file mode 100644 index 0000000..764fb7a --- /dev/null +++ b/mac/.config/vscode/argv.json @@ -0,0 +1,20 @@ +// This configuration file allows you to pass permanent command line arguments to VS Code. +// Only a subset of arguments is currently supported to reduce the likelihood of breaking +// the installation. +// +// PLEASE DO NOT CHANGE WITHOUT UNDERSTANDING THE IMPACT +// +// NOTE: Changing this file requires a restart of VS Code. +{ + // Use software rendering instead of hardware accelerated rendering. + // This can help in cases where you see rendering issues in VS Code. + // "disable-hardware-acceleration": true, + + // Allows to disable crash reporting. + // Should restart the app if the value is changed. + "enable-crash-reporter": true, + + // Unique id used for correlating crash reports sent from this instance. + // Do not edit this value. + "crash-reporter-id": "ab80ece9-6a06-484b-bd05-3861238d6615" +}
\ No newline at end of file diff --git a/mac/.config/yabai/yabairc b/mac/.config/yabai/yabairc new file mode 100644 index 0000000..a717336 --- /dev/null +++ b/mac/.config/yabai/yabairc @@ -0,0 +1,102 @@ +#!/usr/bin/env sh + +# necessary to load scripting-addition during startup on macOS Big Sur +# *yabai --load-sa* is configured to run through sudo without a password +sudo yabai --load-sa +yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa" + +# mission-control desktop labels +yabai -m space 1 --label Terminal +yabai -m space 2 --label Code +yabai -m space 3 --label Browser +yabai -m space 4 --label Notes +yabai -m space 5 --label Temp +yabai -m space 6 --label Finder +yabai -m space 7 --label Settings +yabai -m space 8 --label Media +yabai -m space 9 --label Messenger +yabai -m space 10 --label Mail + +# window rules +yabai -m rule --add app="^kitty$" space=1 +yabai -m rule --add app="^Code$" space=2 +yabai -m rule --add app="^Safari$" space=3 +yabai -m rule --add app="^Google Chrome$" space=3 +yabai -m rule --add app="^Firefox$" space=3 +yabai -m rule --add app="^(Microsoft Word|Preview|Notes|Obsidian|Anki)$" space=4 +yabai -m rule --add app="^Excel$" space=4 manage=off +yabai -m rule --add app="^(MySQLWorkbench|DBeaver)$" space=5 +yabai -m rule --add app="^Finder$" space=6 +yabai -m rule --add app="^(universalAccessAuthWarn|Activity Monitor|Archive Utility|Alfred Preferences|Bartender 5|BetterTouchTool|Karabiner-Elements|System Settings)$" space=7 +yabai -m rule --add app="^IINA$" space=8 +yabai -m rule --add app="^Music$" space=8 +yabai -m rule --add app="^Spotify$" space=8 +yabai -m rule --add app="^Discord$" space=9 grid=1:1:0:0:1:1 +yabai -m rule --add app="^Messages$" space=9 grid=1:1:0:0:1:1 +yabai -m rule --add app="^KakaoTalk$" space=9 grid=1:1:0:0:1:1 +yabai -m rule --add app="^WeChat$" space=9 grid=1:1:0:0:1:1 +yabai -m rule --add app="^WhatsApp$" space=9 grid=1:1:0:0:1:1 +yabai -m rule --add app="^Log in$" space=9 grid=1:1:0:0:1:1 manage=off +yabai -m rule --add app="^Mail$" space=10 grid=1:1:0:0:1:1 +yabai -m rule --add app="^Thunderbird$" space=10 grid=1:1:0:0:1:1 +yabai -m rule --add app="^FaceTime$" manage=off +yabai -m rule --add app="^CleanShot X$" manage=off +# yabai -m rule --add app="^mpv$" manage=off border=off sticky=on layer=above opacity=1.0 grid=8:8:6:0:2:2 + +# signals +yabai -m signal --add event=window_destroyed active=yes action="yabai -m query --windows --window &> /dev/null || yabai -m window --focus mouse &> /dev/null || yabai -m window --focus \$(yabai -m query --windows --space | jq .[0].id) &> /dev/null" +yabai -m signal --add event=window_minimized active=yes action="if \$(yabai -m query --windows --window \$YABAI_WINDOW_ID | jq -r '.\"is-floating\"'); then yabai -m query --windows --window &> /dev/null || yabai -m window --focus mouse &> /dev/null || yabai -m window --focus \$(yabai -m query --windows --space | jq .[0].id) &> /dev/null; fi" + +# specific space settings bsp/float/stack +yabai -m config --space 1 layout bsp +yabai -m config --space 2 layout bsp +yabai -m config --space 3 layout bsp +yabai -m config --space 4 layout bsp +yabai -m config --space 5 layout bsp +yabai -m config --space 6 layout bsp +yabai -m config --space 7 layout float +yabai -m config --space 8 layout bsp +yabai -m config --space 9 layout bsp +yabai -m config --space 0 layout float + +# global settings +yabai -m config \ + \ + mouse_follows_focus on \ + focus_follows_mouse autoraise \ + window_placement first_child \ + window_topmost off \ + window_shadow off \ + window_opacity on \ + window_opacity_duration 0.25 \ + active_window_opacity 0.90 \ + normal_window_opacity 0.50 \ + window_animation_duration 0.25 \ + insert_feedback_color 0xaad75f5f \ + split_ratio 0.50 \ + split_type auto \ + auto_balance off \ + mouse_modifier ctrl \ + mouse_action1 move \ + mouse_action2 resize \ + mouse_drop_action swap \ + layout bsp \ + top_padding 10 \ + left_padding 10 \ + right_padding 10 \ + bottom_padding 35 \ + window_gap 10 # external_bar all:32:0 \ + +# sketchybar +yabai -m signal --add event=window_focused action="sketchybar --trigger window_focus" +yabai -m signal --add event=display_added action="sleep 3 && $HOME/.config/yabai/create_spaces.sh" +yabai -m signal --add event=display_removed action="sleep 3 && $HOME/.config/yabai/create_spaces.sh" +yabai -m signal --add event=window_created action="sketchybar -m --trigger window_change &> /dev/null" +yabai -m signal --add event=window_destroyed action="sketchybar -m --trigger window_change &> /dev/null" + +# borders +borders \ + style=squre \ + active_color=0xff00ff00 \ + width=6 \ + hidpi=on & diff --git a/mac/.local/bin/menu b/mac/.local/bin/menu new file mode 100755 index 0000000..32fcfff --- /dev/null +++ b/mac/.local/bin/menu @@ -0,0 +1,15 @@ +#!/bin/bash + +query="switch" + +if [ "$query" == "switch" ]; then + osascript <<EOF +tell application "System Events" + tell dock preferences + set autohide menu bar to not autohide menu bar + end tell +end tell + +display notification "Menu bar autohide feature is toggled" with title "Menu Bar Autohide" +EOF +fi |
