diff options
| author | Wayne-Cole <77279425+Wacky404@users.noreply.github.com> | 2025-03-29 22:25:19 -0500 |
|---|---|---|
| committer | Wayne-Cole <77279425+Wacky404@users.noreply.github.com> | 2025-03-29 22:25:19 -0500 |
| commit | 6c0663c74161044e1215fad4a1ad45acc1f64714 (patch) | |
| tree | 49760fb79a56ae8fd8342704a037c9a70cf59bd8 | |
| parent | aa45aafa2ae7fd7405627c1b7eb6f5623fd1dd1c (diff) | |
| download | wackys-dev-env-6c0663c74161044e1215fad4a1ad45acc1f64714.tar.xz wackys-dev-env-6c0663c74161044e1215fad4a1ad45acc1f64714.zip | |
feat: updating files, but switched from yabai to aerospace + other updates
| -rw-r--r-- | .config/aerospace/aerospace.toml | 15 | ||||
| -rw-r--r-- | .config/sketchybar/config/fonts.lua | 2 | ||||
| -rw-r--r-- | .config/sketchybar/config/icons.lua | 558 | ||||
| -rw-r--r-- | .config/sketchybar/constants.lua | 4 | ||||
| -rw-r--r-- | .config/sketchybar/items/front_apps.lua | 5 | ||||
| -rw-r--r-- | .config/sketchybar/items/menu_spaces_toggle.lua | 4 | ||||
| -rw-r--r-- | .config/sketchybar/items/spaces.lua | 135 |
7 files changed, 421 insertions, 302 deletions
diff --git a/.config/aerospace/aerospace.toml b/.config/aerospace/aerospace.toml index c7c2dd4..567b6ce 100644 --- a/.config/aerospace/aerospace.toml +++ b/.config/aerospace/aerospace.toml @@ -6,6 +6,15 @@ after-login-command = [] # Available commands : https://nikitabobko.github.io/AeroSpace/commands after-startup-command = [] +# notify Sketchybar about events +exec-on-workspace-change = ['/bin/bash', '-c', + 'sketchybar --trigger aerospace_workspace_changed FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE' +] + +on-focus-changed = ['exec-and-forget /bin/bash -c /opt/homebrew/bin/sketchybar --trigger front_app_switched', + 'exec-and-forget sketchybar --trigger update_windows' +] + # Start AeroSpace at login start-at-login = true @@ -38,6 +47,12 @@ on-focused-monitor-changed = ['move-mouse monitor-lazy-center'] # Also see: https://nikitabobko.github.io/AeroSpace/goodies#disable-hide-app automatically-unhide-macos-hidden-apps = true +# this is needed to inherit the enviroment vars from aerospace.app; homewbrew install +[exec] + inherit-env-vars = true +[exec.env-vars] + PATH = '/opt/homebrew/bin:/opt/homebrew/sbin:${PATH}' + # Possible values: (qwerty|dvorak) # See https://nikitabobko.github.io/AeroSpace/guide#key-mapping [key-mapping] diff --git a/.config/sketchybar/config/fonts.lua b/.config/sketchybar/config/fonts.lua index 51cb0ee..6d7af61 100644 --- a/.config/sketchybar/config/fonts.lua +++ b/.config/sketchybar/config/fonts.lua @@ -4,7 +4,7 @@ return { text = "SpaceMono Nerd Font", numbers = "SpaceMono Nerd Font", icons = function(size) - local font = "sketchybar-app-font:Regular" + local font = "Hack Nerd Font:Bold:14.0" return size and font .. ":" .. size or font .. ":" .. dimens.text.icon end, styles = { diff --git a/.config/sketchybar/config/icons.lua b/.config/sketchybar/config/icons.lua index 9f367f1..bd94a31 100644 --- a/.config/sketchybar/config/icons.lua +++ b/.config/sketchybar/config/icons.lua @@ -1,283 +1,283 @@ local apps <const> = { - ["Live"] = ":ableton:", - ["Adobe Bridge 2024"] = ":adobe_bridge:", - ["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:", - ["Alacritty"] = ":alacritty:", - ["Alfred Preferences"] = ":alfred:", - ["Android Messages"] = ":android_messages:", - ["Android Studio"] = ":android_studio:", - ["Anytype"] = ":anytype:", - ["App Eraser"] = ":app_eraser:", - ["App Store"] = ":app_store:", - ["Arc"] = ":arc:", - ["Atom"] = ":atom:", - ["Audacity"] = ":audacity:", - ["Bambu Studio"] = ":bambu_studio:", - ["MoneyMoney"] = ":bank:", - ["Bear"] = ":bear:", - ["BetterTouchTool"] = ":bettertouchtool:", - ["Bilibili"] = ":bilibili:", - ["哔哩哔哩"] = ":bilibili:", - ["Bitwarden"] = ":bit_warden:", - ["Blender"] = ":blender:", - ["BluOS Controller"] = ":bluos_controller:", - ["Calibre"] = ":book:", - ["Brave Browser"] = ":brave_browser:", - ["Calculator"] = ":calculator:", - ["Soulver 3"] = ":calculator:", - ["Calculette"] = ":calculator:", - ["Calendar"] = ":calendar:", - ["日历"] = ":calendar:", - ["Fantastical"] = ":calendar:", - ["Cron"] = ":calendar:", - ["Amie"] = ":calendar:", - ["Calendrier"] = ":calendar:", - ["Notion Calendar"] = ":calendar:", - ["Caprine"] = ":caprine:", - ["Citrix Workspace"] = ":citrix:", - ["Citrix Viewer"] = ":citrix:", - ["ClickUp"] = ":click_up:", - ["Code"] = ":code:", - ["Code - Insiders"] = ":code:", - ["Color Picker"] = ":color_picker:", - ["数码测色计"] = ":color_picker:", - ["CotEditor"] = ":coteditor:", - ["Cypress"] = ":cypress:", - ["DataGrip"] = ":datagrip:", - ["DataSpell"] = ":dataspell:", - ["DaVinci Resolve"] = ":davinciresolve:", - ["Default"] = ":default:", - ["CleanMyMac X"] = ":desktop:", - ["DEVONthink 3"] = ":devonthink3:", - ["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:", - ["Dropbox"] = ":dropbox:", - ["Element"] = ":element:", - ["Emacs"] = ":emacs:", - ["Evernote Legacy"] = ":evernote_legacy:", - ["FaceTime"] = ":face_time:", - ["FaceTime 通话"] = ":face_time:", - ["Figma"] = ":figma:", - ["Final Cut Pro"] = ":final_cut_pro:", - ["Finder"] = ":finder:", - ["访达"] = ":finder:", - ["Firefox"] = ":firefox:", - ["Firefox Developer Edition"] = ":firefox_developer_edition:", - ["Firefox Nightly"] = ":firefox_developer_edition:", - ["Folx"] = ":folx:", - ["Fusion"] = ":fusion:", - ["System Preferences"] = ":gear:", - ["System Settings"] = ":gear:", - ["Systemeinstellungen"] = ":gear:", - ["系统设置"] = ":gear:", - ["Réglages Système"] = ":gear:", - ["GitHub Desktop"] = ":git_hub:", - ["Godot"] = ":godot:", - ["GoLand"] = ":goland:", - ["Chromium"] = ":google_chrome:", - ["Google Chrome"] = ":google_chrome:", - ["Google Chrome Canary"] = ":google_chrome:", - ["Grammarly Editor"] = ":grammarly:", - ["Home Assistant"] = ":home_assistant:", - ["Hyper"] = ":hyper:", - ["IntelliJ IDEA"] = ":idea:", - ["Inkdrop"] = ":inkdrop:", - ["Inkscape"] = ":inkscape:", - ["Insomnia"] = ":insomnia:", - ["Iris"] = ":iris:", - ["iTerm"] = ":iterm:", - ["iTerm2"] = ":iterm:", - ["Jellyfin Media Player"] = ":jellyfin:", - ["Joplin"] = ":joplin:", - ["카카오톡"] = ":kakaotalk:", - ["KakaoTalk"] = ":kakaotalk:", - ["Kakoune"] = ":kakoune:", - ["KeePassXC"] = ":kee_pass_x_c:", - ["Secrets"] = ":one_password:", - ["Keyboard Maestro"] = ":keyboard_maestro:", - ["Keynote"] = ":keynote:", - ["Keynote 讲演"] = ":keynote:", - ["kitty"] = ":kitty:", - ["League of Legends"] = ":league_of_legends:", - ["LibreWolf"] = ":libre_wolf:", - ["Adobe Lightroom"] = ":lightroom:", - ["Lightroom Classic"] = ":lightroomclassic:", - ["LINE"] = ":line:", - ["Linear"] = ":linear:", - ["LM Studio"] = ":lm_studio:", - ["LocalSend"] = ":localsend:", - ["Logic Pro"] = ":logicpro:", - ["Logseq"] = ":logseq:", - ["Canary Mail"] = ":mail:", - ["HEY"] = ":mail:", - ["Mail"] = ":mail:", - ["Mailspring"] = ":mail:", - ["MailMate"] = ":mail:", - ["Superhuman"] = ":mail:", - ["邮件"] = ":mail:", - ["MAMP"] = ":mamp:", - ["MAMP PRO"] = ":mamp:", - ["Maps"] = ":maps:", - ["Google Maps"] = ":maps:", - ["Matlab"] = ":matlab:", - ["Mattermost"] = ":mattermost:", - ["Messages"] = ":messages:", - ["信息"] = ":messages:", - ["Nachrichten"] = ":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:", - ["Min"] = ":min_browser:", - ["Miro"] = ":miro:", - ["MongoDB Compass"] = ":mongodb:", - ["mpv"] = ":mpv:", - ["Mullvad Browser"] = ":mullvad_browser:", - ["Music"] = ":music:", - ["音乐"] = ":music:", - ["Musique"] = ":music:", - ["Neovide"] = ":neovide:", - ["neovide"] = ":neovide:", - ["Neovim"] = ":neovim:", - ["neovim"] = ":neovim:", - ["nvim"] = ":neovim:", - ["网易云音乐"] = ":netease_music:", - ["Noodl"] = ":noodl:", - ["Noodl Editor"] = ":noodl:", - ["NordVPN"] = ":nord_vpn:", - ["Notability"] = ":notability:", - ["Notes"] = ":notes:", - ["Notizen"] = ":notes:", - ["备忘录"] = ":notes:", - ["Notion"] = ":notion:", - ["Nova"] = ":nova:", - ["Numbers"] = ":numbers:", - ["Numbers 表格"] = ":numbers:", - ["Obsidian"] = ":obsidian:", - ["OBS"] = ":obsstudio:", - ["OmniFocus"] = ":omni_focus:", - ["1Password"] = ":one_password:", - ["ChatGPT"] = ":openai:", - ["OpenVPN Connect"] = ":openvpn_connect:", - ["Opera"] = ":opera:", - ["OrcaSlicer"] = ":orcaslicer:", - ["Orion"] = ":orion:", - ["Orion RC"] = ":orion:", - ["Pages"] = ":pages:", - ["Pages 文稿"] = ":pages:", - ["Parallels Desktop"] = ":parallels:", - ["Parsec"] = ":parsec:", - ["Preview"] = ":pdf:", - ["预览"] = ":pdf:", - ["Skim"] = ":pdf:", - ["zathura"] = ":pdf:", - ["Aperçu"] = ":pdf:", - ["PDF Expert"] = ":pdf_expert:", - ["Adobe Photoshop"] = ":photoshop:", - ["Pi-hole Remote"] = ":pihole:", - ["Pine"] = ":pine:", - ["Podcasts"] = ":podcasts:", - ["播客"] = ":podcasts:", - ["PomoDone App"] = ":pomodone:", - ["Postman"] = ":postman:", - ["PrusaSlicer"] = ":prusaslicer:", - ["SuperSlicer"] = ":prusaslicer:", - ["PyCharm"] = ":pycharm:", - ["QQ"] = ":qq:", - ["QQ音乐"] = ":qqmusic:", - ["QQMusic"] = ":qqmusic:", - ["Quantumult X"] = ":quantumult_x:", - ["qutebrowser"] = ":qute_browser:", - ["Raindrop.io"] = ":raindrop_io:", - ["Reeder"] = ":reeder5:", - ["Reminders"] = ":reminders:", - ["提醒事项"] = ":reminders:", - ["Rappels"] = ":reminders:", - ["Replit"] = ":replit:", - ["Rider"] = ":rider:", - ["JetBrains Rider"] = ":rider:", - ["Safari"] = ":safari:", - ["Safari浏览器"] = ":safari:", - ["Safari Technology Preview"] = ":safari:", - ["Sequel Ace"] = ":sequel_ace:", - ["Sequel Pro"] = ":sequel_pro:", - ["Setapp"] = ":setapp:", - ["SF Symbols"] = ":sf_symbols:", - ["Signal"] = ":signal:", - ["Sketch"] = ":sketch:", - ["Skype"] = ":skype:", - ["Slack"] = ":slack:", - ["Spark"] = ":spark:", - ["Spotify"] = ":spotify:", - ["Spotlight"] = ":spotlight:", - ["Sublime Text"] = ":sublime_text:", - ["Tana"] = ":tana:", - ["TeamSpeak 3"] = ":team_speak:", - ["Telegram"] = ":telegram:", - ["Terminal"] = ":terminal:", - ["终端"] = ":terminal:", - ["Typora"] = ":text:", - ["Microsoft To Do"] = ":things:", - ["Things"] = ":things:", - ["Thunderbird"] = ":thunderbird:", - ["TickTick"] = ":tick_tick:", - ["TIDAL"] = ":tidal:", - ["Tiny RDM"] = ":tinyrdm:", - ["Todoist"] = ":todoist:", - ["Toggl Track"] = ":toggl_track:", - ["Tor Browser"] = ":tor_browser:", - ["Tower"] = ":tower:", - ["Transmit"] = ":transmit:", - ["Trello"] = ":trello:", - ["Tweetbot"] = ":twitter:", - ["Twitter"] = ":twitter:", - ["MacVim"] = ":vim:", - ["Vim"] = ":vim:", - ["VimR"] = ":vim:", - ["Vivaldi"] = ":vivaldi:", - ["VLC"] = ":vlc:", - ["VMware Fusion"] = ":vmware_fusion:", - ["VSCodium"] = ":vscodium:", - ["Warp"] = ":warp:", - ["WebStorm"] = ":web_storm:", - ["微信"] = ":wechat:", - ["WeChat"] = ":wechat:", - ["企业微信"] = ":wecom:", - ["WeCom"] = ":wecom:", - ["WezTerm"] = ":wezterm:", - ["WhatsApp"] = ":whats_app:", - ["WhatsApp"] = ":whats_app:", - ["Xcode"] = ":xcode:", - ["Яндекс Музыка"] = ":yandex_music:", - ["Yuque"] = ":yuque:", - ["语雀"] = ":yuque:", - ["Zed"] = ":zed:", - ["Zeplin"] = ":zeplin:", - ["zoom.us"] = ":zoom:", - ["Zotero"] = ":zotero:", - ["Zulip"] = ":zulip:", - ["default"] = ":default:", + ["Live"] = "\u{f26c}", -- Assuming Ableton Live, using a music-related icon (Font Awesome) + ["Adobe Bridge 2024"] = "\u{e65f}", -- Adobe generic or bridge-like icon (Devicons) + ["Affinity Designer"] = "\u{e65e}", -- Design-related icon (approximation) + ["Affinity Designer 2"] = "\u{e65e}", -- Same as above + ["Affinity Photo"] = "\u{f03e}", -- Photo icon (Font Awesome) + ["Affinity Photo 2"] = "\u{f03e}", -- Same as above + ["Affinity Publisher"] = "\u{f1ea}", -- Newspaper/book icon (Font Awesome) + ["Affinity Publisher 2"] = "\u{f1ea}", -- Same as above + ["Airmail"] = "\u{f0e0}", -- Envelope icon (Font Awesome) + ["Alacritty"] = "\u{f120}", -- Terminal icon (Font Awesome) + ["Alfred Preferences"] = "\u{f013}", -- Gear icon for settings (Font Awesome) + ["Android Messages"] = "\u{e624}", -- Android SMS icon (Devicons) + ["Android Studio"] = "\u{e70c}", -- Android Studio icon (Devicons) + ["Anytype"] = "\u{f15c}", -- Generic document icon (Font Awesome) + ["App Eraser"] = "\u{f2ed}", -- Trash icon (Font Awesome) + ["App Store"] = "\u{f3ab}", -- Store-like icon (Font Awesome) + ["Arc"] = "\u{f7a0}", -- Browser-like arc icon (approximation) + ["Atom"] = "\u{e764}", -- Atom icon (Devicons) + ["Audacity"] = "\u{f025}", -- Audio icon (Font Awesome) + ["Bambu Studio"] = "\u{f5ab}", -- 3D print-related icon (approximation) + ["MoneyMoney"] = "\u{f53a}", -- Bank icon (Font Awesome) + ["Bear"] = "\u{f1fc}", -- Writing/pencil icon (Font Awesome) + ["BetterTouchTool"] = "\u{f25a}", -- Tool icon (Font Awesome) + ["Bilibili"] = "\u{f167}", -- Video platform (YouTube-like, Font Awesome) + ["哔哩哔哩"] = "\u{f167}", -- Same as Bilibili + ["Bitwarden"] = "\u{f023}", -- Lock icon (Font Awesome) + ["Blender"] = "\u{e728}", -- Blender icon (Devicons) + ["BluOS Controller"] = "\u{f001}", -- Music icon (Font Awesome) + ["Calibre"] = "\u{f02d}", -- Book icon (Font Awesome) + ["Brave Browser"] = "\u{e77d}", -- Brave icon (Devicons) + ["Calculator"] = "\u{f1ec}", -- Calculator icon (Font Awesome) + ["Soulver 3"] = "\u{f1ec}", -- Same as above + ["Calculette"] = "\u{f1ec}", -- Same as above + ["Calendar"] = "\u{f073}", -- Calendar icon (Font Awesome) + ["日历"] = "\u{f073}", -- Same as above + ["Fantastical"] = "\u{f073}", -- Same as above + ["Cron"] = "\u{f073}", -- Same as above + ["Amie"] = "\u{f073}", -- Same as above + ["Calendrier"] = "\u{f073}", -- Same as above + ["Notion Calendar"] = "\u{f073}", -- Same as above + ["Caprine"] = "\u{f086}", -- Chat icon (Font Awesome) + ["Citrix Workspace"] = "\u{f0c2}", -- Cloud icon (Font Awesome) + ["Citrix Viewer"] = "\u{f0c2}", -- Same as above + ["ClickUp"] = "\u{f0ae}", -- Task list icon (Font Awesome) + ["Code"] = "\u{e71e}", -- VS Code icon (Devicons) + ["Code - Insiders"] = "\u{e71e}", -- Same as above + ["Color Picker"] = "\u{f1fb}", -- Eye dropper icon (Font Awesome) + ["数码测色计"] = "\u{f1fb}", -- Same as above + ["CotEditor"] = "\u{f044}", -- Edit icon (Font Awesome) + ["Cypress"] = "\u{e725}", -- Cypress icon (Devicons) + ["DataGrip"] = "\u{e7b4}", -- JetBrains DB icon (Devicons) + ["DataSpell"] = "\u{e7b2}", -- JetBrains Data icon (Devicons) + ["DaVinci Resolve"] = "\u{f03d}", -- Video icon (Font Awesome) + ["Default"] = "\u{f111}", -- Circle/default icon (Font Awesome) + ["CleanMyMac X"] = "\u{f2f9}", -- Broom/cleaning icon (Font Awesome) + ["DEVONthink 3"] = "\u{f15c}", -- Document icon (Font Awesome) + ["DingTalk"] = "\u{f075}", -- Comment/chat icon (Font Awesome) + ["钉钉"] = "\u{f075}", -- Same as above + ["阿里钉"] = "\u{f075}", -- Same as above + ["Discord"] = "\u{f392}", -- Discord icon (Font Awesome) + ["Discord Canary"] = "\u{f392}", -- Same as above + ["Discord PTB"] = "\u{f392}", -- Same as above + ["Docker"] = "\u{f395}", -- Docker icon (Font Awesome) + ["Docker Desktop"] = "\u{f395}", -- Same as above + ["GrandTotal"] = "\u{f155}", -- Dollar sign (Font Awesome) + ["Receipts"] = "\u{f155}", -- Same as above + ["Double Commander"] = "\u{f07b}", -- Folder icon (Font Awesome) + ["Drafts"] = "\u{f15b}", -- Draft icon (Font Awesome) + ["Dropbox"] = "\u{f16b}", -- Dropbox icon (Font Awesome) + ["Element"] = "\u{f086}", -- Chat icon (Font Awesome) + ["Emacs"] = "\u{e632}", -- Emacs icon (Devicons) + ["Evernote Legacy"] = "\u{f24d}", -- Evernote icon (Font Awesome) + ["FaceTime"] = "\u{f095}", -- Phone icon (Font Awesome) + ["FaceTime 通话"] = "\u{f095}", -- Same as above + ["Figma"] = "\u{f699}", -- Figma icon (Font Awesome) + ["Final Cut Pro"] = "\u{f03d}", -- Video icon (Font Awesome) + ["Finder"] = "\u{f07c}", -- Folder open icon (Font Awesome) + ["访达"] = "\u{f07c}", -- Same as above + ["Firefox"] = "\u{e75c}", -- Firefox icon (Devicons) + ["Firefox Developer Edition"] = "\u{e75c}", -- Same as above + ["Firefox Nightly"] = "\u{e75c}", -- Same as above + ["Folx"] = "\u{f019}", -- Download icon (Font Awesome) + ["Fusion"] = "\u{f126}", -- Code branch icon (Font Awesome) + ["System Preferences"] = "\u{f013}", -- Gear icon (Font Awesome) + ["System Settings"] = "\u{f013}", -- Same as above + ["Systemeinstellungen"] = "\u{f013}", -- Same as above + ["系统设置"] = "\u{f013}", -- Same as above + ["Réglages Système"] = "\u{f013}", -- Same as above + ["GitHub Desktop"] = "\u{f09b}", -- GitHub icon (Font Awesome) + ["Godot"] = "\u{e73b}", -- Godot icon (Devicons) + ["GoLand"] = "\u{e724}", -- GoLand icon (Devicons) + ["Chromium"] = "\u{e743}", -- Chromium icon (Devicons) + ["Google Chrome"] = "\u{e743}", -- Chrome icon (Devicons) + ["Google Chrome Canary"] = "\u{e743}", -- Same as above + ["Grammarly Editor"] = "\u{f044}", -- Edit icon (Font Awesome) + ["Home Assistant"] = "\u{f015}", -- Home icon (Font Awesome) + ["Hyper"] = "\u{f120}", -- Terminal icon (Font Awesome) + ["IntelliJ IDEA"] = "\u{e7b5}", -- IntelliJ icon (Devicons) + ["Inkdrop"] = "\u{f15c}", -- Note icon (Font Awesome) + ["Inkscape"] = "\u{e634}", -- Inkscape icon (Devicons) + ["Insomnia"] = "\u{f186}", -- Moon/sleep icon (Font Awesome) + ["Iris"] = "\u{f06e}", -- Eye icon (Font Awesome) + ["iTerm"] = "\u{f120}", -- Terminal icon (Font Awesome) + ["iTerm2"] = "\u{f120}", -- Same as above + ["Jellyfin Media Player"] = "\u{f144}", -- Play circle icon (Font Awesome) + ["Joplin"] = "\u{f15c}", -- Note icon (Font Awesome) + ["카카오톡"] = "\u{f075}", -- Chat icon (Font Awesome) + ["KakaoTalk"] = "\u{f075}", -- Same as above + ["Kakoune"] = "\u{f044}", -- Edit icon (Font Awesome) + ["KeePassXC"] = "\u{f084}", -- Key icon (Font Awesome) + ["Secrets"] = "\u{f023}", -- Lock icon (Font Awesome) + ["Keyboard Maestro"] = "\u{f11c}", -- Keyboard icon (Font Awesome) + ["Keynote"] = "\u{f1ea}", -- Presentation icon (Font Awesome) + ["Keynote 讲演"] = "\u{f1ea}", -- Same as above + ["kitty"] = "\u{f120}", -- Terminal icon (Font Awesome) + ["League of Legends"] = "\u{f11b}", -- Gamepad icon (Font Awesome) + ["LibreWolf"] = "\u{e75c}", -- Firefox-like icon (Devicons) + ["Adobe Lightroom"] = "\u{e65b}", -- Lightroom icon (Devicons) + ["Lightroom Classic"] = "\u{e65b}", -- Same as above + ["LINE"] = "\u{f3c0}", -- LINE icon (Font Awesome) + ["Linear"] = "\u{f0ae}", -- Task icon (Font Awesome) + ["LM Studio"] = "\u{f15c}", -- Generic studio icon (Font Awesome) + ["LocalSend"] = "\u{f019}", -- Download/share icon (Font Awesome) + ["Logic Pro"] = "\u{f001}", -- Music icon (Font Awesome) + ["Logseq"] = "\u{f15c}", -- Note icon (Font Awesome) + ["Canary Mail"] = "\u{f0e0}", -- Email icon (Font Awesome) + ["HEY"] = "\u{f0e0}", -- Same as above + ["Mail"] = "\u{f0e0}", -- Same as above + ["Mailspring"] = "\u{f0e0}", -- Same as above + ["MailMate"] = "\u{f0e0}", -- Same as above + ["Superhuman"] = "\u{f0e0}", -- Same as above + ["邮件"] = "\u{f0e0}", -- Same as above + ["MAMP"] = "\u{f233}", -- Server icon (Font Awesome) + ["MAMP PRO"] = "\u{f233}", -- Same as above + ["Maps"] = "\u{f3c5}", -- Map icon (Font Awesome) + ["Google Maps"] = "\u{f3c5}", -- Same as above + ["Matlab"] = "\u{f0ae}", -- Math/task icon (Font Awesome) + ["Mattermost"] = "\u{f086}", -- Chat icon (Font Awesome) + ["Messages"] = "\u{f0e5}", -- Comment dots icon (Font Awesome) + ["信息"] = "\u{f0e5}", -- Same as above + ["Nachrichten"] = "\u{f0e5}", -- Same as above + ["Messenger"] = "\u{f39f}", -- Messenger icon (Font Awesome) + ["Microsoft Edge"] = "\u{e77f}", -- Edge icon (Devicons) + ["Microsoft Excel"] = "\u{e67c}", -- Excel icon (Devicons) + ["Microsoft Outlook"] = "\u{e67e}", -- Outlook icon (Devicons) + ["Microsoft PowerPoint"] = "\u{e67f}", -- PowerPoint icon (Devicons) + ["Microsoft Remote Desktop"] = "\u{f108}", -- Desktop icon (Font Awesome) + ["Microsoft Teams"] = "\u{f4b7}", -- Teams icon (Font Awesome) + ["Microsoft Teams (work or school)"] = "\u{f4b7}", -- Same as above + ["Microsoft Word"] = "\u{e680}", -- Word icon (Devicons) + ["Min"] = "\u{f26a}", -- Browser-like icon (Font Awesome) + ["Miro"] = "\u{f12f}", -- Board icon (Font Awesome) + ["MongoDB Compass"] = "\u{e63e}", -- MongoDB icon (Devicons) + ["mpv"] = "\u{f144}", -- Play circle icon (Font Awesome) + ["Mullvad Browser"] = "\u{f503}", -- Shield/anon icon (Font Awesome) + ["Music"] = "\u{f001}", -- Music icon (Font Awesome) + ["音乐"] = "\u{f001}", -- Same as above + ["Musique"] = "\u{f001}", -- Same as above + ["Neovide"] = "\u{e7c5}", -- Vim-like icon (Devicons) + ["neovide"] = "\u{e7c5}", -- Same as above + ["Neovim"] = "\u{e7c5}", -- Neovim icon (Devicons) + ["neovim"] = "\u{e7c5}", -- Same as above + ["nvim"] = "\u{e7c5}", -- Same as above + ["网易云音乐"] = "\u{f001}", -- Music icon (Font Awesome) + ["Noodl"] = "\u{f0c5}", -- Nodes/connection icon (Font Awesome) + ["Noodl Editor"] = "\u{f0c5}", -- Same as above + ["NordVPN"] = "\u{f023}", -- Lock/VPN icon (Font Awesome) + ["Notability"] = "\u{f15c}", -- Note icon (Font Awesome) + ["Notes"] = "\u{f15c}", -- Note icon (Font Awesome) + ["Notizen"] = "\u{f15c}", -- Same as above + ["备忘录"] = "\u{f15c}", -- Same as above + ["Notion"] = "\u{e727}", -- Notion icon (Devicons) + ["Nova"] = "\u{f005}", -- Star/new icon (Font Awesome) + ["Numbers"] = "\u{f1ec}", -- Table/calc icon (Font Awesome) + ["Numbers 表格"] = "\u{f1ec}", -- Same as above + ["Obsidian"] = "\u{e73e}", -- Obsidian icon (Devicons) + ["OBS"] = "\u{f03d}", -- Video/stream icon (Font Awesome) + ["OmniFocus"] = "\u{f0ae}", -- Task icon (Font Awesome) + ["1Password"] = "\u{f023}", -- Lock icon (Font Awesome) + ["ChatGPT"] = "\u{f0c9}", -- AI/chat icon (Font Awesome) + ["OpenVPN Connect"] = "\u{f023}", -- Lock/VPN icon (Font Awesome) + ["Opera"] = "\u{e77e}", -- Opera icon (Devicons) + ["OrcaSlicer"] = "\u{f5ab}", -- 3D print icon (Font Awesome) + ["Orion"] = "\u{f135}", -- Rocket/browser icon (Font Awesome) + ["Orion RC"] = "\u{f135}", -- Same as above + ["Pages"] = "\u{f15b}", -- Document icon (Font Awesome) + ["Pages 文稿"] = "\u{f15b}", -- Same as above + ["Parallels Desktop"] = "\u{f108}", -- Desktop icon (Font Awesome) + ["Parsec"] = "\u{f11b}", -- Gamepad/remote icon (Font Awesome) + ["Preview"] = "\u{f1c1}", -- PDF icon (Font Awesome) + ["预览"] = "\u{f1c1}", -- Same as above + ["Skim"] = "\u{f1c1}", -- Same as above + ["zathura"] = "\u{f1c1}", -- Same as above + ["Aperçu"] = "\u{f1c1}", -- Same as above + ["PDF Expert"] = "\u{f1c1}", -- Same as above + ["Adobe Photoshop"] = "\u{e65d}", -- Photoshop icon (Devicons) + ["Pi-hole Remote"] = "\u{f0c2}", -- Cloud/network icon (Font Awesome) + ["Pine"] = "\u{f075}", -- Chat/email icon (Font Awesome) + ["Podcasts"] = "\u{f2ce}", -- Podcast icon (Font Awesome) + ["播客"] = "\u{f2ce}", -- Same as above + ["PomoDone App"] = "\u{f017}", -- Clock icon (Font Awesome) + ["Postman"] = "\u{f0ec}", -- API/send icon (Font Awesome) + ["PrusaSlicer"] = "\u{f5ab}", -- 3D print icon (Font Awesome) + ["SuperSlicer"] = "\u{f5ab}", -- Same as above + ["PyCharm"] = "\u{e706}", -- PyCharm icon (Devicons) + ["QQ"] = "\u{f075}", -- Chat icon (Font Awesome) + ["QQ音乐"] = "\u{f001}", -- Music icon (Font Awesome) + ["QQMusic"] = "\u{f001}", -- Same as above + ["Quantumult X"] = "\u{f0c2}", -- Network/proxy icon (Font Awesome) + ["qutebrowser"] = "\u{f26a}", -- Browser icon (Font Awesome) + ["Raindrop.io"] = "\u{f5c6}", -- Bookmark icon (Font Awesome) + ["Reeder"] = "\u{f09e}", -- RSS icon (Font Awesome) + ["Reminders"] = "\u{f0f3}", -- Bell/reminder icon (Font Awesome) + ["提醒事项"] = "\u{f0f3}", -- Same as above + ["Rappels"] = "\u{f0f3}", -- Same as above + ["Replit"] = "\u{f121}", -- Code icon (Font Awesome) + ["Rider"] = "\u{e7b7}", -- Rider icon (Devicons) + ["JetBrains Rider"] = "\u{e7b7}", -- Same as above + ["Safari"] = "\u{e74f}", -- Safari icon (Devicons) + ["Safari浏览器"] = "\u{e74f}", -- Same as above + ["Safari Technology Preview"] = "\u{e74f}", -- Same as above + ["Sequel Ace"] = "\u{f1c0}", -- Database icon (Font Awesome) + ["Sequel Pro"] = "\u{f1c0}", -- Same as above + ["Setapp"] = "\u{f019}", -- Download/app icon (Font Awesome) + ["SF Symbols"] = "\u{f12e}", -- Symbol/icon icon (Font Awesome) + ["Signal"] = "\u{f086}", -- Chat icon (Font Awesome) + ["Sketch"] = "\u{e735}", -- Sketch icon (Devicons) + ["Skype"] = "\u{f17e}", -- Skype icon (Font Awesome) + ["Slack"] = "\u{f198}", -- Slack icon (Font Awesome) + ["Spark"] = "\u{f0e0}", -- Email icon (Font Awesome) + ["Spotify"] = "\u{f1bc}", -- Spotify icon (Font Awesome) + ["Spotlight"] = "\u{f002}", -- Search icon (Font Awesome) + ["Sublime Text"] = "\u{e7aa}", -- Sublime Text icon (Devicons) + ["Tana"] = "\u{f15c}", -- Note icon (Font Awesome) + ["TeamSpeak 3"] = "\u{f4b6}", -- Teamspeak icon (Font Awesome) + ["Telegram"] = "\u{f2c6}", -- Telegram icon (Font Awesome) + ["Terminal"] = "\u{f120}", -- Terminal icon (Font Awesome) + ["终端"] = "\u{f120}", -- Same as above + ["Typora"] = "\u{f15c}", -- Text icon (Font Awesome) + ["Microsoft To Do"] = "\u{f0ae}", -- Task icon (Font Awesome) + ["Things"] = "\u{f0ae}", -- Same as above + ["Thunderbird"] = "\u{e716}", -- Thunderbird icon (Devicons) + ["TickTick"] = "\u{f017}", -- Clock/task icon (Font Awesome) + ["TIDAL"] = "\u{f001}", -- Music icon (Font Awesome) + ["Tiny RDM"] = "\u{f1c0}", -- Database icon (Font Awesome) + ["Todoist"] = "\u{f0ae}", -- Task icon (Font Awesome) + ["Toggl Track"] = "\u{f017}", -- Clock icon (Font Awesome) + ["Tor Browser"] = "\u{f503}", -- Anon/shield icon (Font Awesome) + ["Tower"] = "\u{f126}", -- Git branch icon (Font Awesome) + ["Transmit"] = "\u{f019}", -- Download/upload icon (Font Awesome) + ["Trello"] = "\u{f181}", -- Trello icon (Font Awesome) + ["Tweetbot"] = "\u{f099}", -- Twitter icon (Font Awesome) + ["Twitter"] = "\u{f099}", -- Same as above + ["MacVim"] = "\u{e7c5}", -- Vim icon (Devicons) + ["Vim"] = "\u{e7c5}", -- Same as above + ["VimR"] = "\u{e7c5}", -- Same as above + ["Vivaldi"] = "\u{e77b}", -- Vivaldi icon (Devicons) + ["VLC"] = "\u{f144}", -- Play circle icon (Font Awesome) + ["VMware Fusion"] = "\u{f108}", -- Desktop/VM icon (Font Awesome) + ["VSCodium"] = "\u{e71e}", -- VS Code-like icon (Devicons) + ["Warp"] = "\u{f120}", -- Terminal icon (Font Awesome) + ["WebStorm"] = "\u{e7b0}", -- WebStorm icon (Devicons) + ["微信"] = "\u{f1d7}", -- WeChat icon (Font Awesome) + ["WeChat"] = "\u{f1d7}", -- Same as above + ["企业微信"] = "\u{f1d7}", -- Same as above (WeCom) + ["WeCom"] = "\u{f1d7}", -- Same as above + ["WezTerm"] = "\u{f120}", -- Terminal icon (Font Awesome) + ["WhatsApp"] = "\u{f232}", -- WhatsApp icon (Font Awesome) + ["WhatsApp"] = "\u{f232}", -- Same as above + ["Xcode"] = "\u{e711}", -- Xcode icon (Devicons) + ["Яндекс Музыка"] = "\u{f001}", -- Music icon (Font Awesome) + ["Yuque"] = "\u{f15c}", -- Note icon (Font Awesome) + ["语雀"] = "\u{f15c}", -- Same as above + ["Zed"] = "\u{f044}", -- Edit icon (Font Awesome) + ["Zeplin"] = "\u{f280}", -- Design/board icon (Font Awesome) + ["zoom.us"] = "\u{f03d}", -- Video icon (Font Awesome) + ["Zotero"] = "\u{f02d}", -- Book/reference icon (Font Awesome) + ["Zulip"] = "\u{f086}", -- Chat icon (Font Awesome) + ["default"] = "\u{f111}", -- Circle/default icon (Font Awesome) } local text <const> = { diff --git a/.config/sketchybar/constants.lua b/.config/sketchybar/constants.lua index ef3af8d..38fa85a 100644 --- a/.config/sketchybar/constants.lua +++ b/.config/sketchybar/constants.lua @@ -1,9 +1,13 @@ local events <const> = { AEROSPACE_WORKSPACE_CHANGED = "aerospace_workspace_changed", + AEROSPACE_WINDOWS_CHANGED = "aerospace_windows_changed", + SKETCHY_WINDOWS_CHANGED = "space_windows_changed", AEROSPACE_SWITCH = "aerospace_switch", SWAP_MENU_AND_SPACES = "swap_menu_and_spaces", FRONT_APP_SWITCHED = "front_app_switched", UPDATE_WINDOWS = "update_windows", + UPDATE_MOVED_WINDOWS = "update_moved_windows", + USER_TRIGGER_FRONTAPP = "manual_trigger_front_app", SEND_MESSAGE = "send_message", HIDE_MESSAGE = "hide_message", } diff --git a/.config/sketchybar/items/front_apps.lua b/.config/sketchybar/items/front_apps.lua index 30fbd25..337053f 100644 --- a/.config/sketchybar/items/front_apps.lua +++ b/.config/sketchybar/items/front_apps.lua @@ -1,6 +1,8 @@ local constants = require("constants") local settings = require("config.settings") +M = {} + local frontApps = {} sbar.add("bracket", constants.items.FRONT_APPS, {}, { position = "left" }) @@ -11,6 +13,7 @@ local frontAppWatcher = sbar.add("item", { }) local function selectFocusedWindow(frontAppName) + M["frontapp"] = frontAppName for appName, app in pairs(frontApps) do local isSelected = appName == frontAppName local color = isSelected and settings.colors.orange or settings.colors.white @@ -67,3 +70,5 @@ frontAppWatcher:subscribe(constants.events.UPDATE_WINDOWS, function() end) getWindows() + +return M diff --git a/.config/sketchybar/items/menu_spaces_toggle.lua b/.config/sketchybar/items/menu_spaces_toggle.lua index 643336d..b77727b 100644 --- a/.config/sketchybar/items/menu_spaces_toggle.lua +++ b/.config/sketchybar/items/menu_spaces_toggle.lua @@ -4,10 +4,10 @@ local settings = require("config.settings") sbar.add("event", constants.events.SWAP_MENU_AND_SPACES) local function switchToggle(menuToggle) - local isShowingMenu = menuToggle:query().icon.value == settings.icons.text.switch.on + local isShowingMenu = menuToggle:query().icon.value == settings.icons.text.nerdfont.switch.on menuToggle:set({ - icon = isShowingMenu and settings.icons.text.switch.off or settings.icons.text.switch.on, + icon = isShowingMenu and settings.icons.text.nerdfont.switch.off or settings.icons.text.nerdfont.switch.on, label = isShowingMenu and "Menus" or "Spaces", }) diff --git a/.config/sketchybar/items/spaces.lua b/.config/sketchybar/items/spaces.lua index 7595df5..28b1ebb 100644 --- a/.config/sketchybar/items/spaces.lua +++ b/.config/sketchybar/items/spaces.lua @@ -1,3 +1,4 @@ +-- TODO: Highlighting is kinda fixed, multiple windows in one space label is broken, last two things, but annoying local constants = require("constants") local settings = require("config.settings") @@ -13,16 +14,6 @@ local currentWorkspaceWatcher = sbar.add("item", { updates = true, }) --- Modify this file with Visual Studio Code - at least vim does have problems with the icons --- copy "Icons" from the nerd fonts cheat sheet and replace icon and name accordingly below --- https://www.nerdfonts.com/cheat-sheet -local spaceConfigs <const> = { - ["1"] = { icon = "", name = "iTerm2" }, - ["2"] = { icon = "", name = "Firefox" }, - ["3"] = { icon = "", name = "Notes" }, - ["4"] = { icon = "", name = "Secrets" }, -} - local function selectCurrentWorkspace(focusedWorkspaceName) for sid, item in pairs(spaces) do if item ~= nil then @@ -35,7 +26,7 @@ local function selectCurrentWorkspace(focusedWorkspaceName) end end - sbar.trigger(constants.events.UPDATE_WINDOWS) + -- sbar.trigger(constants.events.UPDATE_WINDOWS) end local function findAndSelectCurrentWorkspace() @@ -47,16 +38,16 @@ end local function addWorkspaceItem(workspaceName) local spaceName = constants.items.SPACES .. "." .. workspaceName - local spaceConfig = spaceConfigs[workspaceName] spaces[spaceName] = sbar.add("item", spaceName, { label = { width = 0, padding_left = 0, - string = spaceConfig.name, + string = "Empty", }, icon = { - string = spaceConfig.icon or settings.icons.apps["default"], + string = workspaceName, + font = settings.fonts.icons(), color = settings.colors.white, }, background = { @@ -82,24 +73,128 @@ local function addWorkspaceItem(workspaceName) }) end -local function createWorkspaces() +local function updateWorkspaceItem(workspaceWindows, spacePos) + local space = constants.items.SPACES .. "." .. spacePos + -- spaces[space] = nil + -- sbar.remove("/" .. constants.items.SPACES .. "\\." .. spacePos .. "/") + local foundWindows = {} + if workspaceWindows then + foundWindows = workspaceWindows:gmatch("[^\n]+") + end + + local windowsInSpace = {} + local firstIcon = nil + local firstWinID = nil + local cnt = 0 + if foundWindows ~= nil and foundWindows ~= "" then + for window in foundWindows do + cnt = cnt + 1 + local parsedWindow = {} + for key, value in string.gmatch(window, "(%w+)=([%w%s]+)") do + parsedWindow[key] = value + end + + local windowName = parsedWindow["name"] + local icon = settings.icons.apps[windowName] or settings.icons.apps["default"] + table.insert(windowsInSpace, windowName) + + if cnt == 1 then + firstIcon = icon + firstWinID = parsedWindow["id"] + end + end + elseif foundWindows == "" then + print("!!! no windows in " .. space .. "moving along !!!") + else + print("nothing works anymore... and your gonna carry that weight") + end + + spaces[space]:set("item", space, { + label = { + width = 0, + padding_left = 0, + string = table.concat(windowsInSpace, " ") or "Empty", + }, + icon = { + string = firstIcon or settings.icons.apps["default"], + font = settings.fonts.icons(), + color = settings.colors.white, + }, + background = { + color = settings.colors.bg1, + }, + click_script = "aerospace focus --window-id " .. tostring(firstWinID), + }) + + spaces[space]:subscribe("mouse.entered", function(env) + sbar.animate("tanh", 30, function() + spaces[space]:set({ label = { width = "dynamic" } }) + end) + end) + + spaces[space]:subscribe("mouse.exited", function(env) + sbar.animate("tanh", 30, function() + spaces[space]:set({ label = { width = 0 } }) + end) + end) + + sbar.add("item", space .. ".padding", { + width = settings.dimensions.paddings.label, + }) +end + +local function triggerWorkspaceUpdates(focusedWorkSpace) sbar.exec(constants.aerospace.LIST_ALL_WORKSPACES, function(workspacesOutput) - for workspaceName in workspacesOutput:gmatch("[^\r\n]+") do - addWorkspaceItem(workspaceName) + -- sbar.remove("/" .. constants.items.FRONT_APPS .. "\\.*/") + -- sbar.remove("/" .. constants.items.SPACES .. "\\.*/") + workspacesOutput = workspacesOutput:gmatch("[^\r\n]+") + + for wpName in workspacesOutput do + addWorkspaceItem(wpName) + end + + -- so sbar.exec() doesn't trigger the function if output is nothing from cmd; lazy workaround + for i = 1, 5, 1 do + sbar.exec( + "aerospace list-windows --workspace " .. i .. ' --format "id=%{window-id}, name=%{app-name}"', + function(workspaceWindows) + updateWorkspaceItem(workspaceWindows, i) + end + ) + end + + if focusedWorkSpace then + selectCurrentWorkspace(focusedWorkSpace) end + end) +end - findAndSelectCurrentWorkspace() +local function createWorkspaces() + sbar.exec(constants.aerospace.LIST_ALL_WORKSPACES, function(workspacesOutput) + sbar.exec('aerospace list-windows --all --format "id=%{window-id}, name=%{app-name}"', function(anyWindows) + triggerWorkspaceUpdates() + end) + -- if ~tableContains(sbar.query("items"), "workspaces.1") then + -- print() + -- for workspaceName in workspacesOutput:gmatch("[^\r\n]+") do + -- print("addWorkspaceItem(workspaceName)") + -- addWorkspaceItem(workspaceName) + -- end + -- end end) + findAndSelectCurrentWorkspace() end +-- that button on the left side swapWatcher:subscribe(constants.events.SWAP_MENU_AND_SPACES, function(env) local isShowingSpaces = env.isShowingMenu == "off" and true or false sbar.set("/" .. constants.items.SPACES .. "\\..*/", { drawing = isShowingSpaces }) end) +-- highlighting currentWorkspaceWatcher:subscribe(constants.events.AEROSPACE_WORKSPACE_CHANGED, function(env) - selectCurrentWorkspace(env.FOCUSED_WORKSPACE) - sbar.trigger(constants.events.UPDATE_WINDOWS) + triggerWorkspaceUpdates(env.FOCUSED_WORKSPACE) end) +-- entry point createWorkspaces() |
