mirror of
https://github.com/mr0xb/dotfiles.git
synced 2026-08-27 19:34:57 -04:00
updates
This commit is contained in:
parent
bc4d4c403a
commit
715eb53860
57 changed files with 7755 additions and 3 deletions
27
.config/sketchybar/colors.sh
Executable file
27
.config/sketchybar/colors.sh
Executable file
|
|
@ -0,0 +1,27 @@
|
|||
#!/bin/bash
|
||||
|
||||
# IR Black Color Palette (from Ghostty theme)
|
||||
export BLACK=0xff000000 # IR Black bg
|
||||
export WHITE=0xfff1f1f1 # IR Black fg
|
||||
export RED=0xfffa6c60 # IR Black red
|
||||
#export GREEN=0xffa8ff60 # IR Black green
|
||||
export GREEN=0xff906cff # PURPLE
|
||||
export BLUE=0xff96cafe # IR Black blue
|
||||
export YELLOW=0xfffffeb7 # IR Black yellow
|
||||
export ORANGE=0xfffcb6b0 # IR Black bright red (warm accent)
|
||||
export MAGENTA=0xfffa73fd # IR Black magenta
|
||||
export CYAN=0xffc6c5fe # IR Black cyan/lavender
|
||||
export GREY=0xff4f4f4f # IR Black dim
|
||||
export TRANSPARENT=0x00000000
|
||||
|
||||
# Bar colors with IR Black background
|
||||
export BAR_COLOR=0xa0000000 # IR Black bg with transparency
|
||||
export ICON_COLOR=$WHITE # Color of all icons
|
||||
export LABEL_COLOR=$WHITE # Color of all labels
|
||||
export BACKGROUND_1=0x90000000 # IR Black bg
|
||||
export BACKGROUND_2=0x604f4f4f # IR Black dim, semi-transparent
|
||||
|
||||
export POPUP_BACKGROUND_COLOR=0xff000000
|
||||
export POPUP_BORDER_COLOR=$GREEN
|
||||
|
||||
export SHADOW_COLOR=$BLACK
|
||||
26
.config/sketchybar/helpers/colors.sh
Executable file
26
.config/sketchybar/helpers/colors.sh
Executable file
|
|
@ -0,0 +1,26 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Gruvbox Dark Hard Color Palette
|
||||
export BLACK=0xff1d2021 # Gruvbox bg
|
||||
export WHITE=0xffd5c4a1 # Gruvbox fg
|
||||
export RED=0xfffb4934 # Gruvbox red
|
||||
export GREEN=0xffb8bb26 # Gruvbox green (active workspace)
|
||||
export BLUE=0xff83a598 # Gruvbox blue (front app icon)
|
||||
export YELLOW=0xfffabd2f # Gruvbox yellow/gold (apple icon)
|
||||
export ORANGE=0xfffe8019 # Gruvbox orange
|
||||
export MAGENTA=0xffd3869b # Gruvbox magenta
|
||||
export CYAN=0xff8ec07c # Gruvbox cyan/aqua
|
||||
export GREY=0xff665c54 # Gruvbox grey
|
||||
export TRANSPARENT=0x00000000
|
||||
|
||||
# Bar colors with Gruvbox background tones
|
||||
export BAR_COLOR=0xa01d2021 # Gruvbox bg with transparency
|
||||
export ICON_COLOR=$WHITE # Color of all icons
|
||||
export LABEL_COLOR=$WHITE # Color of all labels
|
||||
export BACKGROUND_1=0x901d2021 # Gruvbox bg
|
||||
export BACKGROUND_2=0x903c3836 # Gruvbox bg1
|
||||
|
||||
export POPUP_BACKGROUND_COLOR=0xff1d2021
|
||||
export POPUP_BORDER_COLOR=$YELLOW
|
||||
|
||||
export SHADOW_COLOR=$BLACK
|
||||
26
.config/sketchybar/helpers/event_providers.sh
Executable file
26
.config/sketchybar/helpers/event_providers.sh
Executable file
|
|
@ -0,0 +1,26 @@
|
|||
#!/bin/bash
|
||||
|
||||
aerospace_workspace_change() {
|
||||
source "$CONFIG_DIR/colors.sh"
|
||||
CURRENT_WORKSPACE=$(aerospace list-workspaces --focused)
|
||||
|
||||
args=()
|
||||
while read -r line
|
||||
do
|
||||
if [[ $line =~ (aerospace\.workspace\.[0-9]+) ]]; then
|
||||
WORKSPACE_NUMBER=${line##*.}
|
||||
if [ "$WORKSPACE_NUMBER" = "$CURRENT_WORKSPACE" ]; then
|
||||
args+=(--set "${line}" icon.highlight=on)
|
||||
else
|
||||
args+=(--set "${line}" icon.highlight=off)
|
||||
fi
|
||||
fi
|
||||
done <<< "$(sketchybar --query bar | jq -r '.items[]')"
|
||||
|
||||
[ ${#args[@]} -gt 0 ] && sketchybar "${args[@]}"
|
||||
}
|
||||
|
||||
case "$SENDER" in
|
||||
"aerospace_workspace_change") aerospace_workspace_change
|
||||
;;
|
||||
esac
|
||||
2079
.config/sketchybar/helpers/icon_map.json
Normal file
2079
.config/sketchybar/helpers/icon_map.json
Normal file
File diff suppressed because it is too large
Load diff
455
.config/sketchybar/helpers/icon_map.lua
Normal file
455
.config/sketchybar/helpers/icon_map.lua
Normal file
|
|
@ -0,0 +1,455 @@
|
|||
return {
|
||||
["Live"] = ":ableton:",
|
||||
["Acrobat"] = ":acrobat:",
|
||||
["Activity Monitor"] = ":activity_monitor:",
|
||||
["Aktivitätsanzeige"] = ":activity_monitor:",
|
||||
["Adobe Bridge"] = ":adobe_bridge:",
|
||||
["AFFiNE"] = ":affine:",
|
||||
["Affinity Designer"] = ":affinity_designer:",
|
||||
["Affinity Designer 2"] = ":affinity_designer_2:",
|
||||
["Affinity Photo"] = ":affinity_photo:",
|
||||
["Affinity Photo 2"] = ":affinity_photo_2:",
|
||||
["Affinity Publisher"] = ":affinity_publisher:",
|
||||
["Affinity Publisher 2"] = ":affinity_publisher_2:",
|
||||
["Airmail"] = ":airmail:",
|
||||
["AirPort Utility"] = ":airport_utility:",
|
||||
["Alacritty"] = ":alacritty:",
|
||||
["Alfred"] = ":alfred:",
|
||||
["Android Messages"] = ":android_messages:",
|
||||
["Android Studio"] = ":android_studio:",
|
||||
["Anki"] = ":anki:",
|
||||
["Anytype"] = ":anytype:",
|
||||
["Apifox"] = ":apifox:",
|
||||
["App Eraser"] = ":app_eraser:",
|
||||
["App Store"] = ":app_store:",
|
||||
["Arc"] = ":arc:",
|
||||
["Arduino"] = ":arduino:",
|
||||
["Arduino IDE"] = ":arduino:",
|
||||
["Atom"] = ":atom:",
|
||||
["Audacity"] = ":audacity:",
|
||||
["balenaEtcher"] = ":balena_etcher:",
|
||||
["Bambu Studio"] = ":bambu_studio:",
|
||||
["MoneyMoney"] = ":bank:",
|
||||
["Battle.net"] = ":battle_net:",
|
||||
["Bazecor"] = ":bazecor:",
|
||||
["Bear"] = ":bear:",
|
||||
["BetterTouchTool"] = ":bettertouchtool:",
|
||||
["Bilibili"] = ":bilibili:",
|
||||
["哔哩哔哩"] = ":bilibili:",
|
||||
["Bitwarden"] = ":bit_warden:",
|
||||
["Blender"] = ":blender:",
|
||||
["Blitzit"] = ":blitzit:",
|
||||
["BluOS Controller"] = ":bluos_controller:",
|
||||
["Books"] = ":book:",
|
||||
["Calibre"] = ":book:",
|
||||
["Bücher"] = ":book:",
|
||||
["Brave Browser"] = ":brave_browser:",
|
||||
["Bruno"] = ":bruno:",
|
||||
["BusyCal"] = ":busycal:",
|
||||
["Calculator"] = ":calculator:",
|
||||
["Calculette"] = ":calculator:",
|
||||
["Rechner"] = ":calculator:",
|
||||
["Calendar"] = ":calendar:",
|
||||
["日历"] = ":calendar:",
|
||||
["Fantastical"] = ":calendar:",
|
||||
["Cron"] = ":calendar:",
|
||||
["Amie"] = ":calendar:",
|
||||
["Calendrier"] = ":calendar:",
|
||||
["カレンダー"] = ":calendar:",
|
||||
["Notion Calendar"] = ":calendar:",
|
||||
["Kalender"] = ":calendar:",
|
||||
["calibre"] = ":calibre:",
|
||||
["Capacities"] = ":capacities:",
|
||||
["Caprine"] = ":caprine:",
|
||||
["Amazon Chime"] = ":chime:",
|
||||
["Cisco AnyConnect Secure Mobility Client"] = ":cisco_anyconnect:",
|
||||
["Cisco Secure Client"] = ":cisco_anyconnect:",
|
||||
["Citrix Workspace"] = ":citrix:",
|
||||
["Citrix Viewer"] = ":citrix:",
|
||||
["Claude"] = ":claude:",
|
||||
["ClickUp"] = ":click_up:",
|
||||
["Code"] = ":code:",
|
||||
["Code - Insiders"] = ":code:",
|
||||
["Cold Turkey Blocker"] = ":cold_turkey_blocker:",
|
||||
["Color Picker"] = ":color_picker:",
|
||||
["数码测色计"] = ":color_picker:",
|
||||
["Comet"] = ":comet:",
|
||||
["Copilot"] = ":copilot:",
|
||||
["CotEditor"] = ":coteditor:",
|
||||
["Creative Cloud"] = ":creative_cloud:",
|
||||
["Cursor"] = ":cursor:",
|
||||
["Cypress"] = ":cypress:",
|
||||
["DataGrip"] = ":datagrip:",
|
||||
["DataSpell"] = ":dataspell:",
|
||||
["DaVinci Resolve"] = ":davinciresolve:",
|
||||
["DBeaver"] = ":dbeaver:",
|
||||
["DeepSeek"] = ":deepseek:",
|
||||
["Deezer"] = ":deezer:",
|
||||
["Default"] = ":default:",
|
||||
["deno"] = ":deno:",
|
||||
["CleanMyMac X"] = ":desktop:",
|
||||
["DEVONthink 3"] = ":devonthink3:",
|
||||
["Dexcom"] = ":dexcom:",
|
||||
["Dia"] = ":dia:",
|
||||
["DingTalk"] = ":dingtalk:",
|
||||
["钉钉"] = ":dingtalk:",
|
||||
["阿里钉"] = ":dingtalk:",
|
||||
["Discord"] = ":discord:",
|
||||
["Discord Canary"] = ":discord:",
|
||||
["Discord PTB"] = ":discord:",
|
||||
["Docker"] = ":docker:",
|
||||
["Docker Desktop"] = ":docker:",
|
||||
["GrandTotal"] = ":dollar:",
|
||||
["Receipts"] = ":dollar:",
|
||||
["Double Commander"] = ":doublecmd:",
|
||||
["Drafts"] = ":drafts:",
|
||||
["draw.io"] = ":draw_io:",
|
||||
["Dropbox"] = ":dropbox:",
|
||||
["Eagle"] = ":eagle:",
|
||||
["Element"] = ":element:",
|
||||
["Emacs"] = ":emacs:",
|
||||
["Evernote Legacy"] = ":evernote_legacy:",
|
||||
["FaceTime"] = ":face_time:",
|
||||
["FaceTime 通话"] = ":face_time:",
|
||||
["Feishu"] = ":feishu:",
|
||||
["Figma"] = ":figma:",
|
||||
["Final Cut Pro"] = ":final_cut_pro:",
|
||||
["Finder"] = ":finder:",
|
||||
["访达"] = ":finder:",
|
||||
["Firefox"] = ":firefox:",
|
||||
["Firefox Developer Edition"] = ":firefox_developer_edition:",
|
||||
["Firefox Nightly"] = ":firefox_developer_edition:",
|
||||
["FL Studio"] = ":flstudio:",
|
||||
["Folx"] = ":folx:",
|
||||
["Fork"] = ":fork:",
|
||||
["Foxit PDF Reader"] = ":foxit_reader:",
|
||||
["FreeCAD"] = ":freecad:",
|
||||
["Freeform"] = ":freeform:",
|
||||
["FreeTube"] = ":freetube:",
|
||||
["Fusion"] = ":fusion:",
|
||||
["System Preferences"] = ":gear:",
|
||||
["System Settings"] = ":gear:",
|
||||
["系统设置"] = ":gear:",
|
||||
["Réglages Système"] = ":gear:",
|
||||
["システム設定"] = ":gear:",
|
||||
["Systemeinstellungen"] = ":gear:",
|
||||
["Systemeinstellungen"] = ":gear:",
|
||||
["Ghostty"] = ":ghostty:",
|
||||
["GIMP"] = ":gimp:",
|
||||
["GitHub Desktop"] = ":git_hub:",
|
||||
["Godot"] = ":godot:",
|
||||
["GoLand"] = ":goland:",
|
||||
["Goodnotes"] = ":goodnotes:",
|
||||
["Chromium"] = ":google_chrome:",
|
||||
["Google Chrome"] = ":google_chrome:",
|
||||
["Google Chrome Canary"] = ":google_chrome:",
|
||||
["Grammarly Editor"] = ":grammarly:",
|
||||
["Granola"] = ":granola:",
|
||||
["Grayjay"] = ":grayjay:",
|
||||
["Helium"] = ":helium:",
|
||||
["Home Assistant"] = ":home_assistant:",
|
||||
["Hyper"] = ":hyper:",
|
||||
["IntelliJ IDEA"] = ":idea:",
|
||||
["IINA"] = ":iina:",
|
||||
["Adobe Illustrator"] = ":illustrator:",
|
||||
["Illustrator"] = ":illustrator:",
|
||||
["Adobe InDesign"] = ":indesign:",
|
||||
["InDesign"] = ":indesign:",
|
||||
["Infuse"] = ":infuse:",
|
||||
["Inkdrop"] = ":inkdrop:",
|
||||
["Inkscape"] = ":inkscape:",
|
||||
["Insomnia"] = ":insomnia:",
|
||||
["iPhone Mirroring"] = ":iphone_mirroring:",
|
||||
["Iris"] = ":iris:",
|
||||
["iTerm"] = ":iterm:",
|
||||
["iTerm2"] = ":iterm:",
|
||||
["Jellyfin Media Player"] = ":jellyfin:",
|
||||
["JetBrains Gateway"] = ":jetbrains_gateway:",
|
||||
["JetBrains Toolbox"] = ":jetbrains_toolbox:",
|
||||
["Joplin"] = ":joplin:",
|
||||
["카카오톡"] = ":kakaotalk:",
|
||||
["KakaoTalk"] = ":kakaotalk:",
|
||||
["Kakoune"] = ":kakoune:",
|
||||
["KeePassXC"] = ":kee_pass_x_c:",
|
||||
["Keyboard Maestro"] = ":keyboard_maestro:",
|
||||
["Keynote"] = ":keynote:",
|
||||
["Keynote 讲演"] = ":keynote:",
|
||||
["KiCad"] = ":kicad:",
|
||||
["Kiro"] = ":kiro:",
|
||||
["kitty"] = ":kitty:",
|
||||
["Kodi"] = ":kodi:",
|
||||
["LanguageTool for Desktop"] = ":languagetool_for_desktop:",
|
||||
["League of Legends"] = ":league_of_legends:",
|
||||
["LibreWolf"] = ":libre_wolf:",
|
||||
["LibreOffice"] = ":libreoffice:",
|
||||
["Adobe Lightroom"] = ":lightroom:",
|
||||
["Lightroom Classic"] = ":lightroomclassic:",
|
||||
["LINE"] = ":line:",
|
||||
["Linear"] = ":linear:",
|
||||
["LM Studio"] = ":lm_studio:",
|
||||
["LocalSend"] = ":localsend:",
|
||||
["Logic Pro"] = ":logicpro:",
|
||||
["Logseq"] = ":logseq:",
|
||||
["MacPass"] = ":macpass:",
|
||||
["Canary Mail"] = ":mail:",
|
||||
["HEY"] = ":mail:",
|
||||
["Mail"] = ":mail:",
|
||||
["Mailspring"] = ":mail:",
|
||||
["MailMate"] = ":mail:",
|
||||
["Superhuman"] = ":mail:",
|
||||
["Spark"] = ":mail:",
|
||||
["邮件"] = ":mail:",
|
||||
["メール"] = ":mail:",
|
||||
["MAMP"] = ":mamp:",
|
||||
["MAMP PRO"] = ":mamp:",
|
||||
["Maps"] = ":maps:",
|
||||
["Google Maps"] = ":maps:",
|
||||
["マップ"] = ":maps:",
|
||||
["Karten"] = ":maps:",
|
||||
["Marta"] = ":marta:",
|
||||
["Matlab"] = ":matlab:",
|
||||
["MATLAB"] = ":matlab:",
|
||||
["MATLABWindow"] = ":matlab:",
|
||||
["MATLAB_R2024b"] = ":matlab:",
|
||||
["MATLAB_R2024a"] = ":matlab:",
|
||||
["MATLAB_R2023b"] = ":matlab:",
|
||||
["MATLAB_R2023a"] = ":matlab:",
|
||||
["MATLAB_R2022b"] = ":matlab:",
|
||||
["MATLAB_R2022a"] = ":matlab:",
|
||||
["MATLAB_R2021b"] = ":matlab:",
|
||||
["MATLAB_R2021a"] = ":matlab:",
|
||||
["Mattermost"] = ":mattermost:",
|
||||
["Google Meet"] = ":meet:",
|
||||
["Messages"] = ":messages:",
|
||||
["信息"] = ":messages:",
|
||||
["Nachrichten"] = ":messages:",
|
||||
["メッセージ"] = ":messages:",
|
||||
["Messenger"] = ":messenger:",
|
||||
["Microsoft Edge"] = ":microsoft_edge:",
|
||||
["Microsoft Excel"] = ":microsoft_excel:",
|
||||
["Microsoft Outlook"] = ":microsoft_outlook:",
|
||||
["Microsoft PowerPoint"] = ":microsoft_power_point:",
|
||||
["Microsoft Remote Desktop"] = ":microsoft_remote_desktop:",
|
||||
["Microsoft Teams"] = ":microsoft_teams:",
|
||||
["Microsoft Teams (work or school)"] = ":microsoft_teams:",
|
||||
["Microsoft Word"] = ":microsoft_word:",
|
||||
["Mimestream"] = ":mimestream:",
|
||||
["Min"] = ":min_browser:",
|
||||
["Miro"] = ":miro:",
|
||||
["MongoDB Compass"] = ":mongodb:",
|
||||
["Moonlight"] = ":moonlight:",
|
||||
["mpv"] = ":mpv:",
|
||||
["Mullvad Browser"] = ":mullvad_browser:",
|
||||
["Music"] = ":music:",
|
||||
["音乐"] = ":music:",
|
||||
["Musique"] = ":music:",
|
||||
["ミュージック"] = ":music:",
|
||||
["Musik"] = ":music:",
|
||||
["Navicat Premium"] = ":navicat:",
|
||||
["Neovide"] = ":neovide:",
|
||||
["neovide"] = ":neovide:",
|
||||
["Neovim"] = ":neovim:",
|
||||
["neovim"] = ":neovim:",
|
||||
["nvim"] = ":neovim:",
|
||||
["网易云音乐"] = ":netease_music:",
|
||||
["NetEaseMusic"] = ":netease_music:",
|
||||
["News"] = ":news:",
|
||||
["Nextcloud"] = ":nextcloud:",
|
||||
["Nicotine+"] = ":nicotine_plus:",
|
||||
["Nimble Commander"] = ":nimble_commander:",
|
||||
["NimbleCommander-Unsigned"] = ":nimble_commander:",
|
||||
["Noodl"] = ":noodl:",
|
||||
["Noodl Editor"] = ":noodl:",
|
||||
["NordVPN"] = ":nord_vpn:",
|
||||
["Notability"] = ":notability:",
|
||||
["Notes"] = ":notes:",
|
||||
["备忘录"] = ":notes:",
|
||||
["メモ"] = ":notes:",
|
||||
["Notizen"] = ":notes:",
|
||||
["Notion"] = ":notion:",
|
||||
["Notion Mail"] = ":notion_mail:",
|
||||
["Nova"] = ":nova:",
|
||||
["Numbers"] = ":numbers:",
|
||||
["Numbers 表格"] = ":numbers:",
|
||||
["Obsidian"] = ":obsidian:",
|
||||
["OBS"] = ":obsstudio:",
|
||||
["OmniFocus"] = ":omni_focus:",
|
||||
["1Password"] = ":one_password:",
|
||||
["Open Video Downloader"] = ":open_video_downloader:",
|
||||
["ChatGPT"] = ":openai:",
|
||||
["OpenAI Translator"] = ":openai_translator:",
|
||||
["OpenVPN Connect"] = ":openvpn_connect:",
|
||||
["Opera"] = ":opera:",
|
||||
["OrbStack"] = ":orbstack:",
|
||||
["OrcaSlicer"] = ":orcaslicer:",
|
||||
["Orion"] = ":orion:",
|
||||
["Orion RC"] = ":orion:",
|
||||
["Overleaf"] = ":overleaf:",
|
||||
["ShareLaTeX"] = ":overleaf:",
|
||||
["Pages"] = ":pages:",
|
||||
["Pages 文稿"] = ":pages:",
|
||||
["Parallels Desktop"] = ":parallels:",
|
||||
["Parsec"] = ":parsec:",
|
||||
["Passepartout"] = ":passepartout:",
|
||||
["Passwords"] = ":passwords:",
|
||||
["Passwörter"] = ":passwords:",
|
||||
["PDF Expert"] = ":pdf_expert:",
|
||||
["Pearcleaner"] = ":pearcleaner:",
|
||||
["Perplexity"] = ":perplexity:",
|
||||
["Perplexity AI"] = ":perplexity:",
|
||||
["Phoenix Slides"] = ":phoenix_slides:",
|
||||
["Photos"] = ":photos:",
|
||||
["Fotos"] = ":photos:",
|
||||
["Adobe Photoshop"] = ":photoshop:",
|
||||
["PhpStorm"] = ":php_storm:",
|
||||
["Pi-hole Remote"] = ":pihole:",
|
||||
["Pine"] = ":pine:",
|
||||
["Plex"] = ":plex:",
|
||||
["Plexamp"] = ":plexamp:",
|
||||
["Podcasts"] = ":podcasts:",
|
||||
["播客"] = ":podcasts:",
|
||||
["PomoDone App"] = ":pomodone:",
|
||||
["Postman"] = ":postman:",
|
||||
["Premiere"] = ":premiere:",
|
||||
["Adobe Premiere"] = ":premiere:",
|
||||
["Adobe Premiere Pro 2024"] = ":premiere:",
|
||||
["Preview"] = ":preview:",
|
||||
["预览"] = ":preview:",
|
||||
["Skim"] = ":preview:",
|
||||
["zathura"] = ":preview:",
|
||||
["Aperçu"] = ":preview:",
|
||||
["プレビュー"] = ":preview:",
|
||||
["Vorschau"] = ":preview:",
|
||||
["Proton Mail"] = ":proton_mail:",
|
||||
["Proton Mail Bridge"] = ":proton_mail:",
|
||||
["Proton VPN"] = ":proton_vpn:",
|
||||
["ProtonVPN"] = ":proton_vpn:",
|
||||
["PrusaSlicer"] = ":prusaslicer:",
|
||||
["SuperSlicer"] = ":prusaslicer:",
|
||||
["PyCharm"] = ":pycharm:",
|
||||
["qBittorrent"] = ":qbittorrent:",
|
||||
["QLMarkdown"] = ":qlmarkdown:",
|
||||
["QQ"] = ":qq:",
|
||||
["QQ音乐"] = ":qqmusic:",
|
||||
["QQMusic"] = ":qqmusic:",
|
||||
["Quantumult X"] = ":quantumult_x:",
|
||||
["Quip"] = ":quip:",
|
||||
["qutebrowser"] = ":qute_browser:",
|
||||
["Raindrop.io"] = ":raindrop_io:",
|
||||
["Raspberry Pi Imager"] = ":raspberry_pi:",
|
||||
["Raspberry Pi Connect"] = ":raspberry_pi:",
|
||||
["Raycast"] = ":raycast:",
|
||||
["Reeder"] = ":reeder5:",
|
||||
["rekordbox"] = ":rekordbox:",
|
||||
["Reminders"] = ":reminders:",
|
||||
["提醒事项"] = ":reminders:",
|
||||
["Rappels"] = ":reminders:",
|
||||
["リマインダー"] = ":reminders:",
|
||||
["Erinnerungen"] = ":reminders:",
|
||||
["Replit"] = ":replit:",
|
||||
["Repo Prompt"] = ":repo_prompt:",
|
||||
["Rider"] = ":rider:",
|
||||
["JetBrains Rider"] = ":rider:",
|
||||
["Rio"] = ":rio:",
|
||||
["Royal TSX"] = ":royaltsx:",
|
||||
["RustDesk"] = ":rustdesk:",
|
||||
["Safari"] = ":safari:",
|
||||
["Safari浏览器"] = ":safari:",
|
||||
["Safari Technology Preview"] = ":safari:",
|
||||
["Scribus"] = ":scribus:",
|
||||
["Seafile"] = ":seafile:",
|
||||
["Sequel Ace"] = ":sequel_ace:",
|
||||
["Sequel Pro"] = ":sequel_pro:",
|
||||
["Session"] = ":session:",
|
||||
["Setapp"] = ":setapp:",
|
||||
["SF Symbols"] = ":sf_symbols:",
|
||||
["SF Symbole"] = ":sf_symbols:",
|
||||
["SF-Symbole"] = ":sf_symbols:",
|
||||
["Shortcuts"] = ":shortcuts:",
|
||||
["Signal"] = ":signal:",
|
||||
["sioyek"] = ":sioyek:",
|
||||
["Sketch"] = ":sketch:",
|
||||
["Skype"] = ":skype:",
|
||||
["Slack"] = ":slack:",
|
||||
["Spark Desktop"] = ":spark:",
|
||||
["Spotify"] = ":spotify:",
|
||||
["Spotlight"] = ":spotlight:",
|
||||
["Steam"] = ":steam:",
|
||||
["Steam Helper"] = ":steam:",
|
||||
["Studio 3T"] = ":studio_3t:",
|
||||
["Sublime Text"] = ":sublime_text:",
|
||||
["Summoners War"] = ":summoners_war:",
|
||||
["superProductivity"] = ":superproductivity:",
|
||||
["Surfshark"] = ":surfshark:",
|
||||
["T3 Chat"] = ":t3chat:",
|
||||
["Tabby"] = ":tabby:",
|
||||
["TablePlus"] = ":tableplus:",
|
||||
["Tana"] = ":tana:",
|
||||
["TeamSpeak 3"] = ":team_speak:",
|
||||
["Telegram"] = ":telegram:",
|
||||
["Terminal"] = ":terminal:",
|
||||
["终端"] = ":terminal:",
|
||||
["ターミナル"] = ":terminal:",
|
||||
["Termius"] = ":termius:",
|
||||
["Typora"] = ":text:",
|
||||
["TextEdit"] = ":textedit:",
|
||||
["Microsoft To Do"] = ":things:",
|
||||
["Things"] = ":things:",
|
||||
["Thunderbird"] = ":thunderbird:",
|
||||
["Thunderbird Daily"] = ":thunderbird:",
|
||||
["TickTick"] = ":tick_tick:",
|
||||
["TIDAL"] = ":tidal:",
|
||||
["Tiny RDM"] = ":tinyrdm:",
|
||||
["Todoist"] = ":todoist:",
|
||||
["Toggl Track"] = ":toggl_track:",
|
||||
["Tor Browser"] = ":tor_browser:",
|
||||
["Tower"] = ":tower:",
|
||||
["TradingView"] = ":trading_view:",
|
||||
["Transmit"] = ":transmit:",
|
||||
["Trello"] = ":trello:",
|
||||
["Tweetbot"] = ":twitter:",
|
||||
["Twitter"] = ":twitter:",
|
||||
["UTM"] = ":utm:",
|
||||
["VeraCrypt"] = ":veracrypt:",
|
||||
["MacVim"] = ":vim:",
|
||||
["Vim"] = ":vim:",
|
||||
["VimR"] = ":vim:",
|
||||
["Vivaldi"] = ":vivaldi:",
|
||||
["VLC"] = ":vlc:",
|
||||
["VMware Fusion"] = ":vmware_fusion:",
|
||||
["Vorta"] = ":vorta:",
|
||||
["VSCodium"] = ":vscodium:",
|
||||
["Warp"] = ":warp:",
|
||||
["Weather"] = ":weather:",
|
||||
["Wetter"] = ":weather:",
|
||||
["WebStorm"] = ":web_storm:",
|
||||
["Webull Desktop"] = ":webull:",
|
||||
["微信"] = ":wechat:",
|
||||
["WeChat"] = ":wechat:",
|
||||
["企业微信"] = ":wecom:",
|
||||
["WeCom"] = ":wecom:",
|
||||
["WezTerm"] = ":wezterm:",
|
||||
["wezterm-gui"] = ":wezterm:",
|
||||
["WhatsApp"] = ":whats_app:",
|
||||
["WhatsApp"] = ":whats_app:",
|
||||
["Windows App"] = ":windows_app:",
|
||||
["WireGuard"] = ":wireguard:",
|
||||
["Xcode"] = ":xcode:",
|
||||
["Yandex Browser"] = ":yandex_bower:",
|
||||
["Yandex Browser"] = ":yandex_bower:",
|
||||
["Yandex"] = ":yandex_bower:",
|
||||
["Yandex Music"] = ":yandex_music:",
|
||||
["Yazi"] = ":yazi:",
|
||||
["yazi"] = ":yazi:",
|
||||
["YouTube"] = ":youtube:",
|
||||
["YouTube Music"] = ":youtube_music:",
|
||||
["Yuque"] = ":yuque:",
|
||||
["语雀"] = ":yuque:",
|
||||
["Zed"] = ":zed:",
|
||||
["Zen"] = ":zen_browser:",
|
||||
["Zen Browser"] = ":zen_browser:",
|
||||
["Zeplin"] = ":zeplin:",
|
||||
["zoom.us"] = ":zoom:",
|
||||
["Zotero"] = ":zotero:",
|
||||
["Zulip"] = ":zulip:",
|
||||
}
|
||||
986
.config/sketchybar/helpers/icon_map.sh
Executable file
986
.config/sketchybar/helpers/icon_map.sh
Executable file
|
|
@ -0,0 +1,986 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
### START-OF-ICON-MAP
|
||||
function __icon_map() {
|
||||
case "$1" in
|
||||
"Live")
|
||||
icon_result=":ableton:"
|
||||
;;
|
||||
"Acrobat")
|
||||
icon_result=":acrobat:"
|
||||
;;
|
||||
"Activity Monitor" | "Aktivitätsanzeige")
|
||||
icon_result=":activity_monitor:"
|
||||
;;
|
||||
"Adobe Bridge"*)
|
||||
icon_result=":adobe_bridge:"
|
||||
;;
|
||||
"AFFiNE")
|
||||
icon_result=":affine:"
|
||||
;;
|
||||
"Affinity Designer")
|
||||
icon_result=":affinity_designer:"
|
||||
;;
|
||||
"Affinity Designer 2")
|
||||
icon_result=":affinity_designer_2:"
|
||||
;;
|
||||
"Affinity Photo")
|
||||
icon_result=":affinity_photo:"
|
||||
;;
|
||||
"Affinity Photo 2")
|
||||
icon_result=":affinity_photo_2:"
|
||||
;;
|
||||
"Affinity Publisher")
|
||||
icon_result=":affinity_publisher:"
|
||||
;;
|
||||
"Affinity Publisher 2")
|
||||
icon_result=":affinity_publisher_2:"
|
||||
;;
|
||||
"Airmail")
|
||||
icon_result=":airmail:"
|
||||
;;
|
||||
"AirPort Utility")
|
||||
icon_result=":airport_utility:"
|
||||
;;
|
||||
"Alacritty")
|
||||
icon_result=":alacritty:"
|
||||
;;
|
||||
"Alfred")
|
||||
icon_result=":alfred:"
|
||||
;;
|
||||
"Android Messages")
|
||||
icon_result=":android_messages:"
|
||||
;;
|
||||
"Android Studio")
|
||||
icon_result=":android_studio:"
|
||||
;;
|
||||
"Anki")
|
||||
icon_result=":anki:"
|
||||
;;
|
||||
"Anytype")
|
||||
icon_result=":anytype:"
|
||||
;;
|
||||
"Apifox")
|
||||
icon_result=":apifox:"
|
||||
;;
|
||||
"App Eraser")
|
||||
icon_result=":app_eraser:"
|
||||
;;
|
||||
"App Store")
|
||||
icon_result=":app_store:"
|
||||
;;
|
||||
"Arc")
|
||||
icon_result=":arc:"
|
||||
;;
|
||||
"Arduino" | "Arduino IDE")
|
||||
icon_result=":arduino:"
|
||||
;;
|
||||
"Atom")
|
||||
icon_result=":atom:"
|
||||
;;
|
||||
"Audacity")
|
||||
icon_result=":audacity:"
|
||||
;;
|
||||
"balenaEtcher")
|
||||
icon_result=":balena_etcher:"
|
||||
;;
|
||||
"Bambu Studio")
|
||||
icon_result=":bambu_studio:"
|
||||
;;
|
||||
"MoneyMoney")
|
||||
icon_result=":bank:"
|
||||
;;
|
||||
"Battle.net")
|
||||
icon_result=":battle_net:"
|
||||
;;
|
||||
"Bazecor")
|
||||
icon_result=":bazecor:"
|
||||
;;
|
||||
"Bear")
|
||||
icon_result=":bear:"
|
||||
;;
|
||||
"BetterTouchTool")
|
||||
icon_result=":bettertouchtool:"
|
||||
;;
|
||||
"Bilibili" | "哔哩哔哩")
|
||||
icon_result=":bilibili:"
|
||||
;;
|
||||
"Bitwarden")
|
||||
icon_result=":bit_warden:"
|
||||
;;
|
||||
"Blender")
|
||||
icon_result=":blender:"
|
||||
;;
|
||||
"Blitzit")
|
||||
icon_result=":blitzit:"
|
||||
;;
|
||||
"BluOS Controller")
|
||||
icon_result=":bluos_controller:"
|
||||
;;
|
||||
"Books" | "Calibre" | "Bücher")
|
||||
icon_result=":book:"
|
||||
;;
|
||||
"Brave Browser")
|
||||
icon_result=":brave_browser:"
|
||||
;;
|
||||
"Bruno")
|
||||
icon_result=":bruno:"
|
||||
;;
|
||||
"BusyCal")
|
||||
icon_result=":busycal:"
|
||||
;;
|
||||
"Calculator" | "Calculette" | "Rechner")
|
||||
icon_result=":calculator:"
|
||||
;;
|
||||
"Calendar" | "日历" | "Fantastical" | "Cron" | "Amie" | "Calendrier" | "カレンダー" | "Notion Calendar" | "Kalender")
|
||||
icon_result=":calendar:"
|
||||
;;
|
||||
"calibre")
|
||||
icon_result=":calibre:"
|
||||
;;
|
||||
"Capacities")
|
||||
icon_result=":capacities:"
|
||||
;;
|
||||
"Caprine")
|
||||
icon_result=":caprine:"
|
||||
;;
|
||||
"Amazon Chime")
|
||||
icon_result=":chime:"
|
||||
;;
|
||||
"Cisco AnyConnect Secure Mobility Client" | "Cisco Secure Client")
|
||||
icon_result=":cisco_anyconnect:"
|
||||
;;
|
||||
"Citrix Workspace" | "Citrix Viewer")
|
||||
icon_result=":citrix:"
|
||||
;;
|
||||
"Claude")
|
||||
icon_result=":claude:"
|
||||
;;
|
||||
"ClickUp")
|
||||
icon_result=":click_up:"
|
||||
;;
|
||||
"Code" | "Code - Insiders")
|
||||
icon_result=":code:"
|
||||
;;
|
||||
"Cold Turkey Blocker")
|
||||
icon_result=":cold_turkey_blocker:"
|
||||
;;
|
||||
"Color Picker" | "数码测色计")
|
||||
icon_result=":color_picker:"
|
||||
;;
|
||||
"Comet")
|
||||
icon_result=":comet:"
|
||||
;;
|
||||
"Copilot")
|
||||
icon_result=":copilot:"
|
||||
;;
|
||||
"CotEditor")
|
||||
icon_result=":coteditor:"
|
||||
;;
|
||||
"Creative Cloud")
|
||||
icon_result=":creative_cloud:"
|
||||
;;
|
||||
"Cursor")
|
||||
icon_result=":cursor:"
|
||||
;;
|
||||
"Cypress")
|
||||
icon_result=":cypress:"
|
||||
;;
|
||||
"DataGrip")
|
||||
icon_result=":datagrip:"
|
||||
;;
|
||||
"DataSpell")
|
||||
icon_result=":dataspell:"
|
||||
;;
|
||||
"DaVinci Resolve")
|
||||
icon_result=":davinciresolve:"
|
||||
;;
|
||||
"DBeaver")
|
||||
icon_result=":dbeaver:"
|
||||
;;
|
||||
"DeepSeek")
|
||||
icon_result=":deepseek:"
|
||||
;;
|
||||
"Deezer")
|
||||
icon_result=":deezer:"
|
||||
;;
|
||||
"Default")
|
||||
icon_result=":default:"
|
||||
;;
|
||||
"deno")
|
||||
icon_result=":deno:"
|
||||
;;
|
||||
"CleanMyMac X")
|
||||
icon_result=":desktop:"
|
||||
;;
|
||||
"DEVONthink 3")
|
||||
icon_result=":devonthink3:"
|
||||
;;
|
||||
"Dexcom")
|
||||
icon_result=":dexcom:"
|
||||
;;
|
||||
"Dia")
|
||||
icon_result=":dia:"
|
||||
;;
|
||||
"DingTalk" | "钉钉" | "阿里钉")
|
||||
icon_result=":dingtalk:"
|
||||
;;
|
||||
"Discord" | "Discord Canary" | "Discord PTB")
|
||||
icon_result=":discord:"
|
||||
;;
|
||||
"Docker" | "Docker Desktop")
|
||||
icon_result=":docker:"
|
||||
;;
|
||||
"GrandTotal" | "Receipts")
|
||||
icon_result=":dollar:"
|
||||
;;
|
||||
"Double Commander")
|
||||
icon_result=":doublecmd:"
|
||||
;;
|
||||
"Drafts")
|
||||
icon_result=":drafts:"
|
||||
;;
|
||||
"draw.io")
|
||||
icon_result=":draw_io:"
|
||||
;;
|
||||
"Dropbox")
|
||||
icon_result=":dropbox:"
|
||||
;;
|
||||
"Eagle")
|
||||
icon_result=":eagle:"
|
||||
;;
|
||||
"Element")
|
||||
icon_result=":element:"
|
||||
;;
|
||||
"Emacs")
|
||||
icon_result=":emacs:"
|
||||
;;
|
||||
"Evernote Legacy")
|
||||
icon_result=":evernote_legacy:"
|
||||
;;
|
||||
"FaceTime" | "FaceTime 通话")
|
||||
icon_result=":face_time:"
|
||||
;;
|
||||
"Feishu")
|
||||
icon_result=":feishu:"
|
||||
;;
|
||||
"Figma")
|
||||
icon_result=":figma:"
|
||||
;;
|
||||
"Final Cut Pro")
|
||||
icon_result=":final_cut_pro:"
|
||||
;;
|
||||
"Finder" | "访达")
|
||||
icon_result=":finder:"
|
||||
;;
|
||||
"Firefox")
|
||||
icon_result=":firefox:"
|
||||
;;
|
||||
"Firefox Developer Edition" | "Firefox Nightly")
|
||||
icon_result=":firefox_developer_edition:"
|
||||
;;
|
||||
"FL Studio")
|
||||
icon_result=":flstudio:"
|
||||
;;
|
||||
"Folx")
|
||||
icon_result=":folx:"
|
||||
;;
|
||||
"Fork")
|
||||
icon_result=":fork:"
|
||||
;;
|
||||
"Foxit PDF Reader")
|
||||
icon_result=":foxit_reader:"
|
||||
;;
|
||||
"FreeCAD")
|
||||
icon_result=":freecad:"
|
||||
;;
|
||||
"Freeform")
|
||||
icon_result=":freeform:"
|
||||
;;
|
||||
"FreeTube")
|
||||
icon_result=":freetube:"
|
||||
;;
|
||||
"Fusion")
|
||||
icon_result=":fusion:"
|
||||
;;
|
||||
"System Preferences" | "System Settings" | "系统设置" | "Réglages Système" | "システム設定" | "Systemeinstellungen" | "Systemeinstellungen")
|
||||
icon_result=":gear:"
|
||||
;;
|
||||
"Ghostty")
|
||||
icon_result=":ghostty:"
|
||||
;;
|
||||
"GIMP")
|
||||
icon_result=":gimp:"
|
||||
;;
|
||||
"GitHub Desktop")
|
||||
icon_result=":git_hub:"
|
||||
;;
|
||||
"Godot")
|
||||
icon_result=":godot:"
|
||||
;;
|
||||
"GoLand")
|
||||
icon_result=":goland:"
|
||||
;;
|
||||
"Goodnotes")
|
||||
icon_result=":goodnotes:"
|
||||
;;
|
||||
"Chromium" | "Google Chrome" | "Google Chrome Canary")
|
||||
icon_result=":google_chrome:"
|
||||
;;
|
||||
"Grammarly Editor")
|
||||
icon_result=":grammarly:"
|
||||
;;
|
||||
"Granola")
|
||||
icon_result=":granola:"
|
||||
;;
|
||||
"Grayjay")
|
||||
icon_result=":grayjay:"
|
||||
;;
|
||||
"Helium")
|
||||
icon_result=":helium:"
|
||||
;;
|
||||
"Home Assistant")
|
||||
icon_result=":home_assistant:"
|
||||
;;
|
||||
"Hyper")
|
||||
icon_result=":hyper:"
|
||||
;;
|
||||
"IntelliJ IDEA")
|
||||
icon_result=":idea:"
|
||||
;;
|
||||
"IINA")
|
||||
icon_result=":iina:"
|
||||
;;
|
||||
"Adobe Illustrator"* | "Illustrator")
|
||||
icon_result=":illustrator:"
|
||||
;;
|
||||
"Adobe InDesign"* | "InDesign")
|
||||
icon_result=":indesign:"
|
||||
;;
|
||||
"Infuse")
|
||||
icon_result=":infuse:"
|
||||
;;
|
||||
"Inkdrop")
|
||||
icon_result=":inkdrop:"
|
||||
;;
|
||||
"Inkscape")
|
||||
icon_result=":inkscape:"
|
||||
;;
|
||||
"Insomnia")
|
||||
icon_result=":insomnia:"
|
||||
;;
|
||||
"iPhone Mirroring")
|
||||
icon_result=":iphone_mirroring:"
|
||||
;;
|
||||
"Iris")
|
||||
icon_result=":iris:"
|
||||
;;
|
||||
"iTerm" | "iTerm2")
|
||||
icon_result=":iterm:"
|
||||
;;
|
||||
"Jellyfin Media Player")
|
||||
icon_result=":jellyfin:"
|
||||
;;
|
||||
"JetBrains Gateway")
|
||||
icon_result=":jetbrains_gateway:"
|
||||
;;
|
||||
"JetBrains Toolbox")
|
||||
icon_result=":jetbrains_toolbox:"
|
||||
;;
|
||||
"Joplin")
|
||||
icon_result=":joplin:"
|
||||
;;
|
||||
"카카오톡" | "KakaoTalk")
|
||||
icon_result=":kakaotalk:"
|
||||
;;
|
||||
"Kakoune")
|
||||
icon_result=":kakoune:"
|
||||
;;
|
||||
"KeePassXC")
|
||||
icon_result=":kee_pass_x_c:"
|
||||
;;
|
||||
"Keyboard Maestro")
|
||||
icon_result=":keyboard_maestro:"
|
||||
;;
|
||||
"Keynote" | "Keynote 讲演")
|
||||
icon_result=":keynote:"
|
||||
;;
|
||||
"KiCad")
|
||||
icon_result=":kicad:"
|
||||
;;
|
||||
"Kiro")
|
||||
icon_result=":kiro:"
|
||||
;;
|
||||
"kitty")
|
||||
icon_result=":kitty:"
|
||||
;;
|
||||
"Kodi")
|
||||
icon_result=":kodi:"
|
||||
;;
|
||||
"LanguageTool for Desktop")
|
||||
icon_result=":languagetool_for_desktop:"
|
||||
;;
|
||||
"League of Legends")
|
||||
icon_result=":league_of_legends:"
|
||||
;;
|
||||
"LibreWolf")
|
||||
icon_result=":libre_wolf:"
|
||||
;;
|
||||
"LibreOffice")
|
||||
icon_result=":libreoffice:"
|
||||
;;
|
||||
"Adobe Lightroom")
|
||||
icon_result=":lightroom:"
|
||||
;;
|
||||
"Lightroom Classic")
|
||||
icon_result=":lightroomclassic:"
|
||||
;;
|
||||
"LINE")
|
||||
icon_result=":line:"
|
||||
;;
|
||||
"Linear")
|
||||
icon_result=":linear:"
|
||||
;;
|
||||
"LM Studio")
|
||||
icon_result=":lm_studio:"
|
||||
;;
|
||||
"LocalSend")
|
||||
icon_result=":localsend:"
|
||||
;;
|
||||
"Logic Pro")
|
||||
icon_result=":logicpro:"
|
||||
;;
|
||||
"Logseq")
|
||||
icon_result=":logseq:"
|
||||
;;
|
||||
"MacPass")
|
||||
icon_result=":macpass:"
|
||||
;;
|
||||
"Canary Mail" | "HEY" | "Mail" | "Mailspring" | "MailMate" | "Superhuman" | "Spark" | "邮件" | "メール")
|
||||
icon_result=":mail:"
|
||||
;;
|
||||
"MAMP" | "MAMP PRO")
|
||||
icon_result=":mamp:"
|
||||
;;
|
||||
"Maps" | "Google Maps" | "マップ" | "Karten")
|
||||
icon_result=":maps:"
|
||||
;;
|
||||
"Marta")
|
||||
icon_result=":marta:"
|
||||
;;
|
||||
"Matlab" | "MATLAB" |"MATLABWindow" | "MATLAB_R2024b" | "MATLAB_R2024a" | "MATLAB_R2023b" | "MATLAB_R2023a" | "MATLAB_R2022b" | "MATLAB_R2022a" | "MATLAB_R2021b" | "MATLAB_R2021a")
|
||||
icon_result=":matlab:"
|
||||
;;
|
||||
"Mattermost")
|
||||
icon_result=":mattermost:"
|
||||
;;
|
||||
"Google Meet")
|
||||
icon_result=":meet:"
|
||||
;;
|
||||
"Messages" | "信息" | "Nachrichten" | "メッセージ")
|
||||
icon_result=":messages:"
|
||||
;;
|
||||
"Messenger")
|
||||
icon_result=":messenger:"
|
||||
;;
|
||||
"Microsoft Edge")
|
||||
icon_result=":microsoft_edge:"
|
||||
;;
|
||||
"Microsoft Excel")
|
||||
icon_result=":microsoft_excel:"
|
||||
;;
|
||||
"Microsoft Outlook")
|
||||
icon_result=":microsoft_outlook:"
|
||||
;;
|
||||
"Microsoft PowerPoint")
|
||||
icon_result=":microsoft_power_point:"
|
||||
;;
|
||||
"Microsoft Remote Desktop")
|
||||
icon_result=":microsoft_remote_desktop:"
|
||||
;;
|
||||
"Microsoft Teams" | "Microsoft Teams (work or school)")
|
||||
icon_result=":microsoft_teams:"
|
||||
;;
|
||||
"Microsoft Word")
|
||||
icon_result=":microsoft_word:"
|
||||
;;
|
||||
"Mimestream")
|
||||
icon_result=":mimestream:"
|
||||
;;
|
||||
"Min")
|
||||
icon_result=":min_browser:"
|
||||
;;
|
||||
"Miro")
|
||||
icon_result=":miro:"
|
||||
;;
|
||||
"MongoDB Compass"*)
|
||||
icon_result=":mongodb:"
|
||||
;;
|
||||
"Moonlight")
|
||||
icon_result=":moonlight:"
|
||||
;;
|
||||
"mpv")
|
||||
icon_result=":mpv:"
|
||||
;;
|
||||
"Mullvad Browser")
|
||||
icon_result=":mullvad_browser:"
|
||||
;;
|
||||
"Music" | "音乐" | "Musique" | "ミュージック" | "Musik")
|
||||
icon_result=":music:"
|
||||
;;
|
||||
"Navicat Premium")
|
||||
icon_result=":navicat:"
|
||||
;;
|
||||
"Neovide" | "neovide")
|
||||
icon_result=":neovide:"
|
||||
;;
|
||||
"Neovim" | "neovim" | "nvim")
|
||||
icon_result=":neovim:"
|
||||
;;
|
||||
"网易云音乐" | "NetEaseMusic")
|
||||
icon_result=":netease_music:"
|
||||
;;
|
||||
"News")
|
||||
icon_result=":news:"
|
||||
;;
|
||||
"Nextcloud")
|
||||
icon_result=":nextcloud:"
|
||||
;;
|
||||
"Nicotine+")
|
||||
icon_result=":nicotine_plus:"
|
||||
;;
|
||||
"Nimble Commander" | "NimbleCommander-Unsigned")
|
||||
icon_result=":nimble_commander:"
|
||||
;;
|
||||
"Noodl" | "Noodl Editor")
|
||||
icon_result=":noodl:"
|
||||
;;
|
||||
"NordVPN")
|
||||
icon_result=":nord_vpn:"
|
||||
;;
|
||||
"Notability")
|
||||
icon_result=":notability:"
|
||||
;;
|
||||
"Notes" | "备忘录" | "メモ" | "Notizen")
|
||||
icon_result=":notes:"
|
||||
;;
|
||||
"Notion")
|
||||
icon_result=":notion:"
|
||||
;;
|
||||
"Notion Mail")
|
||||
icon_result=":notion_mail:"
|
||||
;;
|
||||
"Nova")
|
||||
icon_result=":nova:"
|
||||
;;
|
||||
"Numbers" | "Numbers 表格")
|
||||
icon_result=":numbers:"
|
||||
;;
|
||||
"Obsidian")
|
||||
icon_result=":obsidian:"
|
||||
;;
|
||||
"OBS")
|
||||
icon_result=":obsstudio:"
|
||||
;;
|
||||
"OmniFocus")
|
||||
icon_result=":omni_focus:"
|
||||
;;
|
||||
"1Password")
|
||||
icon_result=":one_password:"
|
||||
;;
|
||||
"Open Video Downloader")
|
||||
icon_result=":open_video_downloader:"
|
||||
;;
|
||||
"ChatGPT")
|
||||
icon_result=":openai:"
|
||||
;;
|
||||
"OpenAI Translator")
|
||||
icon_result=":openai_translator:"
|
||||
;;
|
||||
"OpenVPN Connect")
|
||||
icon_result=":openvpn_connect:"
|
||||
;;
|
||||
"Opera")
|
||||
icon_result=":opera:"
|
||||
;;
|
||||
"OrbStack")
|
||||
icon_result=":orbstack:"
|
||||
;;
|
||||
"OrcaSlicer")
|
||||
icon_result=":orcaslicer:"
|
||||
;;
|
||||
"Orion" | "Orion RC")
|
||||
icon_result=":orion:"
|
||||
;;
|
||||
"Overleaf" | "ShareLaTeX")
|
||||
icon_result=":overleaf:"
|
||||
;;
|
||||
"Pages" | "Pages 文稿")
|
||||
icon_result=":pages:"
|
||||
;;
|
||||
"Parallels Desktop")
|
||||
icon_result=":parallels:"
|
||||
;;
|
||||
"Parsec")
|
||||
icon_result=":parsec:"
|
||||
;;
|
||||
"Passepartout")
|
||||
icon_result=":passepartout:"
|
||||
;;
|
||||
"Passwords" | "Passwörter")
|
||||
icon_result=":passwords:"
|
||||
;;
|
||||
"PDF Expert")
|
||||
icon_result=":pdf_expert:"
|
||||
;;
|
||||
"Pearcleaner")
|
||||
icon_result=":pearcleaner:"
|
||||
;;
|
||||
"Perplexity" | "Perplexity AI")
|
||||
icon_result=":perplexity:"
|
||||
;;
|
||||
"Phoenix Slides")
|
||||
icon_result=":phoenix_slides:"
|
||||
;;
|
||||
"Photos" | "Fotos")
|
||||
icon_result=":photos:"
|
||||
;;
|
||||
"Adobe Photoshop"*)
|
||||
icon_result=":photoshop:"
|
||||
;;
|
||||
"PhpStorm")
|
||||
icon_result=":php_storm:"
|
||||
;;
|
||||
"Pi-hole Remote")
|
||||
icon_result=":pihole:"
|
||||
;;
|
||||
"Pine")
|
||||
icon_result=":pine:"
|
||||
;;
|
||||
"Plex")
|
||||
icon_result=":plex:"
|
||||
;;
|
||||
"Plexamp")
|
||||
icon_result=":plexamp:"
|
||||
;;
|
||||
"Podcasts" | "播客")
|
||||
icon_result=":podcasts:"
|
||||
;;
|
||||
"PomoDone App")
|
||||
icon_result=":pomodone:"
|
||||
;;
|
||||
"Postman")
|
||||
icon_result=":postman:"
|
||||
;;
|
||||
"Premiere" | "Adobe Premiere" | "Adobe Premiere Pro 2024")
|
||||
icon_result=":premiere:"
|
||||
;;
|
||||
"Preview" | "预览" | "Skim" | "zathura" | "Aperçu" | "プレビュー" | "Vorschau")
|
||||
icon_result=":preview:"
|
||||
;;
|
||||
"Proton Mail" | "Proton Mail Bridge")
|
||||
icon_result=":proton_mail:"
|
||||
;;
|
||||
"Proton VPN" | "ProtonVPN")
|
||||
icon_result=":proton_vpn:"
|
||||
;;
|
||||
"PrusaSlicer" | "SuperSlicer")
|
||||
icon_result=":prusaslicer:"
|
||||
;;
|
||||
"PyCharm")
|
||||
icon_result=":pycharm:"
|
||||
;;
|
||||
"qBittorrent")
|
||||
icon_result=":qbittorrent:"
|
||||
;;
|
||||
"QLMarkdown")
|
||||
icon_result=":qlmarkdown:"
|
||||
;;
|
||||
"QQ")
|
||||
icon_result=":qq:"
|
||||
;;
|
||||
"QQ音乐" | "QQMusic")
|
||||
icon_result=":qqmusic:"
|
||||
;;
|
||||
"Quantumult X")
|
||||
icon_result=":quantumult_x:"
|
||||
;;
|
||||
"Quip")
|
||||
icon_result=":quip:"
|
||||
;;
|
||||
"qutebrowser")
|
||||
icon_result=":qute_browser:"
|
||||
;;
|
||||
"Raindrop.io")
|
||||
icon_result=":raindrop_io:"
|
||||
;;
|
||||
"Raspberry Pi Imager" | "Raspberry Pi Connect")
|
||||
icon_result=":raspberry_pi:"
|
||||
;;
|
||||
"Raycast")
|
||||
icon_result=":raycast:"
|
||||
;;
|
||||
"Reeder")
|
||||
icon_result=":reeder5:"
|
||||
;;
|
||||
"rekordbox")
|
||||
icon_result=":rekordbox:"
|
||||
;;
|
||||
"Reminders" | "提醒事项" | "Rappels" | "リマインダー" | "Erinnerungen")
|
||||
icon_result=":reminders:"
|
||||
;;
|
||||
"Replit")
|
||||
icon_result=":replit:"
|
||||
;;
|
||||
"Repo Prompt")
|
||||
icon_result=":repo_prompt:"
|
||||
;;
|
||||
"Rider" | "JetBrains Rider")
|
||||
icon_result=":rider:"
|
||||
;;
|
||||
"Rio")
|
||||
icon_result=":rio:"
|
||||
;;
|
||||
"Royal TSX")
|
||||
icon_result=":royaltsx:"
|
||||
;;
|
||||
"RustDesk")
|
||||
icon_result=":rustdesk:"
|
||||
;;
|
||||
"Safari" | "Safari浏览器" | "Safari Technology Preview")
|
||||
icon_result=":safari:"
|
||||
;;
|
||||
"Scribus")
|
||||
icon_result=":scribus:"
|
||||
;;
|
||||
"Seafile")
|
||||
icon_result=":seafile:"
|
||||
;;
|
||||
"Sequel Ace")
|
||||
icon_result=":sequel_ace:"
|
||||
;;
|
||||
"Sequel Pro")
|
||||
icon_result=":sequel_pro:"
|
||||
;;
|
||||
"Session")
|
||||
icon_result=":session:"
|
||||
;;
|
||||
"Setapp")
|
||||
icon_result=":setapp:"
|
||||
;;
|
||||
"SF Symbols" | "SF Symbole" | "SF-Symbole")
|
||||
icon_result=":sf_symbols:"
|
||||
;;
|
||||
"Shortcuts")
|
||||
icon_result=":shortcuts:"
|
||||
;;
|
||||
"Signal")
|
||||
icon_result=":signal:"
|
||||
;;
|
||||
"sioyek")
|
||||
icon_result=":sioyek:"
|
||||
;;
|
||||
"Sketch")
|
||||
icon_result=":sketch:"
|
||||
;;
|
||||
"Skype")
|
||||
icon_result=":skype:"
|
||||
;;
|
||||
"Slack")
|
||||
icon_result=":slack:"
|
||||
;;
|
||||
"Spark Desktop")
|
||||
icon_result=":spark:"
|
||||
;;
|
||||
"Spotify")
|
||||
icon_result=":spotify:"
|
||||
;;
|
||||
"Spotlight")
|
||||
icon_result=":spotlight:"
|
||||
;;
|
||||
"Steam" | "Steam Helper")
|
||||
icon_result=":steam:"
|
||||
;;
|
||||
"Studio 3T")
|
||||
icon_result=":studio_3t:"
|
||||
;;
|
||||
"Sublime Text")
|
||||
icon_result=":sublime_text:"
|
||||
;;
|
||||
"Summoners War")
|
||||
icon_result=":summoners_war:"
|
||||
;;
|
||||
"superProductivity")
|
||||
icon_result=":superproductivity:"
|
||||
;;
|
||||
"Surfshark")
|
||||
icon_result=":surfshark:"
|
||||
;;
|
||||
"T3 Chat")
|
||||
icon_result=":t3chat:"
|
||||
;;
|
||||
"Tabby")
|
||||
icon_result=":tabby:"
|
||||
;;
|
||||
"TablePlus")
|
||||
icon_result=":tableplus:"
|
||||
;;
|
||||
"Tana")
|
||||
icon_result=":tana:"
|
||||
;;
|
||||
"TeamSpeak 3")
|
||||
icon_result=":team_speak:"
|
||||
;;
|
||||
"Telegram")
|
||||
icon_result=":telegram:"
|
||||
;;
|
||||
"Terminal" | "终端" | "ターミナル")
|
||||
icon_result=":terminal:"
|
||||
;;
|
||||
"Termius")
|
||||
icon_result=":termius:"
|
||||
;;
|
||||
"Typora")
|
||||
icon_result=":text:"
|
||||
;;
|
||||
"TextEdit")
|
||||
icon_result=":textedit:"
|
||||
;;
|
||||
"Microsoft To Do" | "Things")
|
||||
icon_result=":things:"
|
||||
;;
|
||||
"Thunderbird" | "Thunderbird Daily")
|
||||
icon_result=":thunderbird:"
|
||||
;;
|
||||
"TickTick")
|
||||
icon_result=":tick_tick:"
|
||||
;;
|
||||
"TIDAL")
|
||||
icon_result=":tidal:"
|
||||
;;
|
||||
"Tiny RDM")
|
||||
icon_result=":tinyrdm:"
|
||||
;;
|
||||
"Todoist")
|
||||
icon_result=":todoist:"
|
||||
;;
|
||||
"Toggl Track")
|
||||
icon_result=":toggl_track:"
|
||||
;;
|
||||
"Tor Browser")
|
||||
icon_result=":tor_browser:"
|
||||
;;
|
||||
"Tower")
|
||||
icon_result=":tower:"
|
||||
;;
|
||||
"TradingView")
|
||||
icon_result=":trading_view:"
|
||||
;;
|
||||
"Transmit")
|
||||
icon_result=":transmit:"
|
||||
;;
|
||||
"Trello")
|
||||
icon_result=":trello:"
|
||||
;;
|
||||
"Tweetbot" | "Twitter")
|
||||
icon_result=":twitter:"
|
||||
;;
|
||||
"UTM")
|
||||
icon_result=":utm:"
|
||||
;;
|
||||
"VeraCrypt")
|
||||
icon_result=":veracrypt:"
|
||||
;;
|
||||
"MacVim" | "Vim" | "VimR")
|
||||
icon_result=":vim:"
|
||||
;;
|
||||
"Vivaldi")
|
||||
icon_result=":vivaldi:"
|
||||
;;
|
||||
"VLC")
|
||||
icon_result=":vlc:"
|
||||
;;
|
||||
"VMware Fusion")
|
||||
icon_result=":vmware_fusion:"
|
||||
;;
|
||||
"Vorta")
|
||||
icon_result=":vorta:"
|
||||
;;
|
||||
"VSCodium")
|
||||
icon_result=":vscodium:"
|
||||
;;
|
||||
"Warp")
|
||||
icon_result=":warp:"
|
||||
;;
|
||||
"Weather" | "Wetter")
|
||||
icon_result=":weather:"
|
||||
;;
|
||||
"WebStorm")
|
||||
icon_result=":web_storm:"
|
||||
;;
|
||||
"Webull Desktop")
|
||||
icon_result=":webull:"
|
||||
;;
|
||||
"微信" | "WeChat")
|
||||
icon_result=":wechat:"
|
||||
;;
|
||||
"企业微信" | "WeCom")
|
||||
icon_result=":wecom:"
|
||||
;;
|
||||
"WezTerm" | "wezterm-gui")
|
||||
icon_result=":wezterm:"
|
||||
;;
|
||||
"WhatsApp" | "WhatsApp")
|
||||
icon_result=":whats_app:"
|
||||
;;
|
||||
"Windows App")
|
||||
icon_result=":windows_app:"
|
||||
;;
|
||||
"WireGuard")
|
||||
icon_result=":wireguard:"
|
||||
;;
|
||||
"Xcode")
|
||||
icon_result=":xcode:"
|
||||
;;
|
||||
"Yandex Browser" | "Yandex Browser" | "Yandex")
|
||||
icon_result=":yandex_bower:"
|
||||
;;
|
||||
"Yandex Music")
|
||||
icon_result=":yandex_music:"
|
||||
;;
|
||||
"Yazi" | "yazi")
|
||||
icon_result=":yazi:"
|
||||
;;
|
||||
"YouTube")
|
||||
icon_result=":youtube:"
|
||||
;;
|
||||
"YouTube Music")
|
||||
icon_result=":youtube_music:"
|
||||
;;
|
||||
"Yuque" | "语雀")
|
||||
icon_result=":yuque:"
|
||||
;;
|
||||
"Zed")
|
||||
icon_result=":zed:"
|
||||
;;
|
||||
"Zen" | "Zen Browser")
|
||||
icon_result=":zen_browser:"
|
||||
;;
|
||||
"Zeplin")
|
||||
icon_result=":zeplin:"
|
||||
;;
|
||||
"zoom.us")
|
||||
icon_result=":zoom:"
|
||||
;;
|
||||
"Zotero")
|
||||
icon_result=":zotero:"
|
||||
;;
|
||||
"Zulip")
|
||||
icon_result=":zulip:"
|
||||
;;
|
||||
*)
|
||||
icon_result=":default:"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
### END-OF-ICON-MAP
|
||||
50
.config/sketchybar/helpers/icons.sh
Executable file
50
.config/sketchybar/helpers/icons.sh
Executable file
|
|
@ -0,0 +1,50 @@
|
|||
#!/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=
|
||||
|
||||
# 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=
|
||||
|
||||
# Battery Icons
|
||||
BATTERY_100=
|
||||
BATTERY_75=
|
||||
BATTERY_50=
|
||||
BATTERY_25=
|
||||
BATTERY_0=
|
||||
BATTERY_CHARGING=
|
||||
|
||||
# Volume Icons
|
||||
VOLUME_100=
|
||||
VOLUME_66=
|
||||
VOLUME_33=
|
||||
VOLUME_10=
|
||||
VOLUME_0=
|
||||
|
||||
# WiFi Icons
|
||||
WIFI=
|
||||
WIFI_OFF=
|
||||
BIN
.config/sketchybar/helpers/sketchybar-app-font.eot
Normal file
BIN
.config/sketchybar/helpers/sketchybar-app-font.eot
Normal file
Binary file not shown.
547
.config/sketchybar/helpers/sketchybar-app-font.json
Normal file
547
.config/sketchybar/helpers/sketchybar-app-font.json
Normal file
File diff suppressed because one or more lines are too long
1134
.config/sketchybar/helpers/sketchybar-app-font.svg
Normal file
1134
.config/sketchybar/helpers/sketchybar-app-font.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 1.2 MiB |
257
.config/sketchybar/helpers/sketchybar-app-font.symbol.svg
Normal file
257
.config/sketchybar/helpers/sketchybar-app-font.symbol.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 517 KiB |
BIN
.config/sketchybar/helpers/sketchybar-app-font.ttf
Normal file
BIN
.config/sketchybar/helpers/sketchybar-app-font.ttf
Normal file
Binary file not shown.
BIN
.config/sketchybar/helpers/sketchybar-app-font.woff
Normal file
BIN
.config/sketchybar/helpers/sketchybar-app-font.woff
Normal file
Binary file not shown.
BIN
.config/sketchybar/helpers/sketchybar-app-font.woff2
Normal file
BIN
.config/sketchybar/helpers/sketchybar-app-font.woff2
Normal file
Binary file not shown.
50
.config/sketchybar/icons.sh
Executable file
50
.config/sketchybar/icons.sh
Executable file
|
|
@ -0,0 +1,50 @@
|
|||
#!/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=
|
||||
|
||||
# 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=
|
||||
|
||||
# Battery Icons
|
||||
BATTERY_100=
|
||||
BATTERY_75=
|
||||
BATTERY_50=
|
||||
BATTERY_25=
|
||||
BATTERY_0=
|
||||
BATTERY_CHARGING=
|
||||
|
||||
# Volume Icons
|
||||
VOLUME_100=
|
||||
VOLUME_66=
|
||||
VOLUME_33=
|
||||
VOLUME_10=
|
||||
VOLUME_0=
|
||||
|
||||
# WiFi Icons
|
||||
WIFI=
|
||||
WIFI_OFF=
|
||||
107
.config/sketchybar/items/aerospace.sh
Executable file
107
.config/sketchybar/items/aerospace.sh
Executable file
|
|
@ -0,0 +1,107 @@
|
|||
#!/bin/bash
|
||||
|
||||
CONFIG_DIR="${CONFIG_DIR:-$HOME/.config/sketchybar}"
|
||||
source "$CONFIG_DIR/colors.sh"
|
||||
|
||||
# ─── Fast path: workspace switch (color-only update) ─────────────────────────
|
||||
# When called from exec-on-workspace-change, FOCUSED_WORKSPACE and
|
||||
# PREV_WORKSPACE are passed as env vars. We can swap highlight colors
|
||||
# with ZERO aerospace CLI calls — just one sketchybar call (~10ms).
|
||||
if [ -n "$FOCUSED_WORKSPACE" ] && [ -n "$PREV_WORKSPACE" ] \
|
||||
&& [ "$FOCUSED_WORKSPACE" != "$PREV_WORKSPACE" ]; then
|
||||
sketchybar --animate sin 8 \
|
||||
--set aerospace.workspace.$PREV_WORKSPACE \
|
||||
background.color=$BACKGROUND_2 \
|
||||
icon.color=$WHITE \
|
||||
label.color=$WHITE \
|
||||
--set aerospace.workspace.$FOCUSED_WORKSPACE \
|
||||
background.color=$GREEN \
|
||||
icon.color=$BLACK \
|
||||
label.color=$BLACK
|
||||
fi
|
||||
|
||||
# ─── Full path: initial load / icon refresh ──────────────────────────────────
|
||||
# Only source the 986-line icon map when we actually need it.
|
||||
source "$CONFIG_DIR/helpers/icon_map.sh"
|
||||
|
||||
# Use env var if available, otherwise query (1 call)
|
||||
CURRENT_WORKSPACE="${FOCUSED_WORKSPACE:-$(aerospace list-workspaces --focused 2>/dev/null)}" || exit
|
||||
[ -z "$CURRENT_WORKSPACE" ] && exit
|
||||
|
||||
# ONE aerospace call gets every window across all workspaces
|
||||
ALL_WINDOWS=$(aerospace list-windows --all --format '%{workspace}|%{app-name}' 2>/dev/null)
|
||||
|
||||
# Parse into per-workspace app lists — pure bash, no subprocesses
|
||||
# (bash 3.2 compatible: no associative arrays)
|
||||
WS_1_APPS="" WS_2_APPS="" WS_3_APPS="" WS_4_APPS="" WS_5_APPS=""
|
||||
WS_6_APPS="" WS_7_APPS="" WS_8_APPS="" WS_9_APPS=""
|
||||
WS_1_ACT=0 WS_2_ACT=0 WS_3_ACT=0 WS_4_ACT=0 WS_5_ACT=0
|
||||
WS_6_ACT=0 WS_7_ACT=0 WS_8_ACT=0 WS_9_ACT=0
|
||||
|
||||
while IFS='|' read -r ws app; do
|
||||
[ -z "$ws" ] && continue
|
||||
case "$ws" in
|
||||
1) WS_1_ACT=1; WS_1_APPS="${WS_1_APPS:+${WS_1_APPS}|}$app" ;;
|
||||
2) WS_2_ACT=1; WS_2_APPS="${WS_2_APPS:+${WS_2_APPS}|}$app" ;;
|
||||
3) WS_3_ACT=1; WS_3_APPS="${WS_3_APPS:+${WS_3_APPS}|}$app" ;;
|
||||
4) WS_4_ACT=1; WS_4_APPS="${WS_4_APPS:+${WS_4_APPS}|}$app" ;;
|
||||
5) WS_5_ACT=1; WS_5_APPS="${WS_5_APPS:+${WS_5_APPS}|}$app" ;;
|
||||
6) WS_6_ACT=1; WS_6_APPS="${WS_6_APPS:+${WS_6_APPS}|}$app" ;;
|
||||
7) WS_7_ACT=1; WS_7_APPS="${WS_7_APPS:+${WS_7_APPS}|}$app" ;;
|
||||
8) WS_8_ACT=1; WS_8_APPS="${WS_8_APPS:+${WS_8_APPS}|}$app" ;;
|
||||
9) WS_9_ACT=1; WS_9_APPS="${WS_9_APPS:+${WS_9_APPS}|}$app" ;;
|
||||
esac
|
||||
done <<< "$ALL_WINDOWS"
|
||||
|
||||
# Always show the focused workspace even if empty
|
||||
case "$CURRENT_WORKSPACE" in
|
||||
[1-9]) eval "WS_${CURRENT_WORKSPACE}_ACT=1" ;;
|
||||
esac
|
||||
|
||||
# Build ONE sketchybar call for all 9 workspaces
|
||||
args=(--animate sin 8)
|
||||
|
||||
for i in {1..9}; do
|
||||
eval "IS_ACTIVE=\$WS_${i}_ACT"
|
||||
|
||||
if [ "$IS_ACTIVE" = "1" ]; then
|
||||
eval "APPS_STR=\$WS_${i}_APPS"
|
||||
|
||||
# Build icon strip (up to 3 app icons)
|
||||
ICON_STRIP=""
|
||||
APP_COUNT=0
|
||||
OLD_IFS="$IFS"; IFS='|'
|
||||
for APP in $APPS_STR; do
|
||||
[ -z "$APP" ] && continue
|
||||
APP_COUNT=$((APP_COUNT + 1))
|
||||
[ $APP_COUNT -gt 3 ] && break
|
||||
__icon_map "$APP"
|
||||
if [ -n "$icon_result" ] && [ "$icon_result" != ":default:" ]; then
|
||||
ICON_STRIP="${ICON_STRIP}${icon_result} "
|
||||
fi
|
||||
done
|
||||
IFS="$OLD_IFS"
|
||||
|
||||
ICON_STRIP="${ICON_STRIP% }"
|
||||
[ -z "$ICON_STRIP" ] && ICON_STRIP="$i"
|
||||
|
||||
if [ "$i" = "$CURRENT_WORKSPACE" ]; then
|
||||
BG_COLOR=$GREEN; ICON_COLOR=$BLACK; TEXT_COLOR=$BLACK
|
||||
else
|
||||
BG_COLOR=$BACKGROUND_2; ICON_COLOR=$WHITE; TEXT_COLOR=$WHITE
|
||||
fi
|
||||
|
||||
args+=(
|
||||
--set aerospace.workspace.$i drawing=on
|
||||
--set aerospace.workspace.$i icon="$ICON_STRIP"
|
||||
--set aerospace.workspace.$i icon.color="$ICON_COLOR"
|
||||
--set aerospace.workspace.$i label="$i"
|
||||
--set aerospace.workspace.$i label.color="$TEXT_COLOR"
|
||||
--set aerospace.workspace.$i background.color="$BG_COLOR"
|
||||
)
|
||||
else
|
||||
args+=(--set aerospace.workspace.$i drawing=off)
|
||||
fi
|
||||
done
|
||||
|
||||
sketchybar "${args[@]}" 2>/dev/null
|
||||
62
.config/sketchybar/items/apple.sh
Executable file
62
.config/sketchybar/items/apple.sh
Executable file
|
|
@ -0,0 +1,62 @@
|
|||
#!/bin/bash
|
||||
|
||||
source "$CONFIG_DIR/colors.sh"
|
||||
source "$CONFIG_DIR/icons.sh"
|
||||
|
||||
POPUP_OFF="sketchybar --set apple.icon popup.drawing=off"
|
||||
POPUP_CLICK_SCRIPT="sketchybar --set \$NAME popup.drawing=toggle"
|
||||
|
||||
# Apple icon (far left) - opens popup menu on click
|
||||
apple_icon=(
|
||||
icon=""
|
||||
icon.drawing=on
|
||||
icon.font="SF Pro:Black:28.0"
|
||||
icon.color=$GREEN
|
||||
label.drawing=off
|
||||
background.drawing=off
|
||||
padding_right=4
|
||||
padding_left=10
|
||||
click_script="$POPUP_CLICK_SCRIPT"
|
||||
)
|
||||
|
||||
apple_logo=(
|
||||
icon.drawing=off
|
||||
label.drawing=off
|
||||
padding_right=0
|
||||
padding_left=0
|
||||
width=0
|
||||
)
|
||||
|
||||
apple_prefs=(
|
||||
icon="⚙️"
|
||||
label="System Preferences"
|
||||
click_script="open 'x-apple.systempreferences:'; $POPUP_OFF"
|
||||
)
|
||||
|
||||
apple_activity=(
|
||||
icon="📊"
|
||||
label="Activity Monitor"
|
||||
click_script="open -a 'Activity Monitor'; $POPUP_OFF"
|
||||
)
|
||||
|
||||
apple_lock=(
|
||||
icon="🔒"
|
||||
label="Lock Screen"
|
||||
click_script="open -a ScreenSaverEngine; $POPUP_OFF"
|
||||
)
|
||||
|
||||
# Add apple icon first (far left)
|
||||
sketchybar --add item apple.icon left \
|
||||
--set apple.icon "${apple_icon[@]}"
|
||||
|
||||
sketchybar --add item apple.logo left \
|
||||
--set apple.logo "${apple_logo[@]}" \
|
||||
\
|
||||
--add item apple.prefs popup.apple.icon \
|
||||
--set apple.prefs "${apple_prefs[@]}" \
|
||||
\
|
||||
--add item apple.activity popup.apple.icon \
|
||||
--set apple.activity "${apple_activity[@]}" \
|
||||
\
|
||||
--add item apple.lock popup.apple.icon \
|
||||
--set apple.lock "${apple_lock[@]}"
|
||||
28
.config/sketchybar/items/battery.sh
Executable file
28
.config/sketchybar/items/battery.sh
Executable file
|
|
@ -0,0 +1,28 @@
|
|||
#!/bin/bash
|
||||
|
||||
source "$CONFIG_DIR/colors.sh"
|
||||
source "$CONFIG_DIR/icons.sh"
|
||||
|
||||
battery=(
|
||||
script="$PLUGIN_DIR/battery.sh"
|
||||
#icon.font="SF Pro:Bold:20.0"
|
||||
icon.font="0xProto Nerd Font Mono:Bold:20.0"
|
||||
icon.color=$GREEN
|
||||
icon.padding_left=4
|
||||
icon.padding_right=4
|
||||
label.font="0xProto Nerd Font Mono:Bold:15.0"
|
||||
label.color=$WHITE
|
||||
label.padding_left=4
|
||||
label.padding_right=8
|
||||
background.color=$BACKGROUND_2
|
||||
background.corner_radius=8
|
||||
background.height=28
|
||||
background.drawing=on
|
||||
padding_left=4
|
||||
padding_right=4
|
||||
update_freq=120
|
||||
)
|
||||
|
||||
sketchybar --add item battery right \
|
||||
--set battery "${battery[@]}" \
|
||||
--subscribe battery system_woke power_source_change
|
||||
11
.config/sketchybar/items/clock.sh
Executable file
11
.config/sketchybar/items/clock.sh
Executable file
|
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
|
||||
source "$CONFIG_DIR/colors.sh"
|
||||
|
||||
sketchybar --add item clock right \
|
||||
--set clock update_freq=10 \
|
||||
--set clock icon= \
|
||||
--set clock icon.color=$ICON_COLOR \
|
||||
--set clock label.color=$LABEL_COLOR \
|
||||
--set clock script="$PLUGIN_DIR/clock.sh" \
|
||||
--set clock click_script="$PLUGIN_DIR/zen.sh"
|
||||
46
.config/sketchybar/items/menu_items.sh
Executable file
46
.config/sketchybar/items/menu_items.sh
Executable file
|
|
@ -0,0 +1,46 @@
|
|||
#!/bin/bash
|
||||
|
||||
source "$CONFIG_DIR/colors.sh"
|
||||
|
||||
# Control Center style menu items
|
||||
# These will be positioned to the right of the workspaces
|
||||
|
||||
# Bluetooth
|
||||
bluetooth=(
|
||||
script="$PLUGIN_DIR/bluetooth.sh"
|
||||
icon=""
|
||||
icon.font="0xProto Nerd Font Mono:Bold:18.0"
|
||||
icon.color=0xffffffff
|
||||
label.drawing=off
|
||||
update_freq=10
|
||||
click_script="open 'x-apple.systempreferences:com.apple.BluetoothSettings'"
|
||||
)
|
||||
|
||||
# AirDrop
|
||||
airdrop=(
|
||||
icon=""
|
||||
icon.font="0xProto Nerd Font Mono:Bold:18.0"
|
||||
icon.color=0xffffffff
|
||||
label.drawing=off
|
||||
click_script="open 'x-apple.systempreferences:com.apple.AirDrop-Handoff-Settings'"
|
||||
)
|
||||
|
||||
# Focus/Do Not Disturb
|
||||
focus=(
|
||||
script="$PLUGIN_DIR/focus.sh"
|
||||
icon=""
|
||||
icon.font="0xProto Nerd Font Mono:Bold:18.0"
|
||||
icon.color=0xffffffff
|
||||
label.drawing=off
|
||||
update_freq=30
|
||||
click_script="shortcuts run 'Toggle Focus'"
|
||||
)
|
||||
|
||||
sketchybar --add item bluetooth right \
|
||||
--set bluetooth "${bluetooth[@]}" \
|
||||
\
|
||||
--add item airdrop right \
|
||||
--set airdrop "${airdrop[@]}" \
|
||||
\
|
||||
--add item focus right \
|
||||
--set focus "${focus[@]}"
|
||||
24
.config/sketchybar/items/mic.old
Executable file
24
.config/sketchybar/items/mic.old
Executable file
|
|
@ -0,0 +1,24 @@
|
|||
#!/bin/bash
|
||||
|
||||
source "$CONFIG_DIR/colors.sh"
|
||||
|
||||
mic=(
|
||||
script="$PLUGIN_DIR/mic/mic.sh"
|
||||
click_script="$PLUGIN_DIR/mic/mic_click.sh"
|
||||
icon.color=0xffffffff
|
||||
icon.padding_right=4
|
||||
icon.padding_left=4
|
||||
label.padding_right=4
|
||||
label.padding_left=4
|
||||
background.color=$BACKGROUND_2
|
||||
background.corner_radius=8
|
||||
background.height=28
|
||||
background.drawing=on
|
||||
icon.font="0xProto Nerd Font Mono:Bold:30.0"
|
||||
label.color=0xffffffff
|
||||
label.font="0xProto Nerd Font Mono:Bold:15.0"
|
||||
)
|
||||
|
||||
sketchybar --add item mic right \
|
||||
--set mic "${mic[@]}" \
|
||||
--subscribe mic volume_change
|
||||
219
.config/sketchybar/items/mic.sh
Executable file
219
.config/sketchybar/items/mic.sh
Executable file
|
|
@ -0,0 +1,219 @@
|
|||
#!/bin/bash
|
||||
|
||||
source "$CONFIG_DIR/colors.sh"
|
||||
source "$CONFIG_DIR/icons.sh"
|
||||
|
||||
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=right
|
||||
popup.height=150
|
||||
icon=""
|
||||
icon.font="0xProto Nerd Font Mono:Bold:20.0"
|
||||
icon.color=$GREEN
|
||||
icon.padding_left=8
|
||||
icon.padding_right=8
|
||||
label.drawing=off
|
||||
drawing=on
|
||||
background.color=$BACKGROUND_2
|
||||
background.corner_radius=8
|
||||
background.height=28
|
||||
background.drawing=on
|
||||
padding_left=4
|
||||
padding_right=4
|
||||
)
|
||||
|
||||
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
|
||||
)
|
||||
|
||||
spotify_title=(
|
||||
icon.drawing=off
|
||||
padding_left=0
|
||||
padding_right=0
|
||||
width=0
|
||||
label.font="SF Pro:Heavy:15.0"
|
||||
label.color=$WHITE
|
||||
y_offset=55
|
||||
)
|
||||
|
||||
spotify_artist=(
|
||||
icon.drawing=off
|
||||
y_offset=30
|
||||
padding_left=0
|
||||
padding_right=0
|
||||
width=0
|
||||
label.color=$GREY
|
||||
)
|
||||
|
||||
spotify_album=(
|
||||
icon.drawing=off
|
||||
padding_left=0
|
||||
padding_right=0
|
||||
y_offset=15
|
||||
width=0
|
||||
label.color=$GREY
|
||||
)
|
||||
|
||||
spotify_state=(
|
||||
icon.drawing=on
|
||||
icon.font="SF Pro:Light Italic:10.0"
|
||||
icon.width=45
|
||||
icon="00:00"
|
||||
icon.color=$GREY
|
||||
label.drawing=on
|
||||
label.font="SF Pro:Light Italic:10.0"
|
||||
label.width=45
|
||||
label="00:00"
|
||||
label.color=$GREY
|
||||
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=$SPOTIFY_SHUFFLE
|
||||
icon.font="SF Pro:Regular:14.0"
|
||||
icon.padding_left=5
|
||||
icon.padding_right=5
|
||||
icon.color=0xff000000
|
||||
icon.highlight_color=$GREY
|
||||
label.drawing=off
|
||||
script="$PLUGIN_DIR/spotify.sh"
|
||||
y_offset=-45
|
||||
)
|
||||
|
||||
spotify_back=(
|
||||
icon=$SPOTIFY_BACK
|
||||
icon.font="SF Pro:Regular:14.0"
|
||||
icon.padding_left=5
|
||||
icon.padding_right=5
|
||||
icon.color=0xff000000
|
||||
script="$PLUGIN_DIR/spotify.sh"
|
||||
label.drawing=off
|
||||
y_offset=-45
|
||||
)
|
||||
|
||||
spotify_play=(
|
||||
icon=
|
||||
icon.font="SF Pro:Regular:14.0"
|
||||
background.height=40
|
||||
background.corner_radius=20
|
||||
width=40
|
||||
align=center
|
||||
background.color=$BACKGROUND_1
|
||||
background.border_color=0xffffffff
|
||||
background.border_width=0
|
||||
background.drawing=on
|
||||
icon.padding_left=4
|
||||
icon.padding_right=5
|
||||
icon.color=0xff000000
|
||||
updates=on
|
||||
label.drawing=off
|
||||
script="$PLUGIN_DIR/spotify.sh"
|
||||
y_offset=-45
|
||||
)
|
||||
|
||||
spotify_next=(
|
||||
icon=$SPOTIFY_NEXT
|
||||
icon.font="SF Pro:Regular:14.0"
|
||||
icon.padding_left=5
|
||||
icon.padding_right=5
|
||||
icon.color=0xff000000
|
||||
label.drawing=off
|
||||
script="$PLUGIN_DIR/spotify.sh"
|
||||
y_offset=-45
|
||||
)
|
||||
|
||||
spotify_repeat=(
|
||||
icon=$SPOTIFY_REPEAT
|
||||
icon.font="SF Pro:Regular:14.0"
|
||||
icon.highlight_color=$GREY
|
||||
icon.padding_left=5
|
||||
icon.padding_right=10
|
||||
icon.color=0xff000000
|
||||
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 right \
|
||||
--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[@]}"
|
||||
25
.config/sketchybar/items/recording.sh
Executable file
25
.config/sketchybar/items/recording.sh
Executable file
|
|
@ -0,0 +1,25 @@
|
|||
#!/bin/bash
|
||||
|
||||
source "$CONFIG_DIR/colors.sh"
|
||||
|
||||
recording=(
|
||||
script="$PLUGIN_DIR/recording.sh"
|
||||
icon=""
|
||||
icon.font="0xProto Nerd Font Mono:Bold:14.0"
|
||||
icon.color=$RED
|
||||
icon.padding_left=8
|
||||
icon.padding_right=8
|
||||
label.drawing=off
|
||||
drawing=off
|
||||
background.color=$BACKGROUND_2
|
||||
background.corner_radius=8
|
||||
background.height=28
|
||||
background.drawing=off
|
||||
padding_left=4
|
||||
padding_right=4
|
||||
update_freq=2
|
||||
click_script="$PLUGIN_DIR/recording_click.sh"
|
||||
)
|
||||
|
||||
sketchybar --add item recording right \
|
||||
--set recording "${recording[@]}"
|
||||
15
.config/sketchybar/items/simple_calendar.sh
Executable file
15
.config/sketchybar/items/simple_calendar.sh
Executable file
|
|
@ -0,0 +1,15 @@
|
|||
#!/bin/bash
|
||||
|
||||
source "$CONFIG_DIR/colors.sh"
|
||||
|
||||
# Simple calendar item for far right
|
||||
simple_calendar=(
|
||||
icon="📅"
|
||||
icon.font="0xProto Nerd Font Mono:Bold:14.0"
|
||||
icon.color=0xffffffff
|
||||
label.drawing=off
|
||||
click_script="open -a Calendar"
|
||||
)
|
||||
|
||||
sketchybar --add item simple_calendar right \
|
||||
--set simple_calendar "${simple_calendar[@]}"
|
||||
219
.config/sketchybar/items/spotify.sh
Executable file
219
.config/sketchybar/items/spotify.sh
Executable file
|
|
@ -0,0 +1,219 @@
|
|||
#!/bin/bash
|
||||
|
||||
source "$CONFIG_DIR/colors.sh"
|
||||
source "$CONFIG_DIR/icons.sh"
|
||||
|
||||
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=right
|
||||
popup.height=150
|
||||
icon=""
|
||||
icon.font="0xProto Nerd Font Mono:Bold:20.0"
|
||||
icon.color=$GREEN
|
||||
icon.padding_left=8
|
||||
icon.padding_right=8
|
||||
label.drawing=off
|
||||
drawing=on
|
||||
background.color=$BACKGROUND_2
|
||||
background.corner_radius=8
|
||||
background.height=28
|
||||
background.drawing=on
|
||||
padding_left=4
|
||||
padding_right=4
|
||||
)
|
||||
|
||||
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
|
||||
)
|
||||
|
||||
spotify_title=(
|
||||
icon.drawing=off
|
||||
padding_left=0
|
||||
padding_right=0
|
||||
width=0
|
||||
label.font="SF Pro:Heavy:15.0"
|
||||
label.color=$WHITE
|
||||
y_offset=55
|
||||
)
|
||||
|
||||
spotify_artist=(
|
||||
icon.drawing=off
|
||||
y_offset=30
|
||||
padding_left=0
|
||||
padding_right=0
|
||||
width=0
|
||||
label.color=$GREY
|
||||
)
|
||||
|
||||
spotify_album=(
|
||||
icon.drawing=off
|
||||
padding_left=0
|
||||
padding_right=0
|
||||
y_offset=15
|
||||
width=0
|
||||
label.color=$GREY
|
||||
)
|
||||
|
||||
spotify_state=(
|
||||
icon.drawing=on
|
||||
icon.font="SF Pro:Light Italic:10.0"
|
||||
icon.width=45
|
||||
icon="00:00"
|
||||
icon.color=$GREY
|
||||
label.drawing=on
|
||||
label.font="SF Pro:Light Italic:10.0"
|
||||
label.width=45
|
||||
label="00:00"
|
||||
label.color=$GREY
|
||||
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=$SPOTIFY_SHUFFLE
|
||||
icon.font="SF Pro:Regular:14.0"
|
||||
icon.padding_left=5
|
||||
icon.padding_right=5
|
||||
icon.color=0xff000000
|
||||
icon.highlight_color=$GREY
|
||||
label.drawing=off
|
||||
script="$PLUGIN_DIR/spotify.sh"
|
||||
y_offset=-45
|
||||
)
|
||||
|
||||
spotify_back=(
|
||||
icon=$SPOTIFY_BACK
|
||||
icon.font="SF Pro:Regular:14.0"
|
||||
icon.padding_left=5
|
||||
icon.padding_right=5
|
||||
icon.color=0xff000000
|
||||
script="$PLUGIN_DIR/spotify.sh"
|
||||
label.drawing=off
|
||||
y_offset=-45
|
||||
)
|
||||
|
||||
spotify_play=(
|
||||
icon=
|
||||
icon.font="SF Pro:Regular:14.0"
|
||||
background.height=40
|
||||
background.corner_radius=20
|
||||
width=40
|
||||
align=center
|
||||
background.color=$BACKGROUND_1
|
||||
background.border_color=0xffffffff
|
||||
background.border_width=0
|
||||
background.drawing=on
|
||||
icon.padding_left=4
|
||||
icon.padding_right=5
|
||||
icon.color=0xff000000
|
||||
updates=on
|
||||
label.drawing=off
|
||||
script="$PLUGIN_DIR/spotify.sh"
|
||||
y_offset=-45
|
||||
)
|
||||
|
||||
spotify_next=(
|
||||
icon=$SPOTIFY_NEXT
|
||||
icon.font="SF Pro:Regular:14.0"
|
||||
icon.padding_left=5
|
||||
icon.padding_right=5
|
||||
icon.color=0xff000000
|
||||
label.drawing=off
|
||||
script="$PLUGIN_DIR/spotify.sh"
|
||||
y_offset=-45
|
||||
)
|
||||
|
||||
spotify_repeat=(
|
||||
icon=$SPOTIFY_REPEAT
|
||||
icon.font="SF Pro:Regular:14.0"
|
||||
icon.highlight_color=$GREY
|
||||
icon.padding_left=5
|
||||
icon.padding_right=10
|
||||
icon.color=0xff000000
|
||||
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 right \
|
||||
--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[@]}"
|
||||
18
.config/sketchybar/items/volume.sh.old
Executable file
18
.config/sketchybar/items/volume.sh.old
Executable file
|
|
@ -0,0 +1,18 @@
|
|||
#!/bin/bash
|
||||
|
||||
source "$CONFIG_DIR/colors.sh"
|
||||
source "$CONFIG_DIR/icons.sh"
|
||||
|
||||
volume=(
|
||||
script="$PLUGIN_DIR/volume.sh"
|
||||
icon.color=0xffffffff
|
||||
icon.font="0xProto Nerd Font Mono:Bold:18.0"
|
||||
label.color=0xffffffff
|
||||
label.font="0xProto Nerd Font Mono:Bold:15.0"
|
||||
click_script="open -a 'Audio MIDI Setup'"
|
||||
scroll_script="$PLUGIN_DIR/volume_scroll.sh"
|
||||
)
|
||||
|
||||
sketchybar --add item volume right \
|
||||
--set volume "${volume[@]}" \
|
||||
--subscribe volume volume_change mouse.scrolled
|
||||
17
.config/sketchybar/items/wifi.sh
Executable file
17
.config/sketchybar/items/wifi.sh
Executable file
|
|
@ -0,0 +1,17 @@
|
|||
#!/bin/bash
|
||||
|
||||
source "$CONFIG_DIR/colors.sh"
|
||||
source "$CONFIG_DIR/icons.sh"
|
||||
|
||||
wifi=(
|
||||
script="$PLUGIN_DIR/wifi.sh"
|
||||
icon.color=0xffffffff
|
||||
icon.font="0xProto Nerd Font Mono:Bold:18.0"
|
||||
label.color=0xffffffff
|
||||
label.font="0xProto Nerd Font Mono:Bold:15.0"
|
||||
click_script="open 'x-apple.systempreferences:com.apple.Network-Settings.extension'"
|
||||
update_freq=10
|
||||
)
|
||||
|
||||
sketchybar --add item wifi right \
|
||||
--set wifi "${wifi[@]}"
|
||||
23
.config/sketchybar/plugins/aerospace_space_click.sh
Executable file
23
.config/sketchybar/plugins/aerospace_space_click.sh
Executable file
|
|
@ -0,0 +1,23 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Handle left/right click on aerospace spaces
|
||||
# Left click: focus workspace
|
||||
# Right click: destroy workspace (if using yabai with SIP disabled)
|
||||
|
||||
WORKSPACE_NUMBER=$(echo "$NAME" | grep -o '[0-9]\+$')
|
||||
|
||||
case "$BUTTON" in
|
||||
"left")
|
||||
aerospace workspace "$WORKSPACE_NUMBER"
|
||||
;;
|
||||
"right")
|
||||
# Destroy space (requires yabai with SIP disabled)
|
||||
# For aerospace, we'll just move all windows from this space to space 1 and focus space 1
|
||||
aerospace list-windows --workspace "$WORKSPACE_NUMBER" --format '%{window-id}' | while read -r window_id; do
|
||||
if [ -n "$window_id" ]; then
|
||||
aerospace move-node-to-workspace --window-id "$window_id" 1
|
||||
fi
|
||||
done
|
||||
aerospace workspace 1
|
||||
;;
|
||||
esac
|
||||
26
.config/sketchybar/plugins/battery.sh
Executable file
26
.config/sketchybar/plugins/battery.sh
Executable file
|
|
@ -0,0 +1,26 @@
|
|||
#!/bin/sh
|
||||
|
||||
source "$CONFIG_DIR/colors.sh"
|
||||
|
||||
PERCENTAGE="$(pmset -g batt | grep -Eo "\d+%" | cut -d% -f1)"
|
||||
CHARGING="$(pmset -g batt | grep 'AC Power')"
|
||||
|
||||
if [ "$PERCENTAGE" = "" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
case "${PERCENTAGE}" in
|
||||
9[0-9]|100) ICON=" " ; COLOR="0xffa8ff60" ;;
|
||||
[6-8][0-9]) ICON=" " ; COLOR="0xffa8ff60" ;;
|
||||
[3-5][0-9]) ICON=" " ; COLOR="0xfffffeb7" ;;
|
||||
[1-2][0-9]) ICON=" " ; COLOR="0xfffcb6b0" ;;
|
||||
*) ICON=" " ; COLOR="0xfffa6c60" ;;
|
||||
esac
|
||||
|
||||
if [ "$CHARGING" != "" ]; then
|
||||
ICON=" "
|
||||
#COLOR="0xffa8ff60"
|
||||
COLOR=$GREEN
|
||||
fi
|
||||
|
||||
sketchybar --set "$NAME" icon="$ICON" icon.color="$COLOR" label="${PERCENTAGE}%" label.drawing=on
|
||||
16
.config/sketchybar/plugins/bluetooth.sh
Executable file
16
.config/sketchybar/plugins/bluetooth.sh
Executable file
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Check Bluetooth status
|
||||
BT_STATUS=$(system_profiler SPBluetoothDataType 2>/dev/null | grep "Bluetooth Power" | awk '{print $3}')
|
||||
|
||||
if [ "$BT_STATUS" = "On" ]; then
|
||||
# Check if any devices are connected
|
||||
CONNECTED=$(system_profiler SPBluetoothDataType 2>/dev/null | grep "Connected: Yes" | wc -l)
|
||||
if [ $CONNECTED -gt 0 ]; then
|
||||
sketchybar --set "$NAME" icon="" icon.color=0xfffacc15
|
||||
else
|
||||
sketchybar --set "$NAME" icon="" icon.color=0xffffffff
|
||||
fi
|
||||
else
|
||||
sketchybar --set "$NAME" icon="" icon.color=0xff6272a4
|
||||
fi
|
||||
14
.config/sketchybar/plugins/calendar.sh
Executable file
14
.config/sketchybar/plugins/calendar.sh
Executable file
|
|
@ -0,0 +1,14 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Calendar plugin with proper date formatting
|
||||
|
||||
# Get current date components
|
||||
DAY=$(date '+%d')
|
||||
MONTH_DAY=$(date '+%a %b %d')
|
||||
TIME=$(date '+%H:%M')
|
||||
|
||||
# Remove leading zero from day for icon
|
||||
ICON_DAY=$(date '+%-d')
|
||||
|
||||
# Format the display
|
||||
sketchybar --set "$NAME" icon="$ICON_DAY" label="$MONTH_DAY $TIME"
|
||||
9
.config/sketchybar/plugins/clock.sh
Executable file
9
.config/sketchybar/plugins/clock.sh
Executable file
|
|
@ -0,0 +1,9 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Enhanced clock script with better date formatting
|
||||
|
||||
DATE=$(date '+%a %b %d')
|
||||
TIME=$(date '+%H:%M')
|
||||
|
||||
sketchybar --set "$NAME" icon="$(date '+%d')" label="$DATE $TIME"
|
||||
|
||||
21
.config/sketchybar/plugins/dato.sh
Executable file
21
.config/sketchybar/plugins/dato.sh
Executable file
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Dato integration with clean 12-hour format
|
||||
# Simple, clean date and time display
|
||||
|
||||
# Get current date and time in 12-hour format
|
||||
DAY=$(date '+%-d')
|
||||
MONTH=$(date '+%B')
|
||||
YEAR=$(date '+%Y')
|
||||
TIME=$(date '+%-I:%M %p %Z')
|
||||
|
||||
# Add ordinal suffix to day
|
||||
case $DAY in
|
||||
1|21|31) SUFFIX="st";;
|
||||
2|22) SUFFIX="nd";;
|
||||
3|23) SUFFIX="rd";;
|
||||
*) SUFFIX="th";;
|
||||
esac
|
||||
|
||||
# Set clean label with full format
|
||||
sketchybar --set "$NAME" label="$MONTH ${DAY}${SUFFIX}, $YEAR $TIME"
|
||||
18
.config/sketchybar/plugins/focus.sh
Executable file
18
.config/sketchybar/plugins/focus.sh
Executable file
|
|
@ -0,0 +1,18 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Check Focus/Do Not Disturb status
|
||||
# This is a simplified version - macOS Focus status is complex to detect
|
||||
|
||||
# Try to detect if Focus is active
|
||||
FOCUS_ACTIVE=0
|
||||
|
||||
# Check if Do Not Disturb is enabled (basic detection)
|
||||
if plutil -extract dnd_prefs xml1 -o - ~/Library/Preferences/com.apple.ncprefs.plist 2>/dev/null | grep -q "userPref.*1"; then
|
||||
FOCUS_ACTIVE=1
|
||||
fi
|
||||
|
||||
if [ $FOCUS_ACTIVE -eq 1 ]; then
|
||||
sketchybar --set "$NAME" icon="" icon.color=0xfffacc15
|
||||
else
|
||||
sketchybar --set "$NAME" icon="" icon.color=0xff6272a4
|
||||
fi
|
||||
15
.config/sketchybar/plugins/front_app.sh
Executable file
15
.config/sketchybar/plugins/front_app.sh
Executable file
|
|
@ -0,0 +1,15 @@
|
|||
#!/bin/bash
|
||||
|
||||
CONFIG_DIR="${CONFIG_DIR:-$HOME/.config/sketchybar}"
|
||||
source "$CONFIG_DIR/helpers/icon_map.sh"
|
||||
|
||||
if [ "$SENDER" = "front_app_switched" ]; then
|
||||
__icon_map "$INFO"
|
||||
|
||||
# Use smooth animation for app switching - sin 6 for quick buttery transition
|
||||
if [ -n "$icon_result" ] && [ "$icon_result" != ":default:" ]; then
|
||||
sketchybar --animate sin 6 --set "$NAME" label="$INFO" icon="$icon_result"
|
||||
else
|
||||
sketchybar --animate sin 6 --set "$NAME" label="$INFO" icon=":default:"
|
||||
fi
|
||||
fi
|
||||
33
.config/sketchybar/plugins/mic.sh
Executable file
33
.config/sketchybar/plugins/mic.sh
Executable file
|
|
@ -0,0 +1,33 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Detect microphone usage from various apps
|
||||
|
||||
# Check for apps that commonly use microphone
|
||||
MIC_USAGE=0
|
||||
|
||||
# Check for Zoom
|
||||
if pgrep -f "zoom.us" > /dev/null; then
|
||||
MIC_USAGE=1
|
||||
fi
|
||||
|
||||
# Check for Teams
|
||||
if pgrep -f "Microsoft Teams" > /dev/null; then
|
||||
MIC_USAGE=1
|
||||
fi
|
||||
|
||||
# Check for Discord
|
||||
if pgrep -f "Discord" > /dev/null; then
|
||||
MIC_USAGE=1
|
||||
fi
|
||||
|
||||
# Check for QuickTime recording
|
||||
if pgrep -f "QuickTime Player" > /dev/null && lsof | grep -q "AppleH13CamIn"; then
|
||||
MIC_USAGE=1
|
||||
fi
|
||||
|
||||
# Show/hide mic indicator based on usage
|
||||
if [ $MIC_USAGE -eq 1 ]; then
|
||||
sketchybar --set "$NAME" drawing=on background.drawing=on
|
||||
else
|
||||
sketchybar --set "$NAME" drawing=off background.drawing=off
|
||||
fi
|
||||
35
.config/sketchybar/plugins/mic/mic.sh
Executable file
35
.config/sketchybar/plugins/mic/mic.sh
Executable file
|
|
@ -0,0 +1,35 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Filename: ~/github/dotfiles-latest/sketchybar/felixkratz/plugins/mic.sh
|
||||
|
||||
# https://github.com/FelixKratz/SketchyBar/discussions/12#discussioncomment-1216899
|
||||
|
||||
source "$CONFIG_DIR/colors.sh"
|
||||
|
||||
# Attempt to get the current input device name
|
||||
MIC_NAME=$(SwitchAudioSource -t input -c)
|
||||
# I just want the first word, in case it's too long
|
||||
MIC_NAME=$(echo $MIC_NAME | awk '{print $1}')
|
||||
|
||||
# When no microphone is connected, SwitchAudioSource gives me back random
|
||||
# characters and sketchybar shows "Warning: Malformed UTF-8 string"
|
||||
# Validate MIC_NAME as UTF-8, replace invalid sequences with a '?', then compare with original
|
||||
VALIDATED_MIC_NAME=$(echo "$MIC_NAME" | iconv -f UTF-8 -t UTF-8//IGNORE)
|
||||
|
||||
# Get the current microphone volume
|
||||
MIC_VOLUME=$(osascript -e 'input volume of (get volume settings)')
|
||||
|
||||
# Check if MIC_NAME is not meaningful
|
||||
if [[ "$MIC_NAME" != "$VALIDATED_MIC_NAME" || -z "$MIC_NAME" ]]; then
|
||||
# If the mic name is not valid or empty
|
||||
sketchybar -m --set mic label="" icon= icon.color=$YELLOW label.color=$YELLOW
|
||||
else
|
||||
# Update SketchyBar with the microphone's name and volume
|
||||
if [[ $MIC_VOLUME -eq 0 ]]; then
|
||||
sketchybar -m --set mic label="$MIC_NAME $MIC_VOLUME" icon= icon.color=$RED label.color=$RED
|
||||
elif [[ $MIC_VOLUME -gt 0 && $MIC_VOLUME -lt 100 ]]; then
|
||||
sketchybar -m --set mic label="$MIC_NAME $MIC_VOLUME" icon= icon.color=$ORANGE label.color=$ORANGE
|
||||
elif [[ $MIC_VOLUME -eq 100 ]]; then
|
||||
sketchybar -m --set mic label="$MIC_NAME $MIC_VOLUME" icon= icon.color=$GREEN label.color=$WHITE
|
||||
fi
|
||||
fi
|
||||
16
.config/sketchybar/plugins/mic/mic.sh.old
Executable file
16
.config/sketchybar/plugins/mic/mic.sh.old
Executable file
|
|
@ -0,0 +1,16 @@
|
|||
#!/bin/bash
|
||||
|
||||
source "$CONFIG_DIR/colors.sh"
|
||||
|
||||
MIC_VOLUME=$(osascript -e 'input volume of (get volume settings)')
|
||||
|
||||
if [[ $MIC_VOLUME -eq 0 ]]; then
|
||||
ICON=" "
|
||||
COLOR=$RED
|
||||
#sketchybar -m --set mic icon.color=$RED icon= icon.font="0xProto Nerd Font Mono:Bold:20"
|
||||
elif [[ $MIC_VOLUME -gt 0 ]]; then
|
||||
ICON=" "
|
||||
COLOR=$GREEN
|
||||
fi
|
||||
#sketchybar -m --set mic icon= icon.color=$GREEN icon.font="0xProto Nerd Font Mono:Bold:25"
|
||||
sketchybar -m --set mic icon="$ICON" icon.color="$COLOR" icon.font="0xProto Nerd Font Mono:Bold:30"
|
||||
64
.config/sketchybar/plugins/mic/mic_click.sh
Executable file
64
.config/sketchybar/plugins/mic/mic_click.sh
Executable file
|
|
@ -0,0 +1,64 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Filename: ~/github/dotfiles-latest/sketchybar/felixkratz/plugins/mic_click.sh
|
||||
|
||||
# https://github.com/FelixKratz/SketchyBar/discussions/12#discussioncomment-1216899
|
||||
|
||||
source "$CONFIG_DIR/colors.sh"
|
||||
|
||||
# This is basically the same as the `toggle_devices()` function in:
|
||||
# ~/github/dotfiles-latest/sketchybar/felixkratz/plugins/volume_click.sh
|
||||
toggle_mics() {
|
||||
which SwitchAudioSource >/dev/null || exit 0
|
||||
source "$CONFIG_DIR/colors.sh"
|
||||
|
||||
args=(--remove '/mic.device\.*/' --set "$NAME" popup.drawing=toggle popup.align=left popup.horizontal=on)
|
||||
COUNTER=0
|
||||
CURRENT="$(SwitchAudioSource -t input -c)"
|
||||
while IFS= read -r device; do
|
||||
COLOR=$GREY
|
||||
if [ "${device}" = "$CURRENT" ]; then
|
||||
COLOR=$WHITE
|
||||
fi
|
||||
args+=(--add item mic.device.$COUNTER popup."$NAME"
|
||||
--set mic.device.$COUNTER label="${device}"
|
||||
label.color="$COLOR"
|
||||
click_script="SwitchAudioSource -t input -s \"${device}\" && sketchybar --set /mic.device\.*/ label.color=$GREY --set \$NAME label.color=$WHITE --set $NAME popup.drawing=off")
|
||||
COUNTER=$((COUNTER + 1))
|
||||
done <<<"$(SwitchAudioSource -a -t input)"
|
||||
|
||||
sketchybar -m "${args[@]}" >/dev/null
|
||||
}
|
||||
|
||||
if [ "$BUTTON" = "left" ]; then
|
||||
# Attempt to get the current input device name
|
||||
MIC_NAME=$(SwitchAudioSource -t input -c)
|
||||
# I just want the first word, in case it's too long
|
||||
MIC_NAME=$(echo $MIC_NAME | awk '{print $1}')
|
||||
|
||||
# When no microphone is connected, SwitchAudioSource gives me back random
|
||||
# characters and sketchybar shows "Warning: Malformed UTF-8 string"
|
||||
# Validate MIC_NAME as UTF-8, replace invalid sequences with a '?', then compare with original
|
||||
VALIDATED_MIC_NAME=$(echo "$MIC_NAME" | iconv -f UTF-8 -t UTF-8//IGNORE)
|
||||
|
||||
# Get the current microphone volume
|
||||
MIC_VOLUME=$(osascript -e 'input volume of (get volume settings)')
|
||||
|
||||
# Check if MIC_NAME is not meaningful
|
||||
if [[ "$MIC_NAME" != "$VALIDATED_MIC_NAME" || -z "$MIC_NAME" ]]; then
|
||||
# If the mic name is not valid or empty
|
||||
sketchybar -m --set mic label="" icon=
|
||||
else
|
||||
# Update SketchyBar with the microphone's name and volume
|
||||
if [[ $MIC_VOLUME -lt 100 ]]; then
|
||||
osascript -e 'set volume input volume 100'
|
||||
sketchybar -m --set mic label="$MIC_NAME 100" icon= icon.color=$GREEN label.color=$WHITE
|
||||
elif [[ $MIC_VOLUME -gt 0 ]]; then
|
||||
osascript -e 'set volume input volume 0'
|
||||
sketchybar -m --set mic label="$MIC_NAME 0" icon= icon.color=$RED label.color=$RED
|
||||
fi
|
||||
fi
|
||||
# Check for right-click or shift modifier to show the microphone selection popup
|
||||
elif [ "$BUTTON" = "right" ] || [ "$MODIFIER" = "shift" ]; then
|
||||
toggle_mics
|
||||
fi
|
||||
18
.config/sketchybar/plugins/mic/mic_click.sh.old
Executable file
18
.config/sketchybar/plugins/mic/mic_click.sh.old
Executable file
|
|
@ -0,0 +1,18 @@
|
|||
#!/bin/bash
|
||||
|
||||
source "$CONFIG_DIR/colors.sh"
|
||||
|
||||
MIC_VOLUME=$(osascript -e 'input volume of (get volume settings)')
|
||||
|
||||
if [[ $MIC_VOLUME -eq 0 ]]; then
|
||||
osascript -e 'set volume input volume 25'
|
||||
ICON=""
|
||||
COLOR=$GREEN
|
||||
#sketchybar -m --set mic icon="" icon.color=$GREEN
|
||||
elif [[ $MIC_VOLUME -gt 0 ]]; then
|
||||
osascript -e 'set volume input volume 0'
|
||||
ICON=""
|
||||
COLOR=$RED
|
||||
#sketchybar -m --set mic icon="" icon.color=$RED
|
||||
fi
|
||||
sketchybar -m --set mic icon="$ICON" icon.color=$COLOR
|
||||
19
.config/sketchybar/plugins/recording.sh
Executable file
19
.config/sketchybar/plugins/recording.sh
Executable file
|
|
@ -0,0 +1,19 @@
|
|||
#!/bin/bash
|
||||
|
||||
SCREEN_RECORDING=0
|
||||
|
||||
# Check for active screencapture process (macOS screenshot/recording tool)
|
||||
if pgrep -x screencapture > /dev/null 2>&1; then
|
||||
SCREEN_RECORDING=1
|
||||
fi
|
||||
|
||||
# Check for common recording applications
|
||||
if pgrep -x OBS > /dev/null 2>&1 || pgrep -x Kap > /dev/null 2>&1 || pgrep -x "CleanShot X" > /dev/null 2>&1 || pgrep -x Camtasia > /dev/null 2>&1; then
|
||||
SCREEN_RECORDING=1
|
||||
fi
|
||||
|
||||
if [ $SCREEN_RECORDING -eq 1 ]; then
|
||||
sketchybar --set "$NAME" drawing=on background.drawing=on
|
||||
else
|
||||
sketchybar --set "$NAME" drawing=off background.drawing=off
|
||||
fi
|
||||
10
.config/sketchybar/plugins/recording_click.sh
Executable file
10
.config/sketchybar/plugins/recording_click.sh
Executable file
|
|
@ -0,0 +1,10 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Stop screen recording when clicked
|
||||
# This simulates the macOS menu bar behavior
|
||||
|
||||
# Try to stop screen recording via keyboard shortcut
|
||||
osascript -e 'tell application "System Events" to key code 28 using {shift down, command down}'
|
||||
|
||||
# Or try to quit QuickTime Player if it's recording
|
||||
pkill -f "QuickTime Player"
|
||||
7
.config/sketchybar/plugins/space.sh
Executable file
7
.config/sketchybar/plugins/space.sh
Executable file
|
|
@ -0,0 +1,7 @@
|
|||
#!/bin/sh
|
||||
|
||||
# The $SELECTED variable is available for space components and indicates if
|
||||
# the space invoking this script (with name: $NAME) is currently selected:
|
||||
# https://felixkratz.github.io/SketchyBar/config/components#space----associate-mission-control-spaces-with-an-item
|
||||
|
||||
sketchybar --set "$NAME" background.drawing="$SELECTED"
|
||||
175
.config/sketchybar/plugins/spotify.sh
Executable file
175
.config/sketchybar/plugins/spotify.sh
Executable file
|
|
@ -0,0 +1,175 @@
|
|||
#!/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 | sed 's/\(.\{20\}\).*/\1.../')"
|
||||
ARTIST="$(echo "$INFO" | jq -r .Artist | sed 's/\(.\{20\}\).*/\1.../')"
|
||||
ALBUM="$(echo "$INFO" | jq -r .Album | sed 's/\(.\{25\}\).*/\1.../')"
|
||||
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
|
||||
--set spotify.anchor icon.color=0xfffacc15 )
|
||||
else
|
||||
args+=(--set spotify.anchor drawing=on popup.drawing=off
|
||||
--set spotify.anchor icon.color=0xfffacc15
|
||||
--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 () {
|
||||
# Toggle popup instead of just on/off - stays open until clicked elsewhere
|
||||
sketchybar --set spotify.anchor popup.drawing=toggle
|
||||
}
|
||||
|
||||
routine() {
|
||||
case "$NAME" in
|
||||
"spotify.state") scroll
|
||||
;;
|
||||
*) update
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
case "$SENDER" in
|
||||
"mouse.clicked")
|
||||
if [ "$NAME" = "spotify.anchor" ]; then
|
||||
sketchybar --set spotify.anchor popup.drawing=toggle
|
||||
else
|
||||
mouse_clicked
|
||||
fi
|
||||
;;
|
||||
"mouse.entered")
|
||||
if [ "$NAME" = "spotify.anchor" ]; then
|
||||
sketchybar --set spotify.anchor popup.drawing=on
|
||||
fi
|
||||
;;
|
||||
"mouse.exited")
|
||||
# Close popup after a brief moment to avoid flickering
|
||||
sleep 0.3
|
||||
sketchybar --set spotify.anchor popup.drawing=off
|
||||
;;
|
||||
"mouse.exited.global")
|
||||
sketchybar --set spotify.anchor popup.drawing=off
|
||||
;;
|
||||
"routine") routine
|
||||
;;
|
||||
"forced")
|
||||
if pgrep -x Spotify > /dev/null 2>&1; then
|
||||
STATE=$(osascript -e 'tell application "Spotify" to get player state as string' 2>/dev/null)
|
||||
if [ "$STATE" = "playing" ]; then
|
||||
TRACK=$(osascript -e 'tell application "Spotify" to get name of current track' 2>/dev/null)
|
||||
ARTIST=$(osascript -e 'tell application "Spotify" to get artist of current track' 2>/dev/null)
|
||||
ALBUM=$(osascript -e 'tell application "Spotify" to get album of current track' 2>/dev/null)
|
||||
INFO=$(jq -n --arg t "$TRACK" --arg a "$ARTIST" --arg al "$ALBUM" \
|
||||
'{"Player State":"Playing","Name":$t,"Artist":$a,"Album":$al}')
|
||||
update
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
*) update
|
||||
;;
|
||||
esac
|
||||
7
.config/sketchybar/plugins/trigger_workspace_update.sh
Executable file
7
.config/sketchybar/plugins/trigger_workspace_update.sh
Executable file
|
|
@ -0,0 +1,7 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Trigger the workspace update
|
||||
/Users/zion/.config/sketchybar/plugins/aerospace_workspaces.sh
|
||||
|
||||
# Also trigger a sketchybar update
|
||||
sketchybar --trigger aerospace_workspace_change
|
||||
20
.config/sketchybar/plugins/volume.sh
Executable file
20
.config/sketchybar/plugins/volume.sh
Executable file
|
|
@ -0,0 +1,20 @@
|
|||
#!/bin/sh
|
||||
|
||||
# The volume_change event supplies a $INFO variable in which the current volume
|
||||
# percentage is passed to the script.
|
||||
|
||||
if [ "$SENDER" = "volume_change" ]; then
|
||||
VOLUME="$INFO"
|
||||
|
||||
case "$VOLUME" in
|
||||
[6-9][0-9]|100) ICON=""
|
||||
;;
|
||||
[3-5][0-9]) ICON=""
|
||||
;;
|
||||
[1-9]|[1-2][0-9]) ICON=""
|
||||
;;
|
||||
*) ICON=""
|
||||
esac
|
||||
|
||||
sketchybar --set "$NAME" icon="$ICON" label="$VOLUME%"
|
||||
fi
|
||||
17
.config/sketchybar/plugins/volume_scroll.sh
Executable file
17
.config/sketchybar/plugins/volume_scroll.sh
Executable file
|
|
@ -0,0 +1,17 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Volume scroll script - allows changing volume with mouse scroll
|
||||
|
||||
VOLUME_STEP=5
|
||||
|
||||
case "$SCROLL_DIRECTION" in
|
||||
"up")
|
||||
osascript -e "set volume output volume (output volume of (get volume settings) + $VOLUME_STEP)"
|
||||
;;
|
||||
"down")
|
||||
osascript -e "set volume output volume (output volume of (get volume settings) - $VOLUME_STEP)"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Trigger volume update
|
||||
sketchybar --trigger volume_change
|
||||
29
.config/sketchybar/plugins/wifi.sh
Executable file
29
.config/sketchybar/plugins/wifi.sh
Executable file
|
|
@ -0,0 +1,29 @@
|
|||
#!/bin/bash
|
||||
|
||||
CONFIG_DIR="${CONFIG_DIR:-$HOME/.config/sketchybar}"
|
||||
source "$CONFIG_DIR/icons.sh"
|
||||
|
||||
# Check overall internet connection status
|
||||
INTERNET_CONNECTED=0
|
||||
|
||||
# First check if we can reach the internet
|
||||
if ping -c 1 8.8.8.8 >/dev/null 2>&1; then
|
||||
INTERNET_CONNECTED=1
|
||||
fi
|
||||
|
||||
if [ $INTERNET_CONNECTED -eq 1 ]; then
|
||||
# Check if WiFi is on and connected
|
||||
WIFI_STATUS=$(networksetup -getairportpower en0 2>/dev/null | awk '{print $4}')
|
||||
SSID=$(networksetup -getairportnetwork en0 2>/dev/null | cut -d' ' -f4-)
|
||||
|
||||
if [ "$WIFI_STATUS" = "On" ] && [ "$SSID" != "You are not associated with an AirPort network." ] && [ "$SSID" != "" ]; then
|
||||
# Connected via WiFi
|
||||
sketchybar --set "$NAME" icon="📶" label="$SSID"
|
||||
else
|
||||
# Connected via Ethernet or other means
|
||||
sketchybar --set "$NAME" icon="📶" label="Ethernet"
|
||||
fi
|
||||
else
|
||||
# No internet connection at all
|
||||
sketchybar --set "$NAME" icon="🚫" label="No Internet"
|
||||
fi
|
||||
7
.config/sketchybar/plugins/zen.sh
Executable file
7
.config/sketchybar/plugins/zen.sh
Executable file
|
|
@ -0,0 +1,7 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Simple zen script - toggles between 12h and 24h format
|
||||
# You can customize this to do whatever you want when clicking the clock
|
||||
|
||||
# For now, just open the Calendar app
|
||||
open -a Calendar
|
||||
137
.config/sketchybar/sketchybarrc
Executable file
137
.config/sketchybar/sketchybarrc
Executable file
|
|
@ -0,0 +1,137 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Ensure CONFIG_DIR is set
|
||||
CONFIG_DIR="${CONFIG_DIR:-$HOME/.config/sketchybar}"
|
||||
export CONFIG_DIR
|
||||
|
||||
source "$CONFIG_DIR/colors.sh" # Loads all defined colors
|
||||
source "$CONFIG_DIR/icons.sh" # Loads all defined icons
|
||||
|
||||
ITEM_DIR="$CONFIG_DIR/items" # Directory where the items are configured
|
||||
PLUGIN_DIR="$CONFIG_DIR/plugins" # Directory where all the plugin scripts are stored
|
||||
|
||||
FONT="0xProto Nerd Font Mono" # Match user's preferred font
|
||||
PADDINGS=3 # All paddings use this value (icon, label, background)
|
||||
|
||||
# Unload the macOS on screen indicator overlay for volume change
|
||||
launchctl unload -F /System/Library/LaunchAgents/com.apple.OSDUIHelper.plist > /dev/null 2>&1 &
|
||||
|
||||
# Setting up the general bar appearance of the bar
|
||||
bar=(
|
||||
height=39
|
||||
color=$BAR_COLOR
|
||||
shadow=on
|
||||
position=top
|
||||
sticky=on
|
||||
padding_right=10
|
||||
padding_left=10
|
||||
corner_radius=9
|
||||
y_offset=10
|
||||
margin=10
|
||||
blur_radius=20
|
||||
notch_width=200
|
||||
)
|
||||
|
||||
sketchybar --bar "${bar[@]}"
|
||||
|
||||
# Setting up default values
|
||||
defaults=(
|
||||
updates=when_shown
|
||||
icon.font="$FONT:Bold:16.0"
|
||||
icon.color=$ICON_COLOR
|
||||
icon.padding_left=8
|
||||
icon.padding_right=4
|
||||
label.font="$FONT:Bold:15.0"
|
||||
label.color=$LABEL_COLOR
|
||||
label.padding_left=4
|
||||
label.padding_right=8
|
||||
padding_right=8
|
||||
padding_left=8
|
||||
background.height=30
|
||||
background.corner_radius=9
|
||||
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
|
||||
)
|
||||
|
||||
sketchybar --default "${defaults[@]}"
|
||||
|
||||
# Create aerospace workspace events
|
||||
sketchybar --add event aerospace_workspace_change
|
||||
sketchybar --add event window_focus
|
||||
sketchybar --add event space_change
|
||||
|
||||
# Left: Apple + Aerospace workspaces + Current App
|
||||
source "$ITEM_DIR/apple.sh"
|
||||
|
||||
# Pre-create all workspace items for smooth updates (no add/remove cycle)
|
||||
for i in {1..9}; do
|
||||
sketchybar --add space aerospace.workspace.$i left \
|
||||
--set aerospace.workspace.$i associated_display=1 \
|
||||
--set aerospace.workspace.$i icon.padding_left=8 \
|
||||
--set aerospace.workspace.$i icon.padding_right=4 \
|
||||
--set aerospace.workspace.$i icon.font="sketchybar-app-font:Regular:16.0" \
|
||||
--set aerospace.workspace.$i label.padding_left=4 \
|
||||
--set aerospace.workspace.$i label.padding_right=8 \
|
||||
--set aerospace.workspace.$i label.font="SF Pro:Semibold:13.0" \
|
||||
--set aerospace.workspace.$i background.border_width=0 \
|
||||
--set aerospace.workspace.$i background.corner_radius=8 \
|
||||
--set aerospace.workspace.$i background.height=28 \
|
||||
--set aerospace.workspace.$i background.drawing=on \
|
||||
--set aerospace.workspace.$i click_script="aerospace workspace $i &" \
|
||||
--set aerospace.workspace.$i drawing=off
|
||||
done
|
||||
|
||||
# Now run aerospace.sh to set initial state
|
||||
source "$ITEM_DIR/aerospace.sh"
|
||||
|
||||
# Add current app right after aerospace workspaces
|
||||
sketchybar --add item front_app left \
|
||||
--set front_app background.color=$BACKGROUND_2 \
|
||||
--set front_app icon.color=$BLUE \
|
||||
--set front_app icon.font="sketchybar-app-font:Regular:16.0" \
|
||||
--set front_app label.color=0xffffffff \
|
||||
--set front_app label.font="0xProto Nerd Font Mono:Bold:15.0" \
|
||||
--set front_app script="$PLUGIN_DIR/front_app.sh" \
|
||||
--subscribe front_app front_app_switched
|
||||
|
||||
# Volume
|
||||
#source "$ITEM_DIR/volume.sh"
|
||||
|
||||
|
||||
# Center: Spotify popup player
|
||||
#source "$ITEM_DIR/spotify.sh"
|
||||
|
||||
# Subscribe to Spotify events
|
||||
#sketchybar --trigger spotify_change
|
||||
|
||||
# Right: System indicators and Dato
|
||||
#source "$ITEM_DIR/recording.sh"
|
||||
source "$ITEM_DIR/mic.sh"
|
||||
source "$ITEM_DIR/clock.sh"
|
||||
source "$ITEM_DIR/battery.sh"
|
||||
|
||||
#sketchybar -m --add item mic right \
|
||||
# --set mic update_freq=3 \
|
||||
# script="$PLUGIN_DIR/mic/mic.sh" \
|
||||
# click_script="$PLUGIN_DIR/mic/mic_click.sh" \
|
||||
# --subscribe mic volume_change
|
||||
|
||||
# Event listener for aerospace changes
|
||||
# aerospace_workspace_change → fast path (color swap via env vars from exec-on-workspace-change)
|
||||
# front_app_switched → full path (icon refresh when apps open/close/move)
|
||||
sketchybar --add item aerospace_listener left \
|
||||
--set aerospace_listener script="$CONFIG_DIR/items/aerospace.sh" \
|
||||
--set aerospace_listener icon.drawing=off \
|
||||
--set aerospace_listener label.drawing=off \
|
||||
--set aerospace_listener background.drawing=off \
|
||||
--set aerospace_listener width=0 \
|
||||
--subscribe aerospace_listener aerospace_workspace_change front_app_switched
|
||||
|
||||
# Forcing all item scripts to run (never do this outside of sketchybarrc)
|
||||
sketchybar --update
|
||||
|
||||
echo "sketchybar configuration loaded.."
|
||||
91
.config/sketchybar/sketchybarrc.backup
Normal file
91
.config/sketchybar/sketchybarrc.backup
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
# This is a demo config to showcase some of the most important commands.
|
||||
# It is meant to be changed and configured, as it is intentionally kept sparse.
|
||||
# For a (much) more advanced configuration example see my dotfiles:
|
||||
# https://github.com/FelixKratz/dotfiles
|
||||
|
||||
PLUGIN_DIR="$CONFIG_DIR/plugins"
|
||||
|
||||
##### Bar Appearance #####
|
||||
# Configuring the general appearance of the bar.
|
||||
# These are only some of the options available. For all options see:
|
||||
# https://felixkratz.github.io/SketchyBar/config/bar
|
||||
# If you are looking for other colors, see the color picker:
|
||||
# https://felixkratz.github.io/SketchyBar/config/tricks#color-picker
|
||||
|
||||
sketchybar --bar position=top height=40 blur_radius=30 color=0x40000000
|
||||
|
||||
##### Changing Defaults #####
|
||||
# We now change some default values, which are applied to all further items.
|
||||
# For a full list of all available item properties see:
|
||||
# https://felixkratz.github.io/SketchyBar/config/items
|
||||
|
||||
default=(
|
||||
padding_left=5
|
||||
padding_right=5
|
||||
icon.font="Hack Nerd Font:Bold:17.0"
|
||||
label.font="Hack Nerd Font:Bold:14.0"
|
||||
icon.color=0xffffffff
|
||||
label.color=0xffffffff
|
||||
icon.padding_left=4
|
||||
icon.padding_right=4
|
||||
label.padding_left=4
|
||||
label.padding_right=4
|
||||
)
|
||||
sketchybar --default "${default[@]}"
|
||||
|
||||
##### Adding Mission Control Space Indicators #####
|
||||
# Let's add some mission control spaces:
|
||||
# https://felixkratz.github.io/SketchyBar/config/components#space----associate-mission-control-spaces-with-an-item
|
||||
# to indicate active and available mission control spaces.
|
||||
|
||||
SPACE_ICONS=("1" "2" "3" "4" "5" "6" "7" "8" "9" "10")
|
||||
for i in "${!SPACE_ICONS[@]}"
|
||||
do
|
||||
sid="$(($i+1))"
|
||||
space=(
|
||||
space="$sid"
|
||||
icon="${SPACE_ICONS[i]}"
|
||||
icon.padding_left=7
|
||||
icon.padding_right=7
|
||||
background.color=0x40ffffff
|
||||
background.corner_radius=5
|
||||
background.height=25
|
||||
label.drawing=off
|
||||
script="$PLUGIN_DIR/space.sh"
|
||||
click_script="yabai -m space --focus $sid"
|
||||
)
|
||||
sketchybar --add space space."$sid" left --set space."$sid" "${space[@]}"
|
||||
done
|
||||
|
||||
##### Adding Left Items #####
|
||||
# We add some regular items to the left side of the bar, where
|
||||
# only the properties deviating from the current defaults need to be set
|
||||
|
||||
sketchybar --add item chevron left \
|
||||
--set chevron icon= label.drawing=off \
|
||||
--add item front_app left \
|
||||
--set front_app icon.drawing=off script="$PLUGIN_DIR/front_app.sh" \
|
||||
--subscribe front_app front_app_switched
|
||||
|
||||
##### Adding Right Items #####
|
||||
# In the same way as the left items we can add items to the right side.
|
||||
# Additional position (e.g. center) are available, see:
|
||||
# https://felixkratz.github.io/SketchyBar/config/items#adding-items-to-sketchybar
|
||||
|
||||
# Some items refresh on a fixed cycle, e.g. the clock runs its script once
|
||||
# every 10s. Other items respond to events they subscribe to, e.g. the
|
||||
# volume.sh script is only executed once an actual change in system audio
|
||||
# volume is registered. More info about the event system can be found here:
|
||||
# https://felixkratz.github.io/SketchyBar/config/events
|
||||
|
||||
sketchybar --add item clock right \
|
||||
--set clock update_freq=10 icon= script="$PLUGIN_DIR/clock.sh" \
|
||||
--add item volume right \
|
||||
--set volume script="$PLUGIN_DIR/volume.sh" \
|
||||
--subscribe volume volume_change \
|
||||
--add item battery right \
|
||||
--set battery update_freq=120 script="$PLUGIN_DIR/battery.sh" \
|
||||
--subscribe battery system_woke power_source_change
|
||||
|
||||
##### Force all scripts to run the first time (never do this in a script) #####
|
||||
sketchybar --update
|
||||
80
.config/sketchybar/sketchybarrc.backup2
Executable file
80
.config/sketchybar/sketchybarrc.backup2
Executable file
|
|
@ -0,0 +1,80 @@
|
|||
# Modern Sketchybar config with Aerospace integration
|
||||
# Shows only active aerospace workspaces with app icons
|
||||
|
||||
PLUGIN_DIR="$CONFIG_DIR/plugins"
|
||||
|
||||
##### Bar Appearance #####
|
||||
sketchybar --bar position=top height=40 blur_radius=30 color=0x20000000 margin=8
|
||||
|
||||
##### Changing Defaults #####
|
||||
default=(
|
||||
padding_left=4
|
||||
padding_right=4
|
||||
icon.font="SF Pro Display:Bold:16.0"
|
||||
label.font="SF Pro Display:Medium:13.0"
|
||||
icon.color=0xffffffff
|
||||
label.color=0xffffffff
|
||||
background.border_width=0
|
||||
background.corner_radius=8
|
||||
background.height=32
|
||||
)
|
||||
sketchybar --default "${default[@]}"
|
||||
|
||||
##### Adding Dynamic Aerospace Workspaces #####
|
||||
# This will be populated by the aerospace_workspaces.sh script
|
||||
# Only shows workspaces that actually have windows
|
||||
|
||||
##### Adding Left Items #####
|
||||
# Separator and current app
|
||||
sketchybar --add item separator left \
|
||||
--set separator icon="" \
|
||||
icon.color=0xff9ca0a4 \
|
||||
icon.padding_left=8 \
|
||||
icon.padding_right=8 \
|
||||
label.drawing=off \
|
||||
--add item front_app left \
|
||||
--set front_app icon.drawing=off \
|
||||
script="$PLUGIN_DIR/front_app.sh" \
|
||||
label.font="SF Pro Display:Semibold:13.0" \
|
||||
--subscribe front_app front_app_switched
|
||||
|
||||
##### Adding Right Items #####
|
||||
# Modern right-side items with proper icons
|
||||
|
||||
# Dato (Date/Time)
|
||||
sketchybar --add item dato right \
|
||||
--set dato update_freq=30 \
|
||||
icon="" \
|
||||
icon.color=0xff9ca0a4 \
|
||||
icon.padding_right=8 \
|
||||
script="$PLUGIN_DIR/dato.sh" \
|
||||
|
||||
# Volume
|
||||
sketchybar --add item volume right \
|
||||
--set volume script="$PLUGIN_DIR/volume.sh" \
|
||||
icon.color=0xff9ca0a4 \
|
||||
icon.padding_right=8 \
|
||||
--subscribe volume volume_change \
|
||||
|
||||
# Battery
|
||||
sketchybar --add item battery right \
|
||||
--set battery update_freq=120 \
|
||||
script="$PLUGIN_DIR/battery.sh" \
|
||||
icon.color=0xff9ca0a4 \
|
||||
icon.padding_right=8 \
|
||||
--subscribe battery system_woke power_source_change
|
||||
|
||||
##### Initialization #####
|
||||
# Run the aerospace workspace script to populate workspaces
|
||||
sketchybar --add event aerospace_workspace_change \
|
||||
--add item aerospace_trigger left \
|
||||
--set aerospace_trigger script="$PLUGIN_DIR/aerospace_workspaces.sh" \
|
||||
label.drawing=off \
|
||||
icon.drawing=off \
|
||||
--subscribe aerospace_trigger aerospace_workspace_change
|
||||
|
||||
# Initial population of workspaces
|
||||
"$PLUGIN_DIR/aerospace_workspaces.sh"
|
||||
|
||||
##### Force all scripts to run #####
|
||||
sketchybar --update
|
||||
Loading…
Reference in a new issue