diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..dc1cae9 Binary files /dev/null and b/.DS_Store differ diff --git a/aerospace/.config/aerospace/aerospace.toml b/aerospace/.config/aerospace/aerospace.toml new file mode 100644 index 0000000..0efbc60 --- /dev/null +++ b/aerospace/.config/aerospace/aerospace.toml @@ -0,0 +1,184 @@ +# Place a copy of this config to ~/.aerospace.toml +# After that, you can edit ~/.aerospace.toml to your liking + +# Config version for compatibility and deprecations +# Fallback value (if you omit the key): config-version = 1 +config-version = 2 + +# You can use it to add commands that run after AeroSpace startup. +# Available commands : https://nikitabobko.github.io/AeroSpace/commands +after-startup-command = [] + +# Start AeroSpace at login +start-at-login = false + +# Normalizations. See: https://nikitabobko.github.io/AeroSpace/guide#normalization +enable-normalization-flatten-containers = true +enable-normalization-opposite-orientation-for-nested-containers = true + +# See: https://nikitabobko.github.io/AeroSpace/guide#layouts +# The 'accordion-padding' specifies the size of accordion padding +# You can set 0 to disable the padding feature +accordion-padding = 30 + +# Possible values: tiles|accordion +default-root-container-layout = 'tiles' + +# Possible values: horizontal|vertical|auto +# 'auto' means: wide monitor (anything wider than high) gets horizontal orientation, +# tall monitor (anything higher than wide) gets vertical orientation +default-root-container-orientation = 'auto' + +# Mouse follows focus when focused monitor changes +# Drop it from your config, if you don't like this behavior +# See https://nikitabobko.github.io/AeroSpace/guide#on-focus-changed-callbacks +# See https://nikitabobko.github.io/AeroSpace/commands#move-mouse +# Fallback value (if you omit the key): on-focused-monitor-changed = [] +on-focused-monitor-changed = ['move-mouse monitor-lazy-center'] + +# You can effectively turn off macOS "Hide application" (cmd-h) feature by toggling this flag +# Useful if you don't use this macOS feature, but accidentally hit cmd-h or cmd-alt-h key +# Also see: https://nikitabobko.github.io/AeroSpace/goodies#disable-hide-app +automatically-unhide-macos-hidden-apps = true + +# List of workspaces that should stay alive even when they contain no windows, +# even when they are invisible. +# This config option is only available since 'config-version = 2' +# Fallback value (if you omit the key): persistent-workspaces = [] +persistent-workspaces = ["1", "2", "3", "4", "5", "6", "7", "8", "9"] + +# A callback that runs every time binding mode changes +# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes +# See: https://nikitabobko.github.io/AeroSpace/commands#mode +on-mode-changed = [] + +on-focus-changed = [ + "exec-and-forget osascript -e 'tell application id \"tracesOf.Uebersicht\" to refresh widget id \"simple-bar-index-jsx\"'", +] +exec-on-workspace-change = [ + '/bin/zsh', + '-c', + '/usr/bin/osascript -e "tell application id \"tracesOf.Uebersicht\" to refresh widget id \"simple-bar-index-jsx\""', +] + +# Possible values: (qwerty|dvorak|colemak) +# See https://nikitabobko.github.io/AeroSpace/guide#key-mapping +[key-mapping] + preset = 'qwerty' + +# Gaps between windows (inner-*) and between monitor edges (outer-*). +# Possible values: +# - Constant: gaps.outer.top = 8 +# - Per monitor: gaps.outer.top = [{ monitor.main = 16 }, { monitor."some-pattern" = 32 }, 24] +# In this example, 24 is a default value when there is no match. +# Monitor pattern is the same as for 'workspace-to-monitor-force-assignment'. +# See: +# https://nikitabobko.github.io/AeroSpace/guide#assign-workspaces-to-monitors +[gaps] + inner.horizontal = 16 + inner.vertical = 16 + outer.left = 12 + outer.bottom = 12 + outer.top = 40 + outer.right = 12 + +# 'main' binding mode declaration +# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes +# 'main' binding mode must be always presented +# Fallback value (if you omit the key): mode.main.binding = {} +[mode.main.binding] + + # All possible keys: + # - Letters. a, b, c, ..., z + # - Numbers. 0, 1, 2, ..., 9 + # - Keypad numbers. keypad0, keypad1, keypad2, ..., keypad9 + # - F-keys. f1, f2, ..., f20 + # - Special keys. minus, equal, period, comma, slash, backslash, quote, semicolon, + # backtick, leftSquareBracket, rightSquareBracket, space, enter, esc, + # backspace, tab, pageUp, pageDown, home, end, forwardDelete, + # sectionSign (ISO keyboards only, european keyboards only) + # - Keypad special. keypadClear, keypadDecimalMark, keypadDivide, keypadEnter, keypadEqual, + # keypadMinus, keypadMultiply, keypadPlus + # - Arrows. left, down, up, right + + # All possible modifiers: cmd, alt, ctrl, shift + + # All possible commands: https://nikitabobko.github.io/AeroSpace/commands + + # See: https://nikitabobko.github.io/AeroSpace/commands#exec-and-forget + # You can uncomment the following lines to open up terminal with alt + enter shortcut + # (like in i3) + # alt-enter = '''exec-and-forget osascript -e ' + # tell application "Terminal" + # do script + # activate + # end tell' + # ''' + + # See: https://nikitabobko.github.io/AeroSpace/commands#layout + alt-slash = 'layout tiles horizontal vertical' + alt-comma = 'layout accordion horizontal vertical' + + # See: https://nikitabobko.github.io/AeroSpace/commands#focus + cmd-h = 'focus left' + cmd-j = 'focus down' + cmd-k = 'focus up' + cmd-l = 'focus right' + + # See: https://nikitabobko.github.io/AeroSpace/commands#move + cmd-shift-h = 'move left' + cmd-shift-j = 'move down' + cmd-shift-k = 'move up' + cmd-shift-l = 'move right' + + # See: https://nikitabobko.github.io/AeroSpace/commands#resize + cmd-o= 'resize smart -50' + cmd-p= 'resize smart +50' + + cmd-f = "fullscreen" + + # See: https://nikitabobko.github.io/AeroSpace/commands#workspace + cmd-1 = 'workspace 1' + cmd-2 = 'workspace 2' + cmd-3 = 'workspace 3' + cmd-4 = 'workspace 4' + cmd-5 = 'workspace 5' + cmd-6 = 'workspace 6' + cmd-7 = 'workspace 7' + cmd-8 = 'workspace 8' + cmd-9 = 'workspace 9' + + # See: https://nikitabobko.github.io/AeroSpace/commands#move-node-to-workspace + cmd-shift-1 = 'move-node-to-workspace 1' + cmd-shift-2 = 'move-node-to-workspace 2' + cmd-shift-3 = 'move-node-to-workspace 3' + cmd-shift-4 = 'move-node-to-workspace 4' + cmd-shift-5 = 'move-node-to-workspace 5' + cmd-shift-6 = 'move-node-to-workspace 6' + cmd-shift-7 = 'move-node-to-workspace 7' + cmd-shift-8 = 'move-node-to-workspace 8' + cmd-shift-9 = 'move-node-to-workspace 9' + + # See: https://nikitabobko.github.io/AeroSpace/commands#workspace-back-and-forth + cmd-tab = 'workspace-back-and-forth' + # See: https://nikitabobko.github.io/AeroSpace/commands#move-workspace-to-monitor + cmd-shift-tab = 'move-workspace-to-monitor --wrap-around next' + + # See: https://nikitabobko.github.io/AeroSpace/commands#mode + cmd-shift-semicolon = 'mode service' + +# 'service' binding mode declaration. +# See: https://nikitabobko.github.io/AeroSpace/guide#binding-modes +[mode.service.binding] + esc = ['reload-config', 'mode main'] + r = ['flatten-workspace-tree', 'mode main'] # reset layout + f = ['layout floating tiling', 'mode main'] # Toggle between floating and tiling layout + backspace = ['close-all-windows-but-current', 'mode main'] + + # sticky is not yet supported https://github.com/nikitabobko/AeroSpace/issues/2 + #s = ['layout sticky tiling', 'mode main'] + + cmd-shift-h = ['join-with left', 'mode main'] + cmd-shift-j = ['join-with down', 'mode main'] + cmd-shift-k = ['join-with up', 'mode main'] + cmd-shift-l = ['join-with right', 'mode main'] diff --git a/ghostty/.config/ghostty/config.ghostty b/ghostty/.config/ghostty/config.ghostty new file mode 100644 index 0000000..847d696 --- /dev/null +++ b/ghostty/.config/ghostty/config.ghostty @@ -0,0 +1,7 @@ +theme = Catppuccin Mocha +title = "" +window-padding-x = 12 +window-padding-y = 8 +macos-titlebar-style = hidden +mouse-hide-while-typing = true +font-size = 14 diff --git a/nvim/.config/nvim/lazy-lock.json b/nvim/.config/nvim/lazy-lock.json index 92cf9e7..253dcdd 100644 --- a/nvim/.config/nvim/lazy-lock.json +++ b/nvim/.config/nvim/lazy-lock.json @@ -1,35 +1,23 @@ { - "LuaSnip": { "branch": "master", "commit": "33b06d72d220aa56a7ce80a0dd6f06c70cd82b9d" }, "ale": { "branch": "master", "commit": "65b49c1b8172d0ab1b08ffe8fdcabb93fc1328df" }, "auto-session": { "branch": "main", "commit": "021b64ed7d4ac68a37be3ad28d8e1cba5bec582c" }, "barbar.nvim": { "branch": "master", "commit": "53b5a2f34b68875898f0531032fbf090e3952ad7" }, - "biscuit": { "branch": "main", "commit": "4089be2d6051c41558db55bbcc227c9d0c33bb0f" }, - "blink.cmp": { "branch": "main", "commit": "e16586c49309c29f238e1068546e7ba64cc15a78" }, - "cmp-emoji": { "branch": "main", "commit": "e8398e2adf512a03bb4e1728ca017ffeac670a9f" }, - "cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" }, - "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, - "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, + "blink.cmp": { "branch": "main", "commit": "62c3d54f7d739ee46f850ea6832383e3b7ca2ee1" }, "conform.nvim": { "branch": "master", "commit": "f4e8837878fc5712d053ba3091a73d27d96a09e2" }, - "fidget.nvim": { "branch": "main", "commit": "e2a175c2abe2d4f65357da1c98c59a5cfb2b543f" }, + "fidget.nvim": { "branch": "main", "commit": "7fa433a83118a70fe24c1ce88d5f0bd3453c0970" }, + "friendly-snippets": { "branch": "main", "commit": "6cd7280adead7f586db6fccbd15d2cac7e2188b9" }, "gitsigns.nvim": { "branch": "main", "commit": "5f808b5e4fef30bd8aca1b803b4e555da07fc412" }, - "gruvbox-baby": { "branch": "main", "commit": "bd52e62d8134647090108189e69c8b3cd18bdbbf" }, - "kanagawa.nvim": { "branch": "master", "commit": "ad3dddecd606746374ba4807324a08331dfca23c" }, - "lazy.nvim": { "branch": "main", "commit": "7c493713bc2cb392706866eeba53aaef6c8e9fc6" }, + "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, "lazydev.nvim": { "branch": "main", "commit": "f59bd14a852ca43db38e3662395354cb2a9b13e0" }, "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" }, - "luvit-meta": { "branch": "main", "commit": "57d464c4acb5c2e66bd4145060f5dc9e96a7bbb7" }, "markdown.nvim": { "branch": "master", "commit": "dfa0d2def6dbf77e9206b16dc90cad4dd23d55d2" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "8e46de9241d3997927af12196bd8faa0ed08c29a" }, - "mason-tool-installer.nvim": { "branch": "main", "commit": "c5e07b8ff54187716334d585db34282e46fa2932" }, - "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "a979821a975897b88493843301950c456a725982" }, + "mason-tool-installer.nvim": { "branch": "main", "commit": "443f1ef8b5e6bf47045cb2217b6f748a223cf7dc" }, + "mason.nvim": { "branch": "main", "commit": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65" }, "mini.nvim": { "branch": "main", "commit": "2435d0de00174a45d6b352fefeaa6008ebe9f23b" }, - "neovim": { "branch": "main", "commit": "91548dca53b36dbb9d36c10f114385f759731be1" }, "nvim": { "branch": "main", "commit": "faf15ab0201b564b6368ffa47b56feefc92ce3f4" }, - "nvim-autopairs": { "branch": "master", "commit": "b464658e9b880f463b9f7e6ccddd93fb0013f559" }, - "nvim-cmp": { "branch": "main", "commit": "3403e2e9391ed0a28c3afddd8612701b647c8e26" }, - "nvim-lspconfig": { "branch": "master", "commit": "5a812abc65d529ea7673059a348814c21d7f87ff" }, + "nvim-lspconfig": { "branch": "master", "commit": "841c6d4139aedb8a3f2baf30cef5327371385b93" }, "nvim-numbertoggle": { "branch": "main", "commit": "c5827153f8a955886f1b38eaea6998c067d2992f" }, - "nvim-tree.lua": { "branch": "master", "commit": "375e38673b5c61debd8074ced01cfd4f3b7ce1e9" }, "nvim-treesitter": { "branch": "master", "commit": "337b503688eccb3046547661e4c738e674548fcf" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "ad8f0a472148c3e0ae9851e26a722ee4e29b1595" }, "nvim-web-devicons": { "branch": "master", "commit": "e73d2774d12d0ecf9e05578d692ba1ea50508cf2" }, diff --git a/nvim/.config/nvim/lua/plugins/cmp.lua b/nvim/.config/nvim/lua/plugins/cmp.lua index 67bb5e3..2a09638 100644 --- a/nvim/.config/nvim/lua/plugins/cmp.lua +++ b/nvim/.config/nvim/lua/plugins/cmp.lua @@ -59,6 +59,8 @@ return { preset = "none", [""] = { "select_prev", "fallback" }, [""] = { "select_next", "fallback" }, + [""] = { "select_prev", "fallback" }, + [""] = { "select_next", "fallback" }, [""] = { "show_signature", "hide_signature", "fallback" }, [""] = { "accept", "fallback" }, }, diff --git a/sketchybar/.config/sketchybar/README.md b/sketchybar/.config/sketchybar/README.md new file mode 100644 index 0000000..dacb567 --- /dev/null +++ b/sketchybar/.config/sketchybar/README.md @@ -0,0 +1,28 @@ +### SketchyBar + +This sketchybar setup is insipred by Praveen Gongada's +[setup](https://github.com/PraveenGongada/dotfiles/tree/main/sketchybar) + +##### Installation + +```bash +brew install felixkratz/formulae/sketchybar +brew install jq +brew install font-sf-pro +brew install --cask sf-symbols +curl -L https://github.com/kvndrsslr/sketchybar-app-font/releases/download/v2.0.40/sketchybar-app-font.ttf -o $HOME/Library/Fonts/sketchybar-app-font.ttf +curl -L https://github.com/kvndrsslr/sketchybar-app-font/releases/download/v2.0.40/icon_map.sh -o $HOME/.config/sketchybar/icon_map.sh +``` + +##### Mitigation of some common problems that I faced + +1) Praveen using version 1 of the config (needs to be declared coreclty in the sketchybarrc). +2) All the script must be user executable. +3) For `after-start-up` command in the `aerospace.toml` to start `borders` and `sketchybar`, prefer keeping all the three bin files in the same bin folder. For me this was +in `/opt/homebrew/bin` (on one machine that have). On the other even though +files were on different paths, `sketchybar` worked with `brew services star` +after I loaded `aerospace`. +4) Also in the aerospace.toml, wherever `sketchybar` or `borders` are +referenced, the full path must be used. The newer version of the config +supports `[exec.env-vars]` to set the path. Here I am just using the dirty way +of supplying the full path wherever needed. diff --git a/sketchybar/.config/sketchybar/bar.lua b/sketchybar/.config/sketchybar/bar.lua deleted file mode 100644 index 13a3bdc..0000000 --- a/sketchybar/.config/sketchybar/bar.lua +++ /dev/null @@ -1,10 +0,0 @@ -local colors = require("colors") - --- Equivalent to the --bar domain -sbar.bar({ - topmost = "window", - height = 50, - color = colors.bar.bg, - padding_right = 3, - padding_left = 3, -}) diff --git a/sketchybar/.config/sketchybar/colors.lua b/sketchybar/.config/sketchybar/colors.lua deleted file mode 100644 index 2a3d257..0000000 --- a/sketchybar/.config/sketchybar/colors.lua +++ /dev/null @@ -1,28 +0,0 @@ -return { - black = 0xff25273A, - white = 0xffb5c9ff, - red = 0xffFF6C8D, - green = 0xff90D05A, - blue = 0xff6EA3FE, - yellow = 0xffE9AD5B, - orange = 0xffFF9856, - magenta = 0xffC198FD, - grey = 0xff9AA9D9, - transparent = 0x00000000, - - bar = { - bg = 0x00ffffff, - border = 0x00ffffff, - }, - popup = { - bg = 0xee25273A, - border = 0xff1E2030, - }, - bg1 = 0xff25273A, - bg2 = 0xff1E2030, - - with_alpha = function(color, alpha) - if alpha > 1.0 or alpha < 0.0 then return color end - return (color & 0x00ffffff) | (math.floor(alpha * 255.0) << 24) - end, -} diff --git a/sketchybar/.config/sketchybar/default.lua b/sketchybar/.config/sketchybar/default.lua deleted file mode 100644 index 33e0bf9..0000000 --- a/sketchybar/.config/sketchybar/default.lua +++ /dev/null @@ -1,52 +0,0 @@ -local settings = require("settings") -local colors = require("colors") - --- Equivalent to the --default domain -sbar.default({ - updates = "when_shown", - icon = { - font = { - family = settings.font.text, - style = settings.font.style_map["Bold"], - size = 14.0 - }, - color = colors.white, - padding_left = settings.paddings, - padding_right = settings.paddings, - background = { image = { corner_radius = 9 } }, - }, - label = { - font = { - family = settings.font.text, - style = settings.font.style_map["Semibold"], - size = 13.0 - }, - color = colors.white, - padding_left = settings.paddings, - padding_right = settings.paddings, - }, - background = { - height = 34, - corner_radius = 12, - border_width = 0, - border_color = colors.bg2, - image = { - corner_radius = 9, - border_color = colors.grey, - border_width = 0 - } - }, - popup = { - background = { - border_width = 0, - corner_radius = 9, - border_color = colors.popup.border, - color = colors.popup.bg, - shadow = { drawing = true }, - }, - blur_radius = 50, - }, - padding_left = 5, - padding_right = 5, - scroll_texts = true, -}) diff --git a/sketchybar/.config/sketchybar/dot_gitignore b/sketchybar/.config/sketchybar/dot_gitignore new file mode 100644 index 0000000..a8318c8 --- /dev/null +++ b/sketchybar/.config/sketchybar/dot_gitignore @@ -0,0 +1 @@ +icon_map.sh \ No newline at end of file diff --git a/sketchybar/.config/sketchybar/executable_colors.sh b/sketchybar/.config/sketchybar/executable_colors.sh new file mode 100644 index 0000000..9fd0ed8 --- /dev/null +++ b/sketchybar/.config/sketchybar/executable_colors.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +export TRANSPARENT=0x00ffffff + +# -- Catpuccin Scheme -- +export ITEM_COLOR=0xff1e1e2e +export ACCENT_COLOR=0xffcba6f7 + +# -- Gray Scheme -- +# export ITEM_COLOR=0xff000000 +# export ACCENT_COLOR=0xffc3c6cb + +# -- White Scheme -- +# export ITEM_COLOR=0xff000000 +# export ACCENT_COLOR=0xffffffff + +# -- Teal Scheme -- +# export ITEM_COLOR=0xff000000 +# export ACCENT_COLOR=0xff2cf9ed + +# -- Purple Scheme -- +# export ITEM_COLOR=0xff000000 +# export ACCENT_COLOR=0xffeb46f9 + +# -- Red Scheme --- +# export ITEM_COLOR=0xff000000 +# export ACCENT_COLOR=0xffff2453 + +# -- Blue Scheme --- +# export ITEM_COLOR=0xff000000 +# export ACCENT_COLOR=0xff15bdf9 + +# -- Green Scheme -- +# export ITEM_COLOR=0xff000000 +# export ACCENT_COLOR=0xff1dfca1 + +# -- Orange Scheme -- +# export ITEM_COLOR=0xffffffff +# export ACCENT_COLOR=0xfff97716 + +# -- Yellow Scheme -- +# export ITEM_COLOR=0xff000000 +# export ACCENT_COLOR=0xfff7fc17 diff --git a/sketchybar/.config/sketchybar/executable_icon_map.sh b/sketchybar/.config/sketchybar/executable_icon_map.sh new file mode 100644 index 0000000..ef64693 --- /dev/null +++ b/sketchybar/.config/sketchybar/executable_icon_map.sh @@ -0,0 +1,926 @@ +#!/usr/bin/env bash + +### START-OF-ICON-MAP +function __icon_map() { + case "$1" in + "Live") + icon_result=":ableton:" + ;; + "Activity Monitor" | "Aktivitätsanzeige") + icon_result=":activity_monitor:" + ;; + "Adobe Bridge"*) + icon_result=":adobe_bridge:" + ;; + "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:" + ;; + "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:" + ;; + "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:" + ;; + "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:" + ;; + "Freeform") + icon_result=":freeform:" + ;; + "FreeTube") + icon_result=":freetube:" + ;; + "Fusion") + icon_result=":fusion:" + ;; + "System Preferences" | "System Settings" | "系统设置" | "Réglages Système" | "システム設定" | "Systemeinstellungen" | "System­einstellungen") + icon_result=":gear:" + ;; + "Ghostty") + icon_result=":ghostty:" + ;; + "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:" + ;; + "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:" + ;; + "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:" + ;; + "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" | "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:" + ;; + "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:" + ;; + "网易云音乐") + icon_result=":netease_music:" + ;; + "NimbleCommander" | "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:" + ;; + "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:" + ;; + "Passwords" | "Passwörter") + icon_result=":passwords:" + ;; + "PDF Expert") + icon_result=":pdf_expert:" + ;; + "Pearcleaner") + icon_result=":pearcleaner:" + ;; + "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:" + ;; + "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:" + ;; + "Sequel Ace") + icon_result=":sequel_ace:" + ;; + "Sequel Pro") + icon_result=":sequel_pro:" + ;; + "Session") + icon_result=":session:" + ;; + "Setapp") + icon_result=":setapp:" + ;; + "SF Symbols" | "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") + 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") + 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 diff --git a/sketchybar/.config/sketchybar/executable_sketchybarrc b/sketchybar/.config/sketchybar/executable_sketchybarrc new file mode 100644 index 0000000..aeba170 --- /dev/null +++ b/sketchybar/.config/sketchybar/executable_sketchybarrc @@ -0,0 +1,67 @@ +#!/bin/bash + +# Loads all defined colors +source "$CONFIG_DIR/colors.sh" + +# This is a demo config to show some of the most important commands more easily. +# This is meant to be changed and configured, as it is intentionally kept sparse. +# For a more advanced configuration example see my dotfiles: +# https://github.com/FelixKratz/dotfiles + +PLUGIN_DIR="$CONFIG_DIR/plugins" +ITEM_DIR="$CONFIG_DIR/items" + +##### 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 height=36 \ + blur_radius=30 \ + position=top \ + sticky=on \ + padding_left=10 \ + padding_right=10 \ + color=0xcc1e1e2e + +##### Changing Defaults ##### +# We now change some default values that are applied to all further items +# For a full list of all available item properties see: +# https://felixkratz.github.io/SketchyBar/config/items + +sketchybar --default icon.font="SF Pro:Semibold:12.0" \ + icon.color=$ITEM_COLOR \ + label.font="SF Pro:Semibold:12.0" \ + label.color=$ITEM_COLOR \ + background.color=$ACCENT_COLOR \ + background.corner_radius=10 \ + background.height=20 \ + padding_left=4 \ + padding_right=4 \ + icon.padding_left=6 \ + icon.padding_right=3 \ + label.padding_left=3 \ + label.padding_right=6 + +# -- Left Side Items -- +source $ITEM_DIR/spaces.sh +source $ITEM_DIR/front_app.sh + +# -- Right Side Of Notch Items -- +# source $ITEM_DIR/media.sh + +# -- Right Side Items -- +source $ITEM_DIR/calendar.sh +source $ITEM_DIR/wifi.sh +source $ITEM_DIR/battery.sh +source $ITEM_DIR/volume.sh +# source $ITEM_DIR/cpu.sh +# source $ITEM_DIR/memory.sh + +##### Finalizing Setup ##### +# The below command is only needed at the end of the initial configuration to +# force all scripts to run the first time, it should never be run in an item script. + +sketchybar --update diff --git a/sketchybar/.config/sketchybar/helpers/.gitignore b/sketchybar/.config/sketchybar/helpers/.gitignore deleted file mode 100644 index ba077a4..0000000 --- a/sketchybar/.config/sketchybar/helpers/.gitignore +++ /dev/null @@ -1 +0,0 @@ -bin diff --git a/sketchybar/.config/sketchybar/helpers/app_icons.lua b/sketchybar/.config/sketchybar/helpers/app_icons.lua deleted file mode 100644 index 59bd241..0000000 --- a/sketchybar/.config/sketchybar/helpers/app_icons.lua +++ /dev/null @@ -1,211 +0,0 @@ -return { - ["Typora"] = ":text:", - ["Orion"] = ":orion:", - ["Orion RC"] = ":orion:", - ["Grammarly Editor"] = ":grammarly:", - ["kitty"] = ":kitty:", - ["ClickUp"] = ":click_up:", - ["Iris"] = ":iris:", - ["PomoDone App"] = ":pomodone:", - ["qutebrowser"] = ":qute_browser:", - ["Raindrop.io"] = ":raindrop_io:", - ["Airmail"] = ":airmail:", - ["Affinity Publisher 2"] = ":affinity_publisher_2:", - ["Calendar"] = ":calendar:", - ["日历"] = ":calendar:", - ["Fantastical"] = ":calendar:", - ["Cron"] = ":calendar:", - ["Amie"] = ":calendar:", - ["Figma"] = ":figma:", - ["Element"] = ":element:", - ["Signal"] = ":signal:", - ["Mattermost"] = ":mattermost:", - ["Caprine"] = ":caprine:", - ["Microsoft To Do"] = ":things:", - ["Things"] = ":things:", - ["Godot"] = ":godot:", - ["Android Messages"] = ":android_messages:", - ["Zed"] = ":zed:", - ["Anytype"] = ":anytype:", - ["TeamSpeak 3"] = ":team_speak:", - ["LibreWolf"] = ":libre_wolf:", - ["Neovide"] = ":neovide:", - ["neovide"] = ":neovide:", - ["Spotlight"] = ":spotlight:", - ["微信"] = ":wechat:", - ["Dropbox"] = ":dropbox:", - ["Transmit"] = ":transmit:", - ["TickTick"] = ":tick_tick:", - ["Parallels Desktop"] = ":parallels:", - ["Audacity"] = ":audacity:", - ["Rider"] = ":rider:", - ["JetBrains Rider"] = ":rider:", - ["DEVONthink 3"] = ":devonthink3:", - ["Docker"] = ":docker:", - ["Docker Desktop"] = ":docker:", - ["Matlab"] = ":matlab:", - ["VLC"] = ":vlc:", - ["Alacritty"] = ":alacritty:", - ["Pages"] = ":pages:", - ["Pages 文稿"] = ":pages:", - ["Bear"] = ":bear:", - ["Pine"] = ":pine:", - ["Affinity Designer 2"] = ":affinity_designer_2:", - ["Keyboard Maestro"] = ":keyboard_maestro:", - ["Joplin"] = ":joplin:", - ["mpv"] = ":mpv:", - ["zoom.us"] = ":zoom:", - ["Affinity Photo 2"] = ":affinity_photo_2:", - ["Music"] = ":music:", - ["音乐"] = ":music:", - ["League of Legends"] = ":league_of_legends:", - ["Tor Browser"] = ":tor_browser:", - ["Hyper"] = ":hyper:", - ["‎WhatsApp"] = ":whats_app:", - ["카카오톡"] = ":kakaotalk:", - ["Discord"] = ":discord:", - ["Discord Canary"] = ":discord:", - ["Discord PTB"] = ":discord:", - ["Neovide"] = ":vim:", - ["MacVim"] = ":vim:", - ["Vim"] = ":vim:", - ["VimR"] = ":vim:", - ["Keynote"] = ":keynote:", - ["Keynote 讲演"] = ":keynote:", - ["iTerm"] = ":iterm:", - ["IntelliJ IDEA"] = ":idea:", - ["Finder"] = ":finder:", - ["访达"] = ":finder:", - ["Xcode"] = ":xcode:", - ["GoLand"] = ":goland:", - ["Android Studio"] = ":android_studio:", - ["MoneyMoney"] = ":bank:", - ["Spotify"] = ":spotify:", - ["KeePassXC"] = ":kee_pass_x_c:", - ["Alfred"] = ":alfred:", - ["Color Picker"] = ":color_picker:", - ["数码测色计"] = ":color_picker:", - ["Microsoft Word"] = ":microsoft_word:", - ["Microsoft PowerPoint"] = ":microsoft_power_point:", - ["Notes"] = ":notes:", - ["备忘录"] = ":notes:", - ["Microsoft Edge"] = ":microsoft_edge:", - ["Sublime Text"] = ":sublime_text:", - ["Sequel Ace"] = ":sequel_ace:", - ["Folx"] = ":folx:", - ["DingTalk"] = ":dingtalk:", - ["钉钉"] = ":dingtalk:", - ["阿里钉"] = ":dingtalk:", - ["WebStorm"] = ":web_storm:", - ["Sequel Pro"] = ":sequel_pro:", - ["Skype"] = ":skype:", - ["网易云音乐"] = ":netease_music:", - ["PyCharm"] = ":pycharm:", - ["Canary Mail"] = ":mail:", - ["HEY"] = ":mail:", - ["Mail"] = ":mail:", - ["Mailspring"] = ":mail:", - ["MailMate"] = ":mail:", - ["邮件"] = ":mail:", - ["Default"] = ":default:", - ["App Store"] = ":app_store:", - ["Calibre"] = ":book:", - ["Todoist"] = ":todoist:", - ["Emacs"] = ":emacs:", - ["Messenger"] = ":messenger:", - ["Tower"] = ":tower:", - ["VSCodium"] = ":vscodium:", - ["Drafts"] = ":drafts:", - ["Cypress"] = ":cypress:", - ["GitHub Desktop"] = ":git_hub:", - ["Telegram"] = ":telegram:", - ["Firefox Developer Edition"] = ":firefox_developer_edition:", - ["Firefox Nightly"] = ":firefox_developer_edition:", - ["Min"] = ":min_browser:", - ["Sketch"] = ":sketch:", - ["Affinity Photo"] = ":affinity_photo:", - ["MAMP"] = ":mamp:", - ["MAMP PRO"] = ":mamp:", - ["Insomnia"] = ":insomnia:", - ["Bitwarden"] = ":bit_warden:", - ["Warp"] = ":warp:", - ["System Preferences"] = ":gear:", - ["System Settings"] = ":gear:", - ["系统设置"] = ":gear:", - ["Affinity Designer"] = ":affinity_designer:", - ["Live"] = ":ableton:", - ["Arc"] = ":arc:", - ["Chromium"] = ":google_chrome:", - ["Google Chrome"] = ":google_chrome:", - ["Google Chrome Canary"] = ":google_chrome:", - ["Jellyfin Media Player"] = ":jellyfin:", - ["Zulip"] = ":zulip:", - ["1Password"] = ":one_password:", - ["FaceTime"] = ":face_time:", - ["FaceTime 通话"] = ":face_time:", - ["Citrix Workspace"] = ":citrix:", - ["Citrix Viewer"] = ":citrix:", - ["Logseq"] = ":logseq:", - ["Reeder"] = ":reeder5:", - ["Code"] = ":code:", - ["Code - Insiders"] = ":code:", - ["Notion"] = ":notion:", - ["Final Cut Pro"] = ":final_cut_pro:", - ["Zotero"] = ":zotero:", - ["Safari"] = ":safari:", - ["Safari浏览器"] = ":safari:", - ["Safari Technology Preview"] = ":safari:", - ["Blender"] = ":blender:", - ["Affinity Publisher"] = ":affinity_publisher:", - ["Spark Desktop"] = ":spark:", - ["Zeplin"] = ":zeplin:", - ["Replit"] = ":replit:", - ["Podcasts"] = ":podcasts:", - ["播客"] = ":podcasts:", - ["NordVPN"] = ":nord_vpn:", - ["Notability"] = ":notability:", - ["Numbers"] = ":numbers:", - ["Numbers 表格"] = ":numbers:", - ["Nova"] = ":nova:", - ["Microsoft Excel"] = ":microsoft_excel:", - ["Trello"] = ":trello:", - ["Pi-hole Remote"] = ":pihole:", - ["Linear"] = ":linear:", - ["CleanMyMac X"] = ":desktop:", - ["GrandTotal"] = ":dollar:", - ["Receipts"] = ":dollar:", - ["Evernote Legacy"] = ":evernote_legacy:", - ["OmniFocus"] = ":omni_focus:", - ["Terminal"] = ":terminal:", - ["终端"] = ":terminal:", - ["Atom"] = ":atom:", - ["Kakoune"] = ":kakoune:", - ["Reminders"] = ":reminders:", - ["提醒事项"] = ":reminders:", - ["Tana"] = ":tana:", - ["OBS"] = ":obsstudio:", - ["VMware Fusion"] = ":vmware_fusion:", - ["Tweetbot"] = ":twitter:", - ["Twitter"] = ":twitter:", - ["Microsoft Teams"] = ":microsoft_teams:", - ["Yuque"] = ":yuque:", - ["语雀"] = ":yuque:", - ["Slack"] = ":slack:", - ["Vivaldi"] = ":vivaldi:", - ["Setapp"] = ":setapp:", - ["TIDAL"] = ":tidal:", - ["Miro"] = ":miro:", - ["Messages"] = ":messages:", - ["信息"] = ":messages:", - ["Nachrichten"] = ":messages:", - ["Brave Browser"] = ":brave_browser:", - ["Preview"] = ":pdf:", - ["预览"] = ":pdf:", - ["Skim"] = ":pdf:", - ["zathura"] = ":pdf:", - ["Obsidian"] = ":obsidian:", - ["Thunderbird"] = ":thunderbird:", - ["Firefox"] = ":firefox:", - ["WezTerm"] = ":wezterm:", - ["default"] = ":default:", -} diff --git a/sketchybar/.config/sketchybar/helpers/default_font.lua b/sketchybar/.config/sketchybar/helpers/default_font.lua deleted file mode 100644 index 683c075..0000000 --- a/sketchybar/.config/sketchybar/helpers/default_font.lua +++ /dev/null @@ -1,14 +0,0 @@ -return { - text = "SF Pro", -- Used for text - numbers = "SF Pro", -- Used for numbers - mono = "BerkeleyMono Nerd Font", - - -- Unified font style map - style_map = { - ["Regular"] = "Regular", - ["Semibold"] = "Semibold", - ["Bold"] = "Bold", - ["Heavy"] = "Heavy", - ["Black"] = "Black", - } -} diff --git a/sketchybar/.config/sketchybar/helpers/event_providers/cpu_load/cpu.h b/sketchybar/.config/sketchybar/helpers/event_providers/cpu_load/cpu.h deleted file mode 100644 index 413f70f..0000000 --- a/sketchybar/.config/sketchybar/helpers/event_providers/cpu_load/cpu.h +++ /dev/null @@ -1,58 +0,0 @@ -#include -#include -#include -#include - -struct cpu { - host_t host; - mach_msg_type_number_t count; - host_cpu_load_info_data_t load; - host_cpu_load_info_data_t prev_load; - bool has_prev_load; - - int user_load; - int sys_load; - int total_load; -}; - -static inline void cpu_init(struct cpu* cpu) { - cpu->host = mach_host_self(); - cpu->count = HOST_CPU_LOAD_INFO_COUNT; - cpu->has_prev_load = false; -} - -static inline void cpu_update(struct cpu* cpu) { - kern_return_t error = host_statistics(cpu->host, - HOST_CPU_LOAD_INFO, - (host_info_t)&cpu->load, - &cpu->count ); - - if (error != KERN_SUCCESS) { - printf("Error: Could not read cpu host statistics.\n"); - return; - } - - if (cpu->has_prev_load) { - uint32_t delta_user = cpu->load.cpu_ticks[CPU_STATE_USER] - - cpu->prev_load.cpu_ticks[CPU_STATE_USER]; - - uint32_t delta_system = cpu->load.cpu_ticks[CPU_STATE_SYSTEM] - - cpu->prev_load.cpu_ticks[CPU_STATE_SYSTEM]; - - uint32_t delta_idle = cpu->load.cpu_ticks[CPU_STATE_IDLE] - - cpu->prev_load.cpu_ticks[CPU_STATE_IDLE]; - - cpu->user_load = (double)delta_user / (double)(delta_system - + delta_user - + delta_idle) * 100.0; - - cpu->sys_load = (double)delta_system / (double)(delta_system - + delta_user - + delta_idle) * 100.0; - - cpu->total_load = cpu->user_load + cpu->sys_load; - } - - cpu->prev_load = cpu->load; - cpu->has_prev_load = true; -} diff --git a/sketchybar/.config/sketchybar/helpers/event_providers/cpu_load/cpu_load.c b/sketchybar/.config/sketchybar/helpers/event_providers/cpu_load/cpu_load.c deleted file mode 100644 index ee97613..0000000 --- a/sketchybar/.config/sketchybar/helpers/event_providers/cpu_load/cpu_load.c +++ /dev/null @@ -1,41 +0,0 @@ -#include "cpu.h" -#include "../sketchybar.h" - -int main (int argc, char** argv) { - float update_freq; - if (argc < 3 || (sscanf(argv[2], "%f", &update_freq) != 1)) { - printf("Usage: %s \"\" \"\"\n", argv[0]); - exit(1); - } - - alarm(0); - struct cpu cpu; - cpu_init(&cpu); - - // Setup the event in sketchybar - char event_message[512]; - snprintf(event_message, 512, "--add event '%s'", argv[1]); - sketchybar(event_message); - - char trigger_message[512]; - for (;;) { - // Acquire new info - cpu_update(&cpu); - - // Prepare the event message - snprintf(trigger_message, - 512, - "--trigger '%s' user_load='%d' sys_load='%02d' total_load='%02d'", - argv[1], - cpu.user_load, - cpu.sys_load, - cpu.total_load ); - - // Trigger the event - sketchybar(trigger_message); - - // Wait - usleep(update_freq * 1000000); - } - return 0; -} diff --git a/sketchybar/.config/sketchybar/helpers/event_providers/cpu_load/makefile b/sketchybar/.config/sketchybar/helpers/event_providers/cpu_load/makefile deleted file mode 100644 index 6366a0f..0000000 --- a/sketchybar/.config/sketchybar/helpers/event_providers/cpu_load/makefile +++ /dev/null @@ -1,5 +0,0 @@ -bin/cpu_load: cpu_load.c cpu.h ../sketchybar.h | bin - clang -std=c99 -O3 $< -o $@ - -bin: - mkdir bin diff --git a/sketchybar/.config/sketchybar/helpers/event_providers/makefile b/sketchybar/.config/sketchybar/helpers/event_providers/makefile deleted file mode 100644 index 8c1ca39..0000000 --- a/sketchybar/.config/sketchybar/helpers/event_providers/makefile +++ /dev/null @@ -1,3 +0,0 @@ -all: - (cd cpu_load && $(MAKE)) - (cd network_load && $(MAKE)) diff --git a/sketchybar/.config/sketchybar/helpers/event_providers/network_load/makefile b/sketchybar/.config/sketchybar/helpers/event_providers/network_load/makefile deleted file mode 100644 index e464482..0000000 --- a/sketchybar/.config/sketchybar/helpers/event_providers/network_load/makefile +++ /dev/null @@ -1,5 +0,0 @@ -bin/network_load: network_load.c network.h ../sketchybar.h | bin - clang -std=c99 -O3 $< -o $@ - -bin: - mkdir bin diff --git a/sketchybar/.config/sketchybar/helpers/event_providers/network_load/network.h b/sketchybar/.config/sketchybar/helpers/event_providers/network_load/network.h deleted file mode 100644 index 25175e5..0000000 --- a/sketchybar/.config/sketchybar/helpers/event_providers/network_load/network.h +++ /dev/null @@ -1,90 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -static char unit_str[3][6] = { { " Bps" }, { "KBps" }, { "MBps" }, }; - -enum unit { - UNIT_BPS, - UNIT_KBPS, - UNIT_MBPS -}; -struct network { - uint32_t row; - struct ifmibdata data; - struct timeval tv_nm1, tv_n, tv_delta; - - int up; - int down; - enum unit up_unit, down_unit; -}; - -static inline void ifdata(uint32_t net_row, struct ifmibdata* data) { - static size_t size = sizeof(struct ifmibdata); - static int32_t data_option[] = { CTL_NET, PF_LINK, NETLINK_GENERIC, IFMIB_IFDATA, 0, IFDATA_GENERAL }; - data_option[4] = net_row; - sysctl(data_option, 6, data, &size, NULL, 0); -} - -static inline void network_init(struct network* net, char* ifname) { - memset(net, 0, sizeof(struct network)); - - static int count_option[] = { CTL_NET, PF_LINK, NETLINK_GENERIC, IFMIB_SYSTEM, IFMIB_IFCOUNT }; - uint32_t interface_count = 0; - size_t size = sizeof(uint32_t); - sysctl(count_option, 5, &interface_count, &size, NULL, 0); - - for (int i = 0; i < interface_count; i++) { - ifdata(i, &net->data); - if (strcmp(net->data.ifmd_name, ifname) == 0) { - net->row = i; - break; - } - } -} - -static inline void network_update(struct network* net) { - gettimeofday(&net->tv_n, NULL); - timersub(&net->tv_n, &net->tv_nm1, &net->tv_delta); - net->tv_nm1 = net->tv_n; - - uint64_t ibytes_nm1 = net->data.ifmd_data.ifi_ibytes; - uint64_t obytes_nm1 = net->data.ifmd_data.ifi_obytes; - ifdata(net->row, &net->data); - - double time_scale = (net->tv_delta.tv_sec + 1e-6*net->tv_delta.tv_usec); - if (time_scale < 1e-6 || time_scale > 1e2) return; - double delta_ibytes = (double)(net->data.ifmd_data.ifi_ibytes - ibytes_nm1) - / time_scale; - double delta_obytes = (double)(net->data.ifmd_data.ifi_obytes - obytes_nm1) - / time_scale; - - double exponent_ibytes = log10(delta_ibytes); - double exponent_obytes = log10(delta_obytes); - - if (exponent_ibytes < 3) { - net->down_unit = UNIT_BPS; - net->down = delta_ibytes; - } else if (exponent_ibytes < 6) { - net->down_unit = UNIT_KBPS; - net->down = delta_ibytes / 1000.0; - } else if (exponent_ibytes < 9) { - net->down_unit = UNIT_MBPS; - net->down = delta_ibytes / 1000000.0; - } - - if (exponent_obytes < 3) { - net->up_unit = UNIT_BPS; - net->up = delta_obytes; - } else if (exponent_obytes < 6) { - net->up_unit = UNIT_KBPS; - net->up = delta_obytes / 1000.0; - } else if (exponent_obytes < 9) { - net->up_unit = UNIT_MBPS; - net->up = delta_obytes / 1000000.0; - } -} diff --git a/sketchybar/.config/sketchybar/helpers/event_providers/network_load/network_load.c b/sketchybar/.config/sketchybar/helpers/event_providers/network_load/network_load.c deleted file mode 100644 index 06afe95..0000000 --- a/sketchybar/.config/sketchybar/helpers/event_providers/network_load/network_load.c +++ /dev/null @@ -1,42 +0,0 @@ -#include -#include "network.h" -#include "../sketchybar.h" - -int main (int argc, char** argv) { - float update_freq; - if (argc < 4 || (sscanf(argv[3], "%f", &update_freq) != 1)) { - printf("Usage: %s \"\" \"\" \"\"\n", argv[0]); - exit(1); - } - - alarm(0); - // Setup the event in sketchybar - char event_message[512]; - snprintf(event_message, 512, "--add event '%s'", argv[2]); - sketchybar(event_message); - - struct network network; - network_init(&network, argv[1]); - char trigger_message[512]; - for (;;) { - // Acquire new info - network_update(&network); - - // Prepare the event message - snprintf(trigger_message, - 512, - "--trigger '%s' upload='%03d%s' download='%03d%s'", - argv[2], - network.up, - unit_str[network.up_unit], - network.down, - unit_str[network.down_unit]); - - // Trigger the event - sketchybar(trigger_message); - - // Wait - usleep(update_freq * 1000000); - } - return 0; -} diff --git a/sketchybar/.config/sketchybar/helpers/event_providers/sketchybar.h b/sketchybar/.config/sketchybar/helpers/event_providers/sketchybar.h deleted file mode 100644 index 72bf06a..0000000 --- a/sketchybar/.config/sketchybar/helpers/event_providers/sketchybar.h +++ /dev/null @@ -1,122 +0,0 @@ -#pragma once - -#include -#include -#include -#include -#include -#include -#include -#include - -typedef char* env; - -#define MACH_HANDLER(name) void name(env env) -typedef MACH_HANDLER(mach_handler); - -struct mach_message { - mach_msg_header_t header; - mach_msg_size_t msgh_descriptor_count; - mach_msg_ool_descriptor_t descriptor; -}; - -struct mach_buffer { - struct mach_message message; - mach_msg_trailer_t trailer; -}; - -static mach_port_t g_mach_port = 0; - -static inline mach_port_t mach_get_bs_port() { - mach_port_name_t task = mach_task_self(); - - mach_port_t bs_port; - if (task_get_special_port(task, - TASK_BOOTSTRAP_PORT, - &bs_port ) != KERN_SUCCESS) { - return 0; - } - - char* name = getenv("BAR_NAME"); - if (!name) name = "sketchybar"; - uint32_t lookup_len = 16 + strlen(name); - - char buffer[lookup_len]; - snprintf(buffer, lookup_len, "git.felix.%s", name); - - mach_port_t port; - if (bootstrap_look_up(bs_port, buffer, &port) != KERN_SUCCESS) return 0; - return port; -} - -static inline bool mach_send_message(mach_port_t port, char* message, uint32_t len) { - if (!message || !port) { - return false; - } - - struct mach_message msg = { 0 }; - msg.header.msgh_remote_port = port; - msg.header.msgh_local_port = 0; - msg.header.msgh_id = 0; - msg.header.msgh_bits = MACH_MSGH_BITS_SET(MACH_MSG_TYPE_COPY_SEND, - MACH_MSG_TYPE_MAKE_SEND, - 0, - MACH_MSGH_BITS_COMPLEX ); - - msg.header.msgh_size = sizeof(struct mach_message); - msg.msgh_descriptor_count = 1; - msg.descriptor.address = message; - msg.descriptor.size = len * sizeof(char); - msg.descriptor.copy = MACH_MSG_VIRTUAL_COPY; - msg.descriptor.deallocate = false; - msg.descriptor.type = MACH_MSG_OOL_DESCRIPTOR; - - kern_return_t err = mach_msg(&msg.header, - MACH_SEND_MSG, - sizeof(struct mach_message), - 0, - MACH_PORT_NULL, - MACH_MSG_TIMEOUT_NONE, - MACH_PORT_NULL ); - - return err == KERN_SUCCESS; -} - -static inline uint32_t format_message(char* message, char* formatted_message) { - // This is not actually robust, switch to stack based messaging. - char outer_quote = 0; - uint32_t caret = 0; - uint32_t message_length = strlen(message) + 1; - for (int i = 0; i < message_length; ++i) { - if (message[i] == '"' || message[i] == '\'') { - if (outer_quote && outer_quote == message[i]) outer_quote = 0; - else if (!outer_quote) outer_quote = message[i]; - continue; - } - formatted_message[caret] = message[i]; - if (message[i] == ' ' && !outer_quote) formatted_message[caret] = '\0'; - caret++; - } - - if (caret > 0 && formatted_message[caret] == '\0' - && formatted_message[caret - 1] == '\0') { - caret--; - } - formatted_message[caret] = '\0'; - return caret + 1; -} - -static inline void sketchybar(char* message) { - char formatted_message[strlen(message) + 2]; - uint32_t length = format_message(message, formatted_message); - if (!length) return; - - if (!g_mach_port) g_mach_port = mach_get_bs_port(); - if (!mach_send_message(g_mach_port, formatted_message, length)) { - g_mach_port = mach_get_bs_port(); - if (!mach_send_message(g_mach_port, formatted_message, length)) { - // No sketchybar instance running, exit. - exit(0); - } - } -} diff --git a/sketchybar/.config/sketchybar/helpers/init.lua b/sketchybar/.config/sketchybar/helpers/init.lua deleted file mode 100644 index 351531a..0000000 --- a/sketchybar/.config/sketchybar/helpers/init.lua +++ /dev/null @@ -1,4 +0,0 @@ --- Add the sketchybar module to the package cpath -package.cpath = package.cpath .. ";/Users/" .. os.getenv("USER") .. "/.local/share/sketchybar_lua/?.so" - -os.execute("(cd helpers && make)") diff --git a/sketchybar/.config/sketchybar/helpers/install.sh b/sketchybar/.config/sketchybar/helpers/install.sh deleted file mode 100755 index cdde4ad..0000000 --- a/sketchybar/.config/sketchybar/helpers/install.sh +++ /dev/null @@ -1,17 +0,0 @@ -# Packages -brew install lua -brew install switchaudio-osx -brew install nowplaying-cli - -brew tap FelixKratz/formulae -brew install sketchybar - -# Fonts -brew install --cask sf-symbols -brew install --cask homebrew/cask-fonts/font-sf-mono -brew install --cask homebrew/cask-fonts/font-sf-pro - -curl -L https://github.com/kvndrsslr/sketchybar-app-font/releases/download/v2.0.5/sketchybar-app-font.ttf -o $HOME/Library/Fonts/sketchybar-app-font.ttf - -# SbarLua -(git clone https://github.com/FelixKratz/SbarLua.git /tmp/SbarLua && cd /tmp/SbarLua/ && make install && rm -rf /tmp/SbarLua/) diff --git a/sketchybar/.config/sketchybar/helpers/makefile b/sketchybar/.config/sketchybar/helpers/makefile deleted file mode 100644 index 3246108..0000000 --- a/sketchybar/.config/sketchybar/helpers/makefile +++ /dev/null @@ -1,3 +0,0 @@ -all: - (cd event_providers && $(MAKE)) >/dev/null - (cd menus && $(MAKE)) >/dev/null diff --git a/sketchybar/.config/sketchybar/helpers/menus/makefile b/sketchybar/.config/sketchybar/helpers/menus/makefile deleted file mode 100644 index 0cb454e..0000000 --- a/sketchybar/.config/sketchybar/helpers/menus/makefile +++ /dev/null @@ -1,5 +0,0 @@ -bin/menus: menus.c | bin - clang -std=c99 -O3 -F/System/Library/PrivateFrameworks/ -framework Carbon -framework SkyLight $< -o $@ - -bin: - mkdir bin diff --git a/sketchybar/.config/sketchybar/helpers/menus/menus.c b/sketchybar/.config/sketchybar/helpers/menus/menus.c deleted file mode 100644 index 2e77822..0000000 --- a/sketchybar/.config/sketchybar/helpers/menus/menus.c +++ /dev/null @@ -1,248 +0,0 @@ -#include - -void ax_init() { - const void *keys[] = { kAXTrustedCheckOptionPrompt }; - const void *values[] = { kCFBooleanTrue }; - - CFDictionaryRef options; - options = CFDictionaryCreate(kCFAllocatorDefault, - keys, - values, - sizeof(keys) / sizeof(*keys), - &kCFCopyStringDictionaryKeyCallBacks, - &kCFTypeDictionaryValueCallBacks ); - - bool trusted = AXIsProcessTrustedWithOptions(options); - CFRelease(options); - if (!trusted) exit(1); -} - -void ax_perform_click(AXUIElementRef element) { - if (!element) return; - AXUIElementPerformAction(element, kAXCancelAction); - usleep(150000); - AXUIElementPerformAction(element, kAXPressAction); -} - -CFStringRef ax_get_title(AXUIElementRef element) { - CFTypeRef title = NULL; - AXError error = AXUIElementCopyAttributeValue(element, - kAXTitleAttribute, - &title ); - - if (error != kAXErrorSuccess) return NULL; - return title; -} - -void ax_select_menu_option(AXUIElementRef app, int id) { - AXUIElementRef menubars_ref = NULL; - CFArrayRef children_ref = NULL; - - AXError error = AXUIElementCopyAttributeValue(app, - kAXMenuBarAttribute, - (CFTypeRef*)&menubars_ref); - if (error == kAXErrorSuccess) { - error = AXUIElementCopyAttributeValue(menubars_ref, - kAXVisibleChildrenAttribute, - (CFTypeRef*)&children_ref ); - - if (error == kAXErrorSuccess) { - uint32_t count = CFArrayGetCount(children_ref); - if (id < count) { - AXUIElementRef item = CFArrayGetValueAtIndex(children_ref, id); - ax_perform_click(item); - } - if (children_ref) CFRelease(children_ref); - } - if (menubars_ref) CFRelease(menubars_ref); - } -} - -void ax_print_menu_options(AXUIElementRef app) { - AXUIElementRef menubars_ref = NULL; - CFTypeRef menubar = NULL; - CFArrayRef children_ref = NULL; - - AXError error = AXUIElementCopyAttributeValue(app, - kAXMenuBarAttribute, - (CFTypeRef*)&menubars_ref); - if (error == kAXErrorSuccess) { - error = AXUIElementCopyAttributeValue(menubars_ref, - kAXVisibleChildrenAttribute, - (CFTypeRef*)&children_ref ); - - if (error == kAXErrorSuccess) { - uint32_t count = CFArrayGetCount(children_ref); - - for (int i = 1; i < count; i++) { - AXUIElementRef item = CFArrayGetValueAtIndex(children_ref, i); - CFTypeRef title = ax_get_title(item); - - if (title) { - uint32_t buffer_len = 2*CFStringGetLength(title); - char buffer[2*CFStringGetLength(title)]; - CFStringGetCString(title, buffer, buffer_len, kCFStringEncodingUTF8); - printf("%s\n", buffer); - CFRelease(title); - } - } - } - if (menubars_ref) CFRelease(menubars_ref); - if (children_ref) CFRelease(children_ref); - } -} - -AXUIElementRef ax_get_extra_menu_item(char* alias) { - pid_t pid = 0; - CGRect bounds = CGRectNull; - CFArrayRef window_list = CGWindowListCopyWindowInfo(kCGWindowListOptionAll, - kCGNullWindowID ); - char owner_buffer[256]; - char name_buffer[256]; - char buffer[512]; - int window_count = CFArrayGetCount(window_list); - for (int i = 0; i < window_count; ++i) { - CFDictionaryRef dictionary = CFArrayGetValueAtIndex(window_list, i); - if (!dictionary) continue; - - CFStringRef owner_ref = CFDictionaryGetValue(dictionary, - kCGWindowOwnerName); - - CFNumberRef owner_pid_ref = CFDictionaryGetValue(dictionary, - kCGWindowOwnerPID); - - CFStringRef name_ref = CFDictionaryGetValue(dictionary, kCGWindowName); - CFNumberRef layer_ref = CFDictionaryGetValue(dictionary, kCGWindowLayer); - CFDictionaryRef bounds_ref = CFDictionaryGetValue(dictionary, - kCGWindowBounds); - - if (!name_ref || !owner_ref || !owner_pid_ref || !layer_ref || !bounds_ref) - continue; - - long long int layer = 0; - CFNumberGetValue(layer_ref, CFNumberGetType(layer_ref), &layer); - uint64_t owner_pid = 0; - CFNumberGetValue(owner_pid_ref, - CFNumberGetType(owner_pid_ref), - &owner_pid ); - - if (layer != 0x19) continue; - bounds = CGRectNull; - if (!CGRectMakeWithDictionaryRepresentation(bounds_ref, &bounds)) continue; - CFStringGetCString(owner_ref, - owner_buffer, - sizeof(owner_buffer), - kCFStringEncodingUTF8); - - CFStringGetCString(name_ref, - name_buffer, - sizeof(name_buffer), - kCFStringEncodingUTF8); - snprintf(buffer, sizeof(buffer), "%s,%s", owner_buffer, name_buffer); - - if (strcmp(buffer, alias) == 0) { - pid = owner_pid; - break; - } - } - CFRelease(window_list); - if (!pid) return NULL; - - AXUIElementRef app = AXUIElementCreateApplication(pid); - if (!app) return NULL; - AXUIElementRef result = NULL; - CFTypeRef extras = NULL; - CFArrayRef children_ref = NULL; - AXError error = AXUIElementCopyAttributeValue(app, - kAXExtrasMenuBarAttribute, - &extras ); - if (error == kAXErrorSuccess) { - error = AXUIElementCopyAttributeValue(extras, - kAXVisibleChildrenAttribute, - (CFTypeRef*)&children_ref ); - - if (error == kAXErrorSuccess) { - uint32_t count = CFArrayGetCount(children_ref); - for (uint32_t i = 0; i < count; i++) { - AXUIElementRef item = CFArrayGetValueAtIndex(children_ref, i); - CFTypeRef position_ref = NULL; - CFTypeRef size_ref = NULL; - AXUIElementCopyAttributeValue(item, kAXPositionAttribute, - &position_ref ); - AXUIElementCopyAttributeValue(item, kAXSizeAttribute, - &size_ref ); - if (!position_ref || !size_ref) continue; - - CGPoint position = CGPointZero; - AXValueGetValue(position_ref, kAXValueCGPointType, &position); - CGSize size = CGSizeZero; - AXValueGetValue(size_ref, kAXValueCGSizeType, &size); - CFRelease(position_ref); - CFRelease(size_ref); - // The offset is exactly 8 on macOS Sonoma... - // printf("%f %f\n", position.x, bounds.origin.x); - if (error == kAXErrorSuccess - && fabs(position.x - bounds.origin.x) <= 10) { - result = item; - break; - } - } - } - } - - CFRelease(app); - return result; -} - -extern int SLSMainConnectionID(); -extern void SLSSetMenuBarVisibilityOverrideOnDisplay(int cid, int did, bool enabled); -extern void SLSSetMenuBarVisibilityOverrideOnDisplay(int cid, int did, bool enabled); -extern void SLSSetMenuBarInsetAndAlpha(int cid, double u1, double u2, float alpha); -void ax_select_menu_extra(char* alias) { - AXUIElementRef item = ax_get_extra_menu_item(alias); - if (!item) return; - SLSSetMenuBarInsetAndAlpha(SLSMainConnectionID(), 0, 1, 0.0); - SLSSetMenuBarVisibilityOverrideOnDisplay(SLSMainConnectionID(), 0, true); - SLSSetMenuBarInsetAndAlpha(SLSMainConnectionID(), 0, 1, 0.0); - ax_perform_click(item); - SLSSetMenuBarVisibilityOverrideOnDisplay(SLSMainConnectionID(), 0, false); - SLSSetMenuBarInsetAndAlpha(SLSMainConnectionID(), 0, 1, 1.0); - CFRelease(item); -} - -extern void _SLPSGetFrontProcess(ProcessSerialNumber* psn); -extern void SLSGetConnectionIDForPSN(int cid, ProcessSerialNumber* psn, int* cid_out); -extern void SLSConnectionGetPID(int cid, pid_t* pid_out); -AXUIElementRef ax_get_front_app() { - ProcessSerialNumber psn; - _SLPSGetFrontProcess(&psn); - int target_cid; - SLSGetConnectionIDForPSN(SLSMainConnectionID(), &psn, &target_cid); - - pid_t pid; - SLSConnectionGetPID(target_cid, &pid); - return AXUIElementCreateApplication(pid); -} - -int main (int argc, char **argv) { - if (argc == 1) { - printf("Usage: %s [-l | -s id/alias ]\n", argv[0]); - exit(0); - } - ax_init(); - if (strcmp(argv[1], "-l") == 0) { - AXUIElementRef app = ax_get_front_app(); - if (!app) return 1; - ax_print_menu_options(app); - CFRelease(app); - } else if (argc == 3 && strcmp(argv[1], "-s") == 0) { - int id = 0; - if (sscanf(argv[2], "%d", &id) == 1) { - AXUIElementRef app = ax_get_front_app(); - if (!app) return 1; - ax_select_menu_option(app, id); - CFRelease(app); - } else ax_select_menu_extra(argv[2]); - } - return 0; -} diff --git a/sketchybar/.config/sketchybar/icons.lua b/sketchybar/.config/sketchybar/icons.lua deleted file mode 100644 index e273178..0000000 --- a/sketchybar/.config/sketchybar/icons.lua +++ /dev/null @@ -1,93 +0,0 @@ -local settings = require("settings") - -local icons = { - sf_symbols = { - plus = "􀅼", - loading = "􀖇", - apple = "􀣺", - gear = "􀍟", - cpu = "􀫥", - clipboard = "􀉄", - - switch = { - on = "􁏮", - off = "􁏯", - }, - volume = { - _100="􀊩", - _66="􀊧", - _33="􀊥", - _10="􀊡", - _0="􀊣", - }, - battery = { - _100 = "■■■■■■", - _80 = "■■■■□", - _60 = "■■■□□", - _40 = "■■□□□", - _20 = "■□□□□", - _0 = "◧□□□□", - charging = "charging" - }, - wifi = { - upload = "􀄨", - download = "􀄩", - connected = "􀙇", - disconnected = "􀙈", - router = "􁓤", - }, - media = { - back = "􀊊", - forward = "􀊌", - play_pause = "􀊈", - }, - }, - - -- Alternative NerdFont icons - nerdfont = { - plus = "", - loading = "", - apple = "", - gear = "", - cpu = "", - clipboard = "Missing Icon", - - switch = { - on = "󱨥", - off = "󱨦", - }, - volume = { - _100="", - _66="", - _33="", - _10="", - _0="", - }, - battery = { - _100 = "", - _75 = "", - _50 = "", - _25 = "", - _0 = "", - charging = "" - }, - wifi = { - upload = "", - download = "", - connected = "󰖩", - disconnected = "󰖪", - router = "Missing Icon" - }, - media = { - back = "", - forward = "", - play_pause = "", - }, - }, -} - -if not (settings.icons == "NerdFont") then - return icons.sf_symbols -else - return icons.nerdfont -end diff --git a/sketchybar/.config/sketchybar/init.lua b/sketchybar/.config/sketchybar/init.lua deleted file mode 100644 index e1bf892..0000000 --- a/sketchybar/.config/sketchybar/init.lua +++ /dev/null @@ -1,16 +0,0 @@ --- Require the sketchybar module -sbar = require("sketchybar") - --- Set the bar name, if you are using another bar instance than sketchybar --- sbar.set_bar_name("bottom_bar") - --- Bundle the entire initial configuration into a single message to sketchybar -sbar.begin_config() -require("bar") -require("default") -require("items") -sbar.end_config() - --- Run the event loop of the sketchybar module (without this there will be no --- callback functions executed in the lua module) -sbar.event_loop() diff --git a/sketchybar/.config/sketchybar/items/apple.lua b/sketchybar/.config/sketchybar/items/apple.lua deleted file mode 100644 index bbe9be9..0000000 --- a/sketchybar/.config/sketchybar/items/apple.lua +++ /dev/null @@ -1,27 +0,0 @@ -local colors = require("colors") -local icons = require("icons") -local settings = require("settings") - --- Padding item required because of bracket -sbar.add("item", { width = 5 }) - -local apple = sbar.add("item", { - icon = { - font = { size = 16.0 }, - string = icons.apple, - padding_right = 12, - padding_left = 10, - }, - label = { drawing = false }, - background = { - color = colors.bg2, - border_color = colors.black, - border_width = 3 - }, - padding_left = 1, - padding_right = 1, - click_script = "$CONFIG_DIR/helpers/menus/bin/menus -s 0" -}) - --- Padding item required because of bracket -sbar.add("item", { width = 7 }) diff --git a/sketchybar/.config/sketchybar/items/calendar.lua b/sketchybar/.config/sketchybar/items/calendar.lua deleted file mode 100644 index b4cb4e4..0000000 --- a/sketchybar/.config/sketchybar/items/calendar.lua +++ /dev/null @@ -1,47 +0,0 @@ -local settings = require("settings") -local colors = require("colors") - --- Padding item required because of bracket -sbar.add("item", { position = "right", width = settings.group_paddings }) - -local cal = sbar.add("item", { - icon = { - color = colors.white, - padding_left = 12, - font = { - style = settings.font.style_map["Bold"], - size = 14.0, - }, - }, - label = { - color = colors.white, - padding_right = 16, - width = 70, - align = "right", - font = { family = settings.font.numbers }, - }, - position = "right", - update_freq = 30, - padding_left = 1, - padding_right = 1, - background = { - color = colors.bg2, - border_color = colors.black, - border_width = 3 - }, -}) - --- Double border for calendar using a single item bracket -sbar.add("bracket", { cal.name }, { - background = { - color = colors.transparent, - border_color = colors.grey, - } -}) - --- Padding item required because of bracket -sbar.add("item", { position = "right", width = settings.group_paddings }) - -cal:subscribe({ "forced", "routine", "system_woke" }, function(env) - cal:set({ icon = os.date("􀉉 %A %d %B"), label = os.date(" 􀐫 %H:%M") }) -end) diff --git a/sketchybar/.config/sketchybar/items/executable_battery.sh b/sketchybar/.config/sketchybar/items/executable_battery.sh new file mode 100644 index 0000000..05d0458 --- /dev/null +++ b/sketchybar/.config/sketchybar/items/executable_battery.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +sketchybar --add item battery right \ + --set battery update_freq=180 \ + script="$PLUGIN_DIR/battery.sh" \ + --subscribe battery system_woke power_source_change diff --git a/sketchybar/.config/sketchybar/items/executable_calendar.sh b/sketchybar/.config/sketchybar/items/executable_calendar.sh new file mode 100644 index 0000000..eba8bd7 --- /dev/null +++ b/sketchybar/.config/sketchybar/items/executable_calendar.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +sketchybar --add item calendar right \ + --set calendar icon=􀧞 \ + update_freq=15 \ + script="$PLUGIN_DIR/calendar.sh" diff --git a/sketchybar/.config/sketchybar/items/executable_cpu.sh b/sketchybar/.config/sketchybar/items/executable_cpu.sh new file mode 100644 index 0000000..4659898 --- /dev/null +++ b/sketchybar/.config/sketchybar/items/executable_cpu.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +sketchybar --add item cpu right \ + --set cpu update_freq=15 \ + icon=􀧓 \ + script="$PLUGIN_DIR/cpu.sh" diff --git a/sketchybar/.config/sketchybar/items/executable_front_app.sh b/sketchybar/.config/sketchybar/items/executable_front_app.sh new file mode 100644 index 0000000..d42f3a6 --- /dev/null +++ b/sketchybar/.config/sketchybar/items/executable_front_app.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +sketchybar --add item front_app left \ + --set front_app background.color=$ACCENT_COLOR \ + icon.color=$ITEM_COLOR \ + label.color=$ITEM_COLOR \ + icon.font="sketchybar-app-font:Regular:12.0" \ + label.font="SF Pro:Semibold:12.0" \ + script="$PLUGIN_DIR/front_app.sh" \ + --subscribe front_app front_app_switched diff --git a/sketchybar/.config/sketchybar/items/executable_media.sh b/sketchybar/.config/sketchybar/items/executable_media.sh new file mode 100644 index 0000000..4b56c15 --- /dev/null +++ b/sketchybar/.config/sketchybar/items/executable_media.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +sketchybar --add item media e \ + --set media label.color=$ACCENT_COLOR \ + label.max_chars=20 \ + icon.padding_left=0 \ + scroll_texts=on \ + icon=􀑪 \ + icon.color=$ACCENT_COLOR \ + background.drawing=off \ + script="$PLUGIN_DIR/media.sh" \ + --subscribe media media_change diff --git a/sketchybar/.config/sketchybar/items/executable_memory.sh b/sketchybar/.config/sketchybar/items/executable_memory.sh new file mode 100644 index 0000000..43fd275 --- /dev/null +++ b/sketchybar/.config/sketchybar/items/executable_memory.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +USAGE="$(memory_pressure | grep "System-wide memory free percentage:" | awk '{ printf("%02.0f\n", 100-$5"%") }')%" + +sketchybar --add item memory right \ + --set memory update_freq=15 \ + icon=􀧖 \ + label="$USAGE" \ + script="$PLUGIN_DIR/memory.sh" diff --git a/sketchybar/.config/sketchybar/items/executable_spaces.sh b/sketchybar/.config/sketchybar/items/executable_spaces.sh new file mode 100644 index 0000000..6e4a7a9 --- /dev/null +++ b/sketchybar/.config/sketchybar/items/executable_spaces.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +sketchybar --add event aerospace_workspace_change + +sketchybar --add item aerospace_dummy left \ + --set aerospace_dummy display=0 \ + script="$PLUGIN_DIR/spaces.sh" \ + --subscribe aerospace_dummy aerospace_workspace_change + +for m in $(aerospace list-monitors | awk '{print $1}'); do + for sid in $(aerospace list-workspaces --monitor $m); do + sketchybar --add space space.$sid left \ + --set space.$sid space=$sid \ + icon=$sid \ + background.color=$TRANSPARENT \ + label.color=$ACCENT_COLOR \ + icon.color=$ACCENT_COLOR \ + script="" \ + display=$m \ + label.font="sketchybar-app-font:Regular:12.0" \ + icon.font="SF Pro:Semibold:12.0" \ + label.padding_right=10 \ + label.y_offset=-1 \ + click_script="$PLUGIN_DIR/space_click.sh $sid" + + apps=$(aerospace list-windows --monitor "$m" --workspace "$sid" | + awk -F '|' '{gsub(/^ *| *$/, "", $2); if (!seen[$2]++) print $2}') + + icon_strip="" + if [ "${apps}" != "" ]; then + while read -r app; do + icon_strip+=" $($PLUGIN_DIR/icons.sh "$app")" + done <<<"${apps}" + else + icon_strip=" —" + fi + + sketchybar --set space.$sid label="$icon_strip" + + done + + for empty_space in $(aerospace list-workspaces --monitor $m --empty); do + sketchybar --set space.$empty_space display=0 + done + for focus in $(aerospace list-workspaces --focused); do + sketchybar --set space.$focus background.drawing=on \ + background.color=$ACCENT_COLOR \ + label.color=$ITEM_COLOR \ + icon.color=$ITEM_COLOR + done +done diff --git a/sketchybar/.config/sketchybar/items/executable_volume.sh b/sketchybar/.config/sketchybar/items/executable_volume.sh new file mode 100644 index 0000000..cf61251 --- /dev/null +++ b/sketchybar/.config/sketchybar/items/executable_volume.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +sketchybar --add item volume right \ + --set volume script="$PLUGIN_DIR/volume.sh" \ + --subscribe volume volume_change diff --git a/sketchybar/.config/sketchybar/items/executable_wifi.sh b/sketchybar/.config/sketchybar/items/executable_wifi.sh new file mode 100644 index 0000000..c92b6e2 --- /dev/null +++ b/sketchybar/.config/sketchybar/items/executable_wifi.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +sketchybar --add item wifi right \ + --set wifi \ + icon="􀙥" \ + label="Updating..." \ + script="$PLUGIN_DIR/wifi.sh" \ + --subscribe wifi wifi_change diff --git a/sketchybar/.config/sketchybar/items/init.lua b/sketchybar/.config/sketchybar/items/init.lua deleted file mode 100644 index 5cc7c0e..0000000 --- a/sketchybar/.config/sketchybar/items/init.lua +++ /dev/null @@ -1,7 +0,0 @@ -require("items.apple") -require("items.menus") -require("items.spaces") --- require("items.space_mode") -require("items.calendar") -require("items.widgets") -require("items.media") diff --git a/sketchybar/.config/sketchybar/items/media.lua b/sketchybar/.config/sketchybar/items/media.lua deleted file mode 100644 index adcaea2..0000000 --- a/sketchybar/.config/sketchybar/items/media.lua +++ /dev/null @@ -1,118 +0,0 @@ -local icons = require("icons") -local colors = require("colors") - -local whitelist = { ["Spotify"] = true, - ["Music"] = true }; - -local media_cover = sbar.add("item", { - position = "right", - background = { - image = { - string = "media.artwork", - scale = 0.85, - }, - color = colors.transparent, - }, - label = { drawing = false }, - icon = { drawing = false }, - drawing = false, - updates = true, - popup = { - align = "center", - horizontal = true, - } -}) - -local media_artist = sbar.add("item", { - position = "right", - drawing = false, - padding_left = 3, - padding_right = 0, - width = 0, - icon = { drawing = false }, - label = { - width = 0, - font = { size = 9 }, - color = colors.with_alpha(colors.white, 0.6), - max_chars = 18, - y_offset = 6, - }, -}) - -local media_title = sbar.add("item", { - position = "right", - drawing = false, - padding_left = 3, - padding_right = 0, - icon = { drawing = false }, - label = { - font = { size = 11 }, - width = 0, - max_chars = 16, - y_offset = -5, - }, -}) - -sbar.add("item", { - position = "popup." .. media_cover.name, - icon = { string = icons.media.back }, - label = { drawing = false }, - click_script = "nowplaying-cli previous", -}) -sbar.add("item", { - position = "popup." .. media_cover.name, - icon = { string = icons.media.play_pause }, - label = { drawing = false }, - click_script = "nowplaying-cli togglePlayPause", -}) -sbar.add("item", { - position = "popup." .. media_cover.name, - icon = { string = icons.media.forward }, - label = { drawing = false }, - click_script = "nowplaying-cli next", -}) - -local interrupt = 0 -local function animate_detail(detail) - if (not detail) then interrupt = interrupt - 1 end - if interrupt > 0 and (not detail) then return end - - sbar.animate("tanh", 30, function() - media_artist:set({ label = { width = detail and "dynamic" or 0 } }) - media_title:set({ label = { width = detail and "dynamic" or 0 } }) - end) -end - -media_cover:subscribe("media_change", function(env) - if whitelist[env.INFO.app] then - local drawing = (env.INFO.state == "playing") - media_artist:set({ drawing = drawing, label = env.INFO.artist, }) - media_title:set({ drawing = drawing, label = env.INFO.title, }) - media_cover:set({ drawing = drawing }) - - if drawing then - animate_detail(true) - interrupt = interrupt + 1 - sbar.delay(5, animate_detail) - else - media_cover:set({ popup = { drawing = false } }) - end - end -end) - -media_cover:subscribe("mouse.entered", function(env) - interrupt = interrupt + 1 - animate_detail(true) -end) - -media_cover:subscribe("mouse.exited", function(env) - animate_detail(false) -end) - -media_cover:subscribe("mouse.clicked", function(env) - media_cover:set({ popup = { drawing = "toggle" }}) -end) - -media_title:subscribe("mouse.exited.global", function(env) - media_cover:set({ popup = { drawing = false }}) -end) diff --git a/sketchybar/.config/sketchybar/items/menus.lua b/sketchybar/.config/sketchybar/items/menus.lua deleted file mode 100644 index 22ca528..0000000 --- a/sketchybar/.config/sketchybar/items/menus.lua +++ /dev/null @@ -1,76 +0,0 @@ -local colors = require("colors") -local icons = require("icons") -local settings = require("settings") - -local menu_watcher = sbar.add("item", { - drawing = false, - updates = false, -}) -local space_menu_swap = sbar.add("item", { - drawing = false, - updates = true, -}) -sbar.add("event", "swap_menus_and_spaces") - -local max_items = 15 -local menu_items = {} -for i = 1, max_items, 1 do - local menu = sbar.add("item", "menu." .. i, { - padding_left = settings.paddings, - padding_right = settings.paddings, - drawing = false, - icon = { drawing = false }, - label = { - font = { - style = settings.font.style_map[i == 1 and "Heavy" or "Semibold"] - }, - padding_left = 6, - padding_right = 6, - }, - click_script = "$CONFIG_DIR/helpers/menus/bin/menus -s " .. i, - }) - - menu_items[i] = menu -end - -sbar.add("bracket", { '/menu\\..*/' }, { - background = { color = colors.bg1 } -}) - -local menu_padding = sbar.add("item", "menu.padding", { - drawing = false, - width = 5 -}) - -local function update_menus(env) - sbar.exec("$CONFIG_DIR/helpers/menus/bin/menus -l", function(menus) - sbar.set('/menu\\..*/', { drawing = false }) - menu_padding:set({ drawing = true }) - id = 1 - for menu in string.gmatch(menus, '[^\r\n]+') do - if id < max_items then - menu_items[id]:set( { label = menu, drawing = true } ) - else break end - id = id + 1 - end - end) -end - --- menu_watcher:subscribe("front_app_switched", update_menus) - --- space_menu_swap:subscribe("swap_menus_and_spaces", function(env) --- local drawing = menu_items[1]:query().geometry.drawing == "on" --- if drawing then --- menu_watcher:set( { updates = false }) --- sbar.set("/menu\\..*/", { drawing = false }) --- sbar.set("/space\\..*/", { drawing = true }) --- sbar.set("front_app", { drawing = true }) --- else --- menu_watcher:set( { updates = true }) --- sbar.set("/space\\..*/", { drawing = false }) --- sbar.set("front_app", { drawing = false }) --- update_menus() --- end --- end) - -return menu_watcher diff --git a/sketchybar/.config/sketchybar/items/spaces.lua b/sketchybar/.config/sketchybar/items/spaces.lua deleted file mode 100644 index 4a245ea..0000000 --- a/sketchybar/.config/sketchybar/items/spaces.lua +++ /dev/null @@ -1,145 +0,0 @@ -local colors = require("colors") -local icons = require("icons") -local settings = require("settings") -local app_icons = require("helpers.app_icons") - -local spaces = {} - -for i = 1, 10, 1 do - local space = sbar.add("space", "space." .. i, { - space = i, - icon = { - font = { family = settings.font.numbers }, - string = i, - padding_left = 15, - padding_right = 8, - color = colors.white, - highlight_color = colors.red, - }, - label = { - padding_right = 20, - color = colors.grey, - highlight_color = colors.white, - font = "sketchybar-app-font:Regular:16.0", - y_offset = -1, - }, - padding_right = 1, - padding_left = 1, - background = { - color = colors.bg1, - border_width = 3, - border_color = colors.transparent, - }, - popup = { background = { border_width = 5, border_color = colors.black } } - }) - - spaces[i] = space - - -- Padding space - sbar.add("space", "space.padding." .. i, { - space = i, - script = "", - width = settings.group_paddings, - }) - - local space_popup = sbar.add("item", { - position = "popup." .. space.name, - padding_left= 5, - padding_right= 0, - background = { - drawing = true, - image = { - corner_radius = 9, - scale = 0.2 - } - } - }) - - space:subscribe("space_change", function(env) - local selected = env.SELECTED == "true" - local color = selected and colors.red or colors.bg2 - space:set({ - icon = { highlight = selected, }, - label = { highlight = selected }, - background = { border_color = selected and colors.black or colors.bg2 } - }) - space_bracket:set({ - background = { border_color = selected and colors.black or colors.bg2 } - }) - end) - - space:subscribe("mouse.clicked", function(env) - if env.BUTTON == "other" then - space_popup:set({ background = { image = "space." .. env.SID } }) - space:set({ popup = { drawing = "toggle" } }) - else - local op = (env.BUTTON == "right") and "--destroy" or "--focus" - sbar.exec("yabai -m space " .. op .. " " .. env.SID) - end - end) - - space:subscribe("mouse.exited", function(_) - space:set({ popup = { drawing = false } }) - end) -end - -local space_window_observer = sbar.add("item", { - drawing = false, - updates = true, -}) - - -space_window_observer:subscribe("space_windows_change", function(env) - local icon_line = "" - local no_app = true - for app, count in pairs(env.INFO.apps) do - no_app = false - local lookup = app_icons[app] - local icon = ((lookup == nil) and app_icons["default"] or lookup) - icon_line = icon_line .. " " .. icon - end - - if (no_app) then - icon_line = " —" - end - sbar.animate("tanh", 10, function() - spaces[env.INFO.space]:set({ label = icon_line }) - end) -end) - --- spaces_indicator:subscribe("swap_menus_and_spaces", function(env) --- local currently_on = spaces_indicator:query().icon.value == icons.switch.on --- spaces_indicator:set({ --- icon = currently_on and icons.switch.off or icons.switch.on --- }) --- end) - --- spaces_indicator:subscribe("mouse.entered", function(env) --- sbar.animate("tanh", 30, function() --- spaces_indicator:set({ --- background = { --- color = { alpha = 1.0 }, --- border_color = { alpha = 1.0 }, --- }, --- icon = { color = colors.bg1 }, --- label = { width = "dynamic" } --- }) --- end) --- end) - --- spaces_indicator:subscribe("mouse.exited", function(env) --- sbar.animate("tanh", 30, function() --- spaces_indicator:set({ --- background = { --- color = { alpha = 0.0 }, --- border_color = { alpha = 0.0 }, --- }, --- icon = { color = colors.grey }, --- label = { width = 0, } --- }) --- end) --- end) - --- spaces_indicator:subscribe("mouse.clicked", function(env) --- sbar.trigger("swap_menus_and_spaces") --- end) diff --git a/sketchybar/.config/sketchybar/items/widgets/battery.lua b/sketchybar/.config/sketchybar/items/widgets/battery.lua deleted file mode 100644 index 8ba4170..0000000 --- a/sketchybar/.config/sketchybar/items/widgets/battery.lua +++ /dev/null @@ -1,105 +0,0 @@ -local icons = require("icons") -local colors = require("colors") -local settings = require("settings") - -local battery = sbar.add("item", "widgets.battery", { - position = "right", - icon = { - font = { - style = settings.font.style_map["Regular"], - size = 12.0, - } - }, - label = { font = { family = settings.font.numbers } }, - update_freq = 180, - popup = { align = "center" } -}) - -local remaining_time = sbar.add("item", { - position = "popup." .. battery.name, - icon = { - string = "Time remaining:", - width = 100, - align = "left" - }, - label = { - string = "??:??h", - width = 100, - align = "right" - }, -}) - - -battery:subscribe({"routine", "power_source_change", "system_woke"}, function() - sbar.exec("pmset -g batt", function(batt_info) - local icon = "!" - local label = "?" - - local found, _, charge = batt_info:find("(%d+)%%") - if found then - charge = tonumber(charge) - label = charge .. "%" - end - - local color = colors.green - local charging, _, _ = batt_info:find("AC Power") - - if charging then - icon = icons.battery.charging - else - if found and charge == 0 then - icon = icons.battery._0 - color = colors.red - elseif found and charge <= 20 then - icon = icons.battery._20 - color = colors.orange - elseif found and charge <= 40 then - icon = icons.battery._40 - elseif found and charge <= 60 then - icon = icons.battery._60 - elseif found and charge <= 80 then - icon = icons.battery._80 - elseif found and charge <= 100 then - icon = icons.battery._100 - else - icon = icons.battery._0 - color = colors.red - end - end - - local lead = "" - if found and charge < 10 then - lead = "0" - end - - battery:set({ - icon = { - string = icon, - color = color - }, - label = { string = lead .. label }, - }) - end) -end) - -battery:subscribe("mouse.clicked", function(env) - local drawing = battery:query().popup.drawing - battery:set( { popup = { drawing = "toggle" } }) - - if drawing == "off" then - sbar.exec("pmset -g batt", function(batt_info) - local found, _, remaining = batt_info:find(" (%d+:%d+) remaining") - local label = found and remaining .. "h" or "No estimate" - remaining_time:set( { label = label }) - end) - end -end) - -sbar.add("bracket", "widgets.battery.bracket", { battery.name }, { - background = { color = colors.bg1 } -}) - -sbar.add("item", "widgets.battery.padding", { - position = "right", - width = settings.group_paddings -}) diff --git a/sketchybar/.config/sketchybar/items/widgets/cpu.lua b/sketchybar/.config/sketchybar/items/widgets/cpu.lua deleted file mode 100644 index 65b17b4..0000000 --- a/sketchybar/.config/sketchybar/items/widgets/cpu.lua +++ /dev/null @@ -1,69 +0,0 @@ -local icons = require("icons") -local colors = require("colors") -local settings = require("settings") - --- Execute the event provider binary which provides the event "cpu_update" for --- the cpu load data, which is fired every 2.0 seconds. -sbar.exec("killall cpu_load >/dev/null; $CONFIG_DIR/helpers/event_providers/cpu_load/bin/cpu_load cpu_update 2.0") - -local cpu = sbar.add("graph", "widgets.cpu" , 62, { - position = "right", - graph = { color = colors.blue }, - background = { - height = 22, - color = { alpha = 0 }, - border_color = { alpha = 0 }, - drawing = true, - }, - icon = { string = icons.cpu }, - label = { - string = "cpu ??%", - font = { - family = settings.font.numbers, - style = settings.font.style_map["Bold"], - size = 9.0, - }, - align = "right", - padding_right = 0, - width = 0, - y_offset = 4 - }, - padding_right = settings.paddings + 6 -}) - -cpu:subscribe("cpu_update", function(env) - -- Also available: env.user_load, env.sys_load - local load = tonumber(env.total_load) - cpu:push({ load / 100. }) - - local color = colors.blue - if load > 30 then - if load < 60 then - color = colors.yellow - elseif load < 80 then - color = colors.orange - else - color = colors.red - end - end - - cpu:set({ - graph = { color = color }, - label = "cpu " .. env.total_load .. "%", - }) -end) - -cpu:subscribe("mouse.clicked", function(env) - sbar.exec("open -a 'Activity Monitor'") -end) - --- Background around the cpu item -sbar.add("bracket", "widgets.cpu.bracket", { cpu.name }, { - background = { color = colors.bg1 } -}) - --- Background around the cpu item -sbar.add("item", "widgets.cpu.padding", { - position = "right", - width = settings.group_paddings -}) diff --git a/sketchybar/.config/sketchybar/items/widgets/init.lua b/sketchybar/.config/sketchybar/items/widgets/init.lua deleted file mode 100644 index c919c76..0000000 --- a/sketchybar/.config/sketchybar/items/widgets/init.lua +++ /dev/null @@ -1,4 +0,0 @@ -require("items.widgets.battery") -require("items.widgets.volume") -require("items.widgets.wifi") -require("items.widgets.cpu") diff --git a/sketchybar/.config/sketchybar/items/widgets/volume.lua b/sketchybar/.config/sketchybar/items/widgets/volume.lua deleted file mode 100644 index 7005953..0000000 --- a/sketchybar/.config/sketchybar/items/widgets/volume.lua +++ /dev/null @@ -1,150 +0,0 @@ -local colors = require("colors") -local icons = require("icons") -local settings = require("settings") - -local popup_width = 250 - -local volume_percent = sbar.add("item", "widgets.volume1", { - position = "right", - icon = { drawing = false }, - label = { - string = "??%", - padding_left = -1, - font = { family = settings.font.numbers } - }, -}) - -local volume_icon = sbar.add("item", "widgets.volume2", { - position = "right", - padding_right = -1, - icon = { - string = icons.volume._100, - width = 0, - align = "left", - color = colors.grey, - font = { - style = settings.font.style_map["Regular"], - size = 14.0, - }, - }, - label = { - width = 25, - align = "left", - font = { - style = settings.font.style_map["Regular"], - size = 14.0, - }, - }, -}) - -local volume_bracket = sbar.add("bracket", "widgets.volume.bracket", { - volume_icon.name, - volume_percent.name -}, { - background = { color = colors.bg1 }, - popup = { align = "center" } -}) - -sbar.add("item", "widgets.volume.padding", { - position = "right", - width = settings.group_paddings -}) - -local volume_slider = sbar.add("slider", popup_width, { - position = "popup." .. volume_bracket.name, - slider = { - highlight_color = colors.blue, - background = { - height = 6, - corner_radius = 3, - color = colors.bg2, - }, - knob= { - string = "􀀁", - drawing = true, - }, - }, - background = { color = colors.bg1, height = 2, y_offset = -20 }, - click_script = 'osascript -e "set volume output volume $PERCENTAGE"' -}) - -volume_percent:subscribe("volume_change", function(env) - local volume = tonumber(env.INFO) - local icon = icons.volume._0 - if volume > 60 then - icon = icons.volume._100 - elseif volume > 30 then - icon = icons.volume._66 - elseif volume > 10 then - icon = icons.volume._33 - elseif volume > 0 then - icon = icons.volume._10 - end - - local lead = "" - if volume < 10 then - lead = "0" - end - - volume_icon:set({ label = icon }) - volume_percent:set({ label = lead .. volume .. "%" }) - volume_slider:set({ slider = { percentage = volume } }) -end) - -local function volume_collapse_details() - local drawing = volume_bracket:query().popup.drawing == "on" - if not drawing then return end - volume_bracket:set({ popup = { drawing = false } }) - sbar.remove('/volume.device\\.*/') -end - -local current_audio_device = "None" -local function volume_toggle_details(env) - if env.BUTTON == "right" then - sbar.exec("open /System/Library/PreferencePanes/Sound.prefpane") - return - end - - local should_draw = volume_bracket:query().popup.drawing == "off" - if should_draw then - volume_bracket:set({ popup = { drawing = true } }) - sbar.exec("SwitchAudioSource -t output -c", function(result) - current_audio_device = result:sub(1, -2) - sbar.exec("SwitchAudioSource -a -t output", function(available) - current = current_audio_device - local color = colors.grey - local counter = 0 - - for device in string.gmatch(available, '[^\r\n]+') do - local color = colors.grey - if current == device then - color = colors.white - end - sbar.add("item", "volume.device." .. counter, { - position = "popup." .. volume_bracket.name, - width = popup_width, - align = "center", - label = { string = device, color = color }, - click_script = 'SwitchAudioSource -s "' .. device .. '" && sketchybar --set /volume.device\\.*/ label.color=' .. colors.grey .. ' --set $NAME label.color=' .. colors.white - - }) - counter = counter + 1 - end - end) - end) - else - volume_collapse_details() - end -end - -local function volume_scroll(env) - local delta = env.SCROLL_DELTA - sbar.exec('osascript -e "set volume output volume (output volume of (get volume settings) + ' .. delta .. ')"') -end - --- volume_icon:subscribe("mouse.clicked", volume_toggle_details) --- volume_icon:subscribe("mouse.scrolled", volume_scroll) --- volume_percent:subscribe("mouse.clicked", volume_toggle_details) --- volume_percent:subscribe("mouse.exited.global", volume_collapse_details) --- volume_percent:subscribe("mouse.scrolled", volume_scroll) - diff --git a/sketchybar/.config/sketchybar/items/widgets/wifi.lua b/sketchybar/.config/sketchybar/items/widgets/wifi.lua deleted file mode 100644 index c558085..0000000 --- a/sketchybar/.config/sketchybar/items/widgets/wifi.lua +++ /dev/null @@ -1,245 +0,0 @@ -local icons = require("icons") -local colors = require("colors") -local settings = require("settings") - --- Execute the event provider binary which provides the event "network_update" --- for the network interface "en0", which is fired every 2.0 seconds. -sbar.exec("killall network_load >/dev/null; $CONFIG_DIR/helpers/event_providers/network_load/bin/network_load en0 network_update 2.0") - -local popup_width = 250 - -local wifi_up = sbar.add("item", "widgets.wifi1", { - position = "right", - padding_left = -5, - width = 0, - icon = { - padding_right = 0, - font = { - style = settings.font.style_map["Bold"], - size = 9.0, - }, - string = icons.wifi.upload, - }, - label = { - font = { - family = settings.font.mono, - style = settings.font.style_map["Bold"], - size = 9.0, - }, - color = colors.red, - string = "??? Bps", - }, - y_offset = 4, -}) - -local wifi_down = sbar.add("item", "widgets.wifi2", { - position = "right", - padding_left = -5, - icon = { - padding_right = 0, - font = { - style = settings.font.style_map["Bold"], - size = 9.0, - }, - string = icons.wifi.download, - }, - label = { - font = { - family = settings.font.mono, - style = settings.font.style_map["Bold"], - size = 9.0, - }, - color = colors.blue, - string = "??? Bps", - }, - y_offset = -4, -}) - -local wifi = sbar.add("item", "widgets.wifi.padding", { - position = "right", - label = { drawing = true, string = [[HERE]] }, -}) - --- Background around the item -local wifi_bracket = sbar.add("bracket", "widgets.wifi.bracket", { - wifi.name, - wifi_up.name, - wifi_down.name -}, { - background = { color = colors.bg1 }, - popup = { align = "center", height = 30 } -}) - -local ssid = sbar.add("item", { - position = "popup." .. wifi_bracket.name, - icon = { - font = { - style = settings.font.style_map["Bold"] - }, - string = icons.wifi.router, - }, - width = popup_width, - align = "center", - label = { - font = { - size = 15, - style = settings.font.style_map["Bold"] - }, - max_chars = 18, - string = "????????????", - }, - background = { - height = 2, - color = colors.grey, - y_offset = -15 - } -}) - -local hostname = sbar.add("item", { - position = "popup." .. wifi_bracket.name, - icon = { - align = "left", - string = "Hostname:", - width = popup_width / 2, - }, - label = { - max_chars = 20, - string = "????????????", - width = popup_width / 2, - align = "right", - } -}) - -local ip = sbar.add("item", { - position = "popup." .. wifi_bracket.name, - icon = { - align = "left", - string = "IP:", - width = popup_width / 2, - }, - label = { - string = "???.???.???.???", - width = popup_width / 2, - align = "right", - } -}) - -local mask = sbar.add("item", { - position = "popup." .. wifi_bracket.name, - icon = { - align = "left", - string = "Subnet mask:", - width = popup_width / 2, - }, - label = { - string = "???.???.???.???", - width = popup_width / 2, - align = "right", - } -}) - -local router = sbar.add("item", { - position = "popup." .. wifi_bracket.name, - icon = { - align = "left", - string = "Router:", - width = popup_width / 2, - }, - label = { - string = "???.???.???.???", - width = popup_width / 2, - align = "right", - }, -}) - -sbar.add("item", { position = "right", width = settings.group_paddings }) - -wifi_up:subscribe("network_update", function(env) - local up_color = (env.upload == "000 Bps") and colors.grey or colors.red - local down_color = (env.download == "000 Bps") and colors.grey or colors.blue - wifi_up:set({ - icon = { color = up_color }, - label = { - string = env.upload, - color = up_color - } - }) - wifi_down:set({ - icon = { color = down_color }, - label = { - string = env.download, - color = down_color - } - }) -end) - -wifi:subscribe({"wifi_change", "system_woke"}, function(env) - sbar.exec("ipconfig getifaddr en0", function(ip) - local connected = not (ip == "") - wifi:set({ - icon = { - string = connected and icons.wifi.connected or icons.wifi.disconnected, - color = connected and colors.white or colors.red, - }, - }) - if connected then - sbar.exec("ipconfig getsummary en0 | awk -F ' SSID : ' '/ SSID : / {print $2}'", function(ssid_result) - wifi:set({ - label = { string = ssid_result } - }) - end) - else - wifi:set({ - label = { string = "Disconnected" } - }) - end - end) -end) - -local function hide_details() - wifi_bracket:set({ popup = { drawing = false } }) -end - -local function toggle_details() - local should_draw = wifi_bracket:query().popup.drawing == "off" - if should_draw then - wifi_bracket:set({ popup = { drawing = true }}) - sbar.exec("networksetup -getcomputername", function(result) - hostname:set({ label = result }) - end) - sbar.exec("ipconfig getifaddr en0", function(result) - ip:set({ label = result }) - end) - sbar.exec("ipconfig getsummary en0 | awk -F ' SSID : ' '/ SSID : / {print $2}'", function(result) - ssid:set({ label = result }) - end) - sbar.exec("networksetup -getinfo Wi-Fi | awk -F 'Subnet mask: ' '/^Subnet mask: / {print $2}'", function(result) - mask:set({ label = result }) - end) - sbar.exec("networksetup -getinfo Wi-Fi | awk -F 'Router: ' '/^Router: / {print $2}'", function(result) - router:set({ label = result }) - end) - else - hide_details() - end -end - -wifi_up:subscribe("mouse.clicked", toggle_details) -wifi_down:subscribe("mouse.clicked", toggle_details) -wifi:subscribe("mouse.clicked", toggle_details) -wifi:subscribe("mouse.exited.global", hide_details) - -local function copy_label_to_clipboard(env) - local label = sbar.query(env.NAME).label.value - sbar.exec("echo \"" .. label .. "\" | pbcopy") - sbar.set(env.NAME, { label = { string = icons.clipboard, align="center" } }) - sbar.delay(1, function() - sbar.set(env.NAME, { label = { string = label, align = "right" } }) - end) -end - -ssid:subscribe("mouse.clicked", copy_label_to_clipboard) -hostname:subscribe("mouse.clicked", copy_label_to_clipboard) -ip:subscribe("mouse.clicked", copy_label_to_clipboard) -mask:subscribe("mouse.clicked", copy_label_to_clipboard) -router:subscribe("mouse.clicked", copy_label_to_clipboard) \ No newline at end of file diff --git a/sketchybar/.config/sketchybar/plugins/executable_battery.sh b/sketchybar/.config/sketchybar/plugins/executable_battery.sh new file mode 100644 index 0000000..acbd488 --- /dev/null +++ b/sketchybar/.config/sketchybar/plugins/executable_battery.sh @@ -0,0 +1,42 @@ +#!/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=$ITEM_COLOR + ;; +[6-8][0-9]) + ICON="􀺸" + COLOR=$ITEM_COLOR + ;; +[3-5][0-9]) + ICON="􀺶" + COLOR="0xFFd97706" + ;; +[1-2][0-9]) + ICON="􀛩" + COLOR="0xFFf97316" + ;; +*) + ICON="􀛪" + COLOR="0xFFef4444" + ;; +esac + +if [[ $CHARGING != "" ]]; then + ICON="􀢋" + COLOR=$ITEM_COLOR +fi + +# The item invoking this script (name $NAME) will get its icon and label +# updated with the current battery status +sketchybar --set $NAME icon="$ICON" label="${PERCENTAGE}%" icon.color="$COLOR" diff --git a/sketchybar/.config/sketchybar/plugins/executable_calendar.sh b/sketchybar/.config/sketchybar/plugins/executable_calendar.sh new file mode 100644 index 0000000..bd3bd96 --- /dev/null +++ b/sketchybar/.config/sketchybar/plugins/executable_calendar.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +sketchybar --set $NAME label="$(date '+%a %d %b %I:%M %p')" diff --git a/sketchybar/.config/sketchybar/plugins/executable_cpu.sh b/sketchybar/.config/sketchybar/plugins/executable_cpu.sh new file mode 100644 index 0000000..e8a6729 --- /dev/null +++ b/sketchybar/.config/sketchybar/plugins/executable_cpu.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +CORE_COUNT=$(sysctl -n machdep.cpu.thread_count) +CPU_INFO=$(ps -eo pcpu,user) +CPU_SYS=$(echo "$CPU_INFO" | grep -v $(whoami) | sed "s/[^ 0-9\.]//g" | awk "{sum+=\$1} END {print sum/(100.0 * $CORE_COUNT)}") +CPU_USER=$(echo "$CPU_INFO" | grep $(whoami) | sed "s/[^ 0-9\.]//g" | awk "{sum+=\$1} END {print sum/(100.0 * $CORE_COUNT)}") + +CPU_PERCENT=$(ps -eo pcpu | awk -v core_count=$(sysctl -n machdep.cpu.thread_count) '{sum+=$1} END {printf "%.0f\n", sum/core_count}') +sketchybar --set $NAME label="$CPU_PERCENT%" diff --git a/sketchybar/.config/sketchybar/plugins/executable_front_app.sh b/sketchybar/.config/sketchybar/plugins/executable_front_app.sh new file mode 100644 index 0000000..d031e0c --- /dev/null +++ b/sketchybar/.config/sketchybar/plugins/executable_front_app.sh @@ -0,0 +1,35 @@ +#!/bin/sh + +# Some events send additional information specific to the event in the $INFO +# variable. E.g. the front_app_switched event sends the name of the newly +# focused application in the $INFO variable: +# https://felixkratz.github.io/SketchyBar/config/events#events-and-scripting + +app_switched() { + for m in $(aerospace list-monitors | awk '{print $1}'); do + for sid in $(aerospace list-workspaces --monitor $m --visible); do + + apps=$( (echo "$INFO"; aerospace list-windows --monitor "$m" --workspace "$sid" \ + | awk -F '|' '{gsub(/^ *| *$/, "", $2); print $2}') \ + | awk '!seen[$0]++' | sort) + + icon_strip="" + if [ "${apps}" != "" ]; then + while read -r app; do + icon_strip+=" $($CONFIG_DIR/plugins/icons.sh "$app")" + done <<<"${apps}" + else + icon_strip=" —" + fi + + sketchybar --animate sin 10 --set space.$sid label="$icon_strip" + done + done +} + +if [ "$SENDER" = "front_app_switched" ]; then + + sketchybar --set $NAME label="$INFO" icon="$($CONFIG_DIR/plugins/icons.sh "$INFO")" + + app_switched +fi diff --git a/sketchybar/.config/sketchybar/plugins/executable_icons.sh b/sketchybar/.config/sketchybar/plugins/executable_icons.sh new file mode 100644 index 0000000..8a17a78 --- /dev/null +++ b/sketchybar/.config/sketchybar/plugins/executable_icons.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +# Source the icon map with all the application icons +source "$CONFIG_DIR/icon_map.sh" + +# Create a cache directory if it doesn't exist +CACHE_DIR="$HOME/.cache/sketchybar" +mkdir -p "$CACHE_DIR" + +# Cache file for icon mappings +ICON_CACHE="$CACHE_DIR/icon_cache.txt" + +# Create the cache file if it doesn't exist +if [ ! -f "$ICON_CACHE" ]; then + touch "$ICON_CACHE" +fi + +# Check if the app is already in cache +APP_NAME="$1" +CACHED_ICON=$(grep "^$APP_NAME|" "$ICON_CACHE" | cut -d '|' -f2) + +if [ -n "$CACHED_ICON" ]; then + # Cache hit, return the icon + echo "$CACHED_ICON" + exit 0 +fi + +# Get icon from the mapping function +__icon_map "$APP_NAME" + +if [ -n "$icon_result" ]; then + echo "$APP_NAME|$icon_result" >>"$ICON_CACHE" +fi + +echo "$icon_result" \ No newline at end of file diff --git a/sketchybar/.config/sketchybar/plugins/executable_media.sh b/sketchybar/.config/sketchybar/plugins/executable_media.sh new file mode 100644 index 0000000..c4710e0 --- /dev/null +++ b/sketchybar/.config/sketchybar/plugins/executable_media.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +STATE="$(echo "$INFO" | jq -r '.state')" +if [ "$STATE" = "playing" ]; then + MEDIA="$(echo "$INFO" | jq -r '.title + " - " + .artist')" + sketchybar --set $NAME label="$MEDIA" drawing=on +else + sketchybar --set $NAME drawing=off +fi diff --git a/sketchybar/.config/sketchybar/plugins/executable_memory.sh b/sketchybar/.config/sketchybar/plugins/executable_memory.sh new file mode 100644 index 0000000..c29b0f9 --- /dev/null +++ b/sketchybar/.config/sketchybar/plugins/executable_memory.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +USAGE="$(memory_pressure | grep "System-wide memory free percentage:" | awk '{ printf("%02.0f\n", 100-$5"%") }')%" + +sketchybar --set $NAME label="$USAGE" diff --git a/sketchybar/.config/sketchybar/plugins/executable_space_click.sh b/sketchybar/.config/sketchybar/plugins/executable_space_click.sh new file mode 100644 index 0000000..72f96cf --- /dev/null +++ b/sketchybar/.config/sketchybar/plugins/executable_space_click.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +apps=$(aerospace list-windows --workspace $1 | awk -F '|' '{gsub(/^ *| *$/, "", $2); print $2}') +focused=$(aerospace list-workspaces --focused) + +if [ "${apps}" = "" ] && [ "${focused}" != "$1" ]; then + sketchybar --set space.$1 display=0 +else + aerospace workspace $1 +fi diff --git a/sketchybar/.config/sketchybar/plugins/executable_spaces.sh b/sketchybar/.config/sketchybar/plugins/executable_spaces.sh new file mode 100644 index 0000000..d8e2d29 --- /dev/null +++ b/sketchybar/.config/sketchybar/plugins/executable_spaces.sh @@ -0,0 +1,57 @@ +#!/bin/sh + +source "$CONFIG_DIR/colors.sh" + +update_workspace_appearance() { + local sid=$1 + local is_focused=$2 + + if [ "$is_focused" = "true" ]; then + sketchybar --set space.$sid background.drawing=on \ + background.color=$ACCENT_COLOR \ + label.color=$ITEM_COLOR \ + icon.color=$ITEM_COLOR + else + sketchybar --set space.$sid background.drawing=off \ + label.color=$ACCENT_COLOR \ + icon.color=$ACCENT_COLOR + fi +} + +update_icons() { + m=$1 + sid=$2 + + apps=$(aerospace list-windows --monitor "$m" --workspace "$sid" \ + | awk -F '|' '{gsub(/^ *| *$/, "", $2); if (!seen[$2]++) print $2}' \ + | sort) + + icon_strip="" + if [ "${apps}" != "" ]; then + while read -r app; do + icon_strip+=" $($CONFIG_DIR/plugins/icons.sh "$app")" + done <<<"${apps}" + else + icon_strip=" —" + fi + + sketchybar --animate sin 10 --set space.$sid label="$icon_strip" +} + +update_workspace_appearance "$PREV_WORKSPACE" "false" +update_workspace_appearance "$FOCUSED_WORKSPACE" "true" + +for m in $(aerospace list-monitors | awk '{print $1}'); do + for sid in $(aerospace list-workspaces --monitor $m --visible); do + sketchybar --set space.$sid display=$m + + update_icons "$m" "$sid" + + update_icons "$m" "$PREV_WORKSPACE" + + apps=$(aerospace list-windows --monitor "$m" --workspace "$sid" | wc -l) + if [ "${apps}" -eq 0 ]; then + sketchybar --set space.$sid display=0 + fi + done +done diff --git a/sketchybar/.config/sketchybar/plugins/executable_volume.sh b/sketchybar/.config/sketchybar/plugins/executable_volume.sh new file mode 100644 index 0000000..2693b03 --- /dev/null +++ b/sketchybar/.config/sketchybar/plugins/executable_volume.sh @@ -0,0 +1,24 @@ +#!/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 diff --git a/sketchybar/.config/sketchybar/plugins/executable_wifi.sh b/sketchybar/.config/sketchybar/plugins/executable_wifi.sh new file mode 100644 index 0000000..126fe07 --- /dev/null +++ b/sketchybar/.config/sketchybar/plugins/executable_wifi.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +if ifconfig en0 | grep -q "inet "; then + sketchybar --set $NAME icon="􀙇" label="" +else + sketchybar --set $NAME icon="􀙈" label="Disconnected" +fi diff --git a/sketchybar/.config/sketchybar/settings.lua b/sketchybar/.config/sketchybar/settings.lua deleted file mode 100644 index 7713dc4..0000000 --- a/sketchybar/.config/sketchybar/settings.lua +++ /dev/null @@ -1,22 +0,0 @@ -return { - paddings = 3, - group_paddings = 5, - - icons = "sf-symbols", -- alternatively available: NerdFont - - -- This is a font configuration for SF Pro and SF Mono (installed manually) - font = require("helpers.default_font"), - - -- Alternatively, this is a font config for JetBrainsMono Nerd Font - -- font = { - -- text = "JetBrainsMono Nerd Font", -- Used for text - -- numbers = "JetBrainsMono Nerd Font", -- Used for numbers - -- style_map = { - -- ["Regular"] = "Regular", - -- ["Semibold"] = "Medium", - -- ["Bold"] = "SemiBold", - -- ["Heavy"] = "Bold", - -- ["Black"] = "ExtraBold", - -- }, - -- }, -} diff --git a/sketchybar/.config/sketchybar/sketchybarrc b/sketchybar/.config/sketchybar/sketchybarrc deleted file mode 100755 index 95ece11..0000000 --- a/sketchybar/.config/sketchybar/sketchybarrc +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env lua - --- Load the sketchybar-package and prepare the helper binaries -require("helpers") -require("init") diff --git a/tmux/.config/tmux/tmux.conf b/tmux/.config/tmux/tmux.conf new file mode 100644 index 0000000..6630736 --- /dev/null +++ b/tmux/.config/tmux/tmux.conf @@ -0,0 +1,109 @@ +set-option -sa terminal-overrides ",xterm*:Tc" +set -g @plugin 'catppuccin/tmux#v2.1.3' # See https://github.com/catppuccin/tmux/tags for additional tags +# ...alongside +set -g @plugin 'tmux-plugins/tpm' + +set -g mouse on + +# Configure the catppuccin plugin +set -g @catppuccin_flavor "mocha" +set -g @catppuccin_window_status_style "rounded" + +# Load catppuccin +run ~/.config/tmux/plugins/catppuccin/tmux/catppuccin.tmux +# For TPM, instead use `run ~/.tmux/plugins/tmux/catppuccin.tmux` + +# Make the status line pretty and add some modules +set -g status-right-length 100 +set -g status-left-length 100 +set -g status-left "#{E:@catppuccin_status_directory}" +set -g status-right "#{E:@catppuccin_status_application}" +set -ag status-right "#{E:@catppuccin_status_session}" + +run ~/.config/tmux/plugins/tmux-plugins/tmux-cpu/cpu.tmux +run ~/.config/tmux/plugins/tmux-plugins/tmux-battery/battery.tmux +# Or, if using TPM, just run TPM + +unbind C-b +set -g prefix C-Space +bind C-Space send-prefix + +# Spawn a new window (tab equivalent) +bind -n M-c new-window + +# Close the current pane +bind -n M-x kill-pane + +# Switch to the previous window (tab equivalent) +bind -n M-b previous-window + +# Switch to the next window (tab equivalent) +bind -n M-n next-window + +# Split the window horizontally +bind -n M-v split-window -h + +# Split the window vertically +bind -n M-g split-window -v + +# Activate the pane on the left +bind -n M-h select-pane -L + +# Activate the pane below +bind -n M-j select-pane -D + +# Activate the pane above +bind -n M-k select-pane -U + +# Activate the pane on the right +bind -n M-l select-pane -R + +# Resize the pane to the left +bind -n M-Left resize-pane -L 5 + +# Resize the pane to the right +bind -n M-Right resize-pane -R 5 + +# Resize the pane down +bind -n M-Down resize-pane -D 5 + +# Resize the pane up +bind -n M-Up resize-pane -U 5 + + +# Start windows and panes at 1, not 0 +set -g base-index 1 +set -g pane-base-index 1 +set-window-option -g pane-base-index 1 +set-option -g renumber-windows on + +set -g @plugin 'tmux-plugins/tpm' +set -g @plugin 'tmux-plugins/tmux-sensible' +set -g @plugin 'christoomey/vim-tmux-navigator' +#set -g @plugin 'catppuccin/tmux' +#set -g @plugin 'dreamsofcode-io/catppuccin-tmux' +set -g @plugin 'wooshdude/catppuccin-tmux' +set -g @plugin 'tmux-plugins/tmux-yank' + +set -g @catppuccin_flavour 'mocha' +set -g @catppuccin_window_status_style "rounded" +set -g status-right-length 100 +set -g status-left-length 100 +set -g status-left "" +set -g @catppuccin_window_current_number_color "#{@thm_magenta}" + +#set -g @catppuccin_status_middle_separator "" +set -g @catppuccin_status_right_separator "" +set -g @catppuccin_status_left_separator "" + +run '~/.tmux/plugins/tpm/tpm' + +# set vi-mode +set-window-option -g mode-keys vi +# keybindings +bind-key -T copy-mode-vi v send-keys -X begin-selection +bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle +bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel + +bind '"' split-window -v -c "#{pane_current_path}" +bind % split-window -h -c "#{pane_current_path}" diff --git a/yazi/.config/yazi/theme.toml-1749084552353672 b/yazi/.config/yazi/theme.toml-1749084552353672 new file mode 100644 index 0000000..8ccb2d2 --- /dev/null +++ b/yazi/.config/yazi/theme.toml-1749084552353672 @@ -0,0 +1,698 @@ +[manager] +cwd = { fg = "#94e2d5" } + +# Hovered +hovered = { fg = "#1e1e2e", bg = "#89b4fa" } +preview_hovered = { underline = true } + +# Find +find_keyword = { fg = "#f9e2af", italic = true } +find_position = { fg = "#f5c2e7", bg = "reset", italic = true } + +# Marker +marker_copied = { fg = "#a6e3a1", bg = "#a6e3a1" } +marker_cut = { fg = "#f38ba8", bg = "#f38ba8" } +marker_selected = { fg = "#89b4fa", bg = "#89b4fa" } + +# Tab +tab_active = { fg = "#1e1e2e", bg = "#cdd6f4" } +tab_inactive = { fg = "#cdd6f4", bg = "#45475a" } +tab_width = 1 + +# Count +count_copied = { fg = "#1e1e2e", bg = "#a6e3a1" } +count_cut = { fg = "#1e1e2e", bg = "#f38ba8" } +count_selected = { fg = "#1e1e2e", bg = "#89b4fa" } + +# Border +border_symbol = "│" +border_style = { fg = "#7f849c" } + +# Highlighting +syntect_theme = "~/.config/yazi/Catppuccin-mocha.tmTheme" + +[status] +separator_open = "" +separator_close = "" +separator_style = { fg = "#45475a", bg = "#45475a" } + +# Mode +mode_normal = { fg = "#1e1e2e", bg = "#89b4fa", bold = true } +mode_select = { fg = "#1e1e2e", bg = "#a6e3a1", bold = true } +mode_unset = { fg = "#1e1e2e", bg = "#f2cdcd", bold = true } + +# Progress +progress_label = { fg = "#ffffff", bold = true } +progress_normal = { fg = "#89b4fa", bg = "#45475a" } +progress_error = { fg = "#f38ba8", bg = "#45475a" } + +# Permissions +permissions_t = { fg = "#89b4fa" } +permissions_r = { fg = "#f9e2af" } +permissions_w = { fg = "#f38ba8" } +permissions_x = { fg = "#a6e3a1" } +permissions_s = { fg = "#7f849c" } + +[input] +border = { fg = "#89b4fa" } +title = {} +value = {} +selected = { reversed = true } + +[select] +border = { fg = "#89b4fa" } +active = { fg = "#f5c2e7" } +inactive = {} + +[tasks] +border = { fg = "#89b4fa" } +title = {} +hovered = { underline = true } + +[which] +mask = { bg = "#313244" } +cand = { fg = "#94e2d5" } +rest = { fg = "#9399b2" } +desc = { fg = "#f5c2e7" } +separator = "  " +separator_style = { fg = "#585b70" } + +[help] +on = { fg = "#f5c2e7" } +exec = { fg = "#94e2d5" } +desc = { fg = "#9399b2" } +hovered = { bg = "#585b70", bold = true } +footer = { fg = "#45475a", bg = "#cdd6f4" } + +[filetype] + +rules = [ + # Media + { mime = "image/*", fg = "#94e2d5" }, + { mime = "{audio,video}/*", fg = "#f9e2af" }, + + # Archives + { mime = "application/{,g}zip", fg = "#f5c2e7" }, + { mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", fg = "#f5c2e7" }, + + # Fallback + { name = "*", fg = "#cdd6f4" }, + { name = "*/", fg = "#89b4fa" } +] + +[icon] + +files = [ + { name = "gulpfile.js", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = ".babelrc", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "copying.lesser", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = ".npmrc", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "docker-compose.yml", text = "󰡨", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "svelte.config.js", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "copying", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "prettier.config.ts", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "gruntfile.babel.js", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = ".SRCINFO", text = "󰣇", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = ".xinitrc", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "docker-compose.yaml", text = "󰡨", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "nuxt.config.ts", text = "󱄆", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "build", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = ".editorconfig", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "nuxt.config.mjs", text = "󱄆", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = ".gitlab-ci.yml", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "PKGBUILD", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = ".bash_profile", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = ".bashrc", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "compose.yml", text = "󰡨", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "eslint.config.cjs", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "go.mod", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = ".mailmap", text = "󰊢", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "gtkrc", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "go.work", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "justfile", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "kritadisplayrc", text = "", fg_dark = "#cba6f7", fg_light = "#cba6f7" }, + { name = "commitlint.config.js", text = "󰜘", fg_dark = "#94e2d5", fg_light = "#94e2d5" }, + { name = ".env", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "PrusaSlicerGcodeViewer.ini", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "r", text = "󰟔", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "license", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = ".gitignore", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "tailwind.config.js", text = "󱏿", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = ".prettierrc.yml", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = ".zprofile", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = ".zshenv", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "xmonad.hs", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = ".eslintignore", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "tsconfig.json", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = ".prettierrc.json5", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = ".ds_store", text = "", fg_dark = "#45475a", fg_light = "#45475a" }, + { name = "gulpfile.coffee", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "R", text = "󰟔", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = ".zshrc", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = ".prettierrc.toml", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = ".gvimrc", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = ".xsession", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = ".justfile", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = ".gitconfig", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "gradle-wrapper.properties", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "ionic.config.json", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "cantorrc", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = ".gleam", text = "", fg_dark = "#f5c2e7", fg_light = "#f5c2e7" }, + { name = "package-lock.json", text = "", fg_dark = "#313244", fg_light = "#313244" }, + { name = "package.json", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "hyprland.conf", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "gulpfile.babel.js", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = ".nvmrc", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = ".prettierignore", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "ext_typoscript_setup.txt", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "QtProject.conf", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "avif", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "mix.lock", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "build.gradle", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "gemfile$", text = "", fg_dark = "#313244", fg_light = "#313244" }, + { name = ".vimrc", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "i18n.config.ts", text = "󰗊", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "gulpfile.ts", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "build.zig.zon", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "checkhealth", text = "󰓙", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "xmobarrc", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "_vimrc", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = ".luaurc", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "kdenlive-layoutsrc", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "gradlew", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "xsettingsd.conf", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "vlcrc", text = "󰕼", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "xorg.conf", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "xmobarrc.hs", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "workspace", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = ".gitattributes", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "favicon.ico", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "go.sum", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "pom.xml", text = "", fg_dark = "#313244", fg_light = "#313244" }, + { name = "webpack", text = "󰜫", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "vagrantfile$", text = "", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "unlicense", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "tmux.conf.local", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "settings.gradle", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = ".dockerignore", text = "󰡨", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "sym-lib-table", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "_gvimrc", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "kdenliverc", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "kdeglobals", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = ".prettierrc.yaml", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "rmd", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "tailwind.config.mjs", text = "󱏿", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "sxhkdrc", text = "", fg_dark = "#313244", fg_light = "#313244" }, + { name = "robots.txt", text = "󰚩", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "tailwind.config.ts", text = "󱏿", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "prettier.config.mjs", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "mpv.conf", text = "", fg_dark = "#1e1e2e", fg_light = "#1e1e2e" }, + { name = "py.typed", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "PrusaSlicer.ini", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "procfile", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "rakefile", text = "", fg_dark = "#313244", fg_light = "#313244" }, + { name = "kritarc", text = "", fg_dark = "#cba6f7", fg_light = "#cba6f7" }, + { name = ".Xresources", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "prettier.config.js", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "commitlint.config.ts", text = "󰜘", fg_dark = "#94e2d5", fg_light = "#94e2d5" }, + { name = "weston.ini", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "eslint.config.js", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "cmakelists.txt", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = ".git-blame-ignore-revs", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "config", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "nuxt.config.cjs", text = "󱄆", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "node_modules", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "makefile", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "lxqt.conf", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "i18n.config.js", text = "󰗊", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "FreeCAD.conf", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "prettier.config.cjs", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "tmux.conf", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "kalgebrarc", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "i3status.conf", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = ".settings.json", text = "", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "containerfile", text = "󰡨", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "i3blocks.conf", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "lxde-rc.xml", text = "", fg_dark = "#9399b2", fg_light = "#9399b2" }, + { name = "gradle.properties", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "hypridle.conf", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "gruntfile.ts", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "gruntfile.js", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "dockerfile", text = "󰡨", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "groovy", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "hyprlock.conf", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = ".prettierrc", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "gnumakefile", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "commit_editmsg", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "fp-lib-table", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "fp-info-cache", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "eslint.config.ts", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "nuxt.config.js", text = "󱄆", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "platformio.ini", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = ".nuxtrc", text = "󱄆", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "gruntfile.coffee", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "eslint.config.mjs", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "compose.yaml", text = "󰡨", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "bspwmrc", text = "", fg_dark = "#313244", fg_light = "#313244" }, + { name = "brewfile", text = "", fg_dark = "#313244", fg_light = "#313244" }, + { name = ".eslintrc", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = ".gtkrc-2.0", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = ".Xauthority", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = ".prettierrc.json", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = ".npmignore", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = ".gitmodules", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, +] +exts = [ + { name = "rake", text = "", fg_dark = "#313244", fg_light = "#313244" }, + { name = "skp", text = "󰻫", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "eln", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "razor", text = "󱦘", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "vue", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "sln", text = "", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "el", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "blp", text = "󰺾", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "jl", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "mdx", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "jsx", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "ml", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "less", text = "", fg_dark = "#45475a", fg_light = "#45475a" }, + { name = "pot", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "pl", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "mli", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "gif", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "aif", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "cxxm", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "fcbak", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "aac", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "query", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "android", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "m3u8", text = "󰲹", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "leex", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "liquid", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "cue", text = "󰲹", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "fcmacro", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "log", text = "󰌱", fg_dark = "#cdd6f4", fg_light = "#cdd6f4" }, + { name = "pm", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "brep", text = "󰻫", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "blend", text = "󰂫", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "md5", text = "󰕥", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "sql", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "xcplayground", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "erb", text = "", fg_dark = "#313244", fg_light = "#313244" }, + { name = "t", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "cache", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "r", text = "󰟔", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "x", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "import", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "m", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "lrc", text = "󰨖", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "o", text = "", fg_dark = "#45475a", fg_light = "#45475a" }, + { name = "d", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "c", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "h", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "rss", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "hbs", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "godot", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "eot", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "awk", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "fsx", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "a", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "pyi", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "asc", text = "󰦝", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "ass", text = "󰨖", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "css", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "psb", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "csproj", text = "󰪮", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "csv", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "gcode", text = "󰐫", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "ics", text = "", fg_dark = "#313244", fg_light = "#313244" }, + { name = "mk", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "bz", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "fctb", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "gz", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "wasm", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "glb", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "elc", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "flf", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "elf", text = "", fg_dark = "#45475a", fg_light = "#45475a" }, + { name = "dropbox", text = "", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "tres", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "apk", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "ape", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "slvs", text = "󰻫", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "apl", text = "⍝", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "cs", text = "󰌛", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "azcli", text = "", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "pp", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "flc", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "gemspec", text = "", fg_dark = "#313244", fg_light = "#313244" }, + { name = "pls", text = "󰲹", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "cfg", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "fcscript", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "gnumakefile", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "zst", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "pxi", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "woff2", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "kicad_pcb", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "zsh", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "kicad_wks", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "info", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "cppm", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "svg", text = "󰜡", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "flac", text = "", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "cuh", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "bin", text = "", fg_dark = "#45475a", fg_light = "#45475a" }, + { name = "zig", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "yml", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "yaml", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "fsscript", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "xz", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "diff", text = "", fg_dark = "#45475a", fg_light = "#45475a" }, + { name = "mojo", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "cshtml", text = "󱦗", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "bak", text = "󰁯", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "nfo", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "bat", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "cpy", text = "⚙", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "gql", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "c++", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "lff", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "obj", text = "󰆧", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "sha512", text = "󰕥", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "scm", text = "󰘧", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "aiff", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "sig", text = "λ", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "webm", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "zip", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "wrz", text = "󰆧", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "jwmrc", text = "", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "xml", text = "󰗀", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "cbl", text = "⚙", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "rmd", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "xaml", text = "󰙳", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "xm", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "wvc", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "drl", text = "", fg_dark = "#eba0ac", fg_light = "#eba0ac" }, + { name = "erl", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "3gp", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "ccm", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "ino", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "kbx", text = "󰯄", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "test.js", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "wrl", text = "󰆧", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "pcm", text = "", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "woff", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "scala", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "webpack", text = "󰜫", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "hrl", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "kra", text = "", fg_dark = "#cba6f7", fg_light = "#cba6f7" }, + { name = "kicad_pro", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "bazel", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "toml", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "iges", text = "󰻫", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "crdownload", text = "", fg_dark = "#94e2d5", fg_light = "#94e2d5" }, + { name = "so", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "strings", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "xls", text = "󰈛", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "wav", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "vsix", text = "", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "kicad_prl", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "mov", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "bash", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "sqlite3", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "vsh", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "vim", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "lck", text = "", fg_dark = "#bac2de", fg_light = "#bac2de" }, + { name = "go", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "pyo", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "vhdl", text = "󰍛", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "vhd", text = "󰍛", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "rar", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "magnet", text = "", fg_dark = "#45475a", fg_light = "#45475a" }, + { name = "vala", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "coffee", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "kdbx", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "po", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "v", text = "󰍛", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "prisma", text = "", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "f90", text = "󱈚", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "txt", text = "󰈙", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "mo", text = "∞", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "mp4", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "cljc", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "heex", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "exs", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "clj", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "luau", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "fcparam", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "markdown", text = "", fg_dark = "#cdd6f4", fg_light = "#cdd6f4" }, + { name = "dxf", text = "󰻫", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "luac", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "desktop", text = "", fg_dark = "#45475a", fg_light = "#45475a" }, + { name = "docx", text = "󰈬", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "cljd", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "txz", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "bicepparam", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "kt", text = "", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "fcstd", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "md", text = "", fg_dark = "#cdd6f4", fg_light = "#cdd6f4" }, + { name = "edn", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "sub", text = "󰨖", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "ttf", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "tsx", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "hurl", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "dll", text = "", fg_dark = "#11111b", fg_light = "#11111b" }, + { name = "lhs", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "tsconfig", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "msf", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "ts", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "rproj", text = "󰗆", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "org", text = "", fg_dark = "#94e2d5", fg_light = "#94e2d5" }, + { name = "signature", text = "λ", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "elm", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "pyc", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "tmux", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "tgz", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "nu", text = ">", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "tfvars", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "lua", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "astro", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "lib", text = "", fg_dark = "#11111b", fg_light = "#11111b" }, + { name = "tex", text = "", fg_dark = "#45475a", fg_light = "#45475a" }, + { name = "ogg", text = "", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "stp", text = "󰻫", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "sublime", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "test.tsx", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "nswag", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "test.ts", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "test.jsx", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "dwg", text = "󰻫", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "bib", text = "󱉟", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "sass", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "templ", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "tcl", text = "󰛓", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "pck", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "swift", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "makefile", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "xcstrings", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "slim", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "iso", text = "", fg_dark = "#f2cdcd", fg_light = "#f2cdcd" }, + { name = "fsi", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "dart", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "nix", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "svelte", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "sv", text = "󰍛", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "bz2", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "sha256", text = "󰕥", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "twig", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "material", text = "󰔉", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "ppt", text = "󰈧", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "pyd", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "step", text = "󰻫", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "hx", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "webmanifest", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "kicad_sch", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "cjs", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "stl", text = "󰆧", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "ejs", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "ssa", text = "󰨖", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "license", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "jsonc", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "download", text = "", fg_dark = "#94e2d5", fg_light = "#94e2d5" }, + { name = "ige", text = "󰻫", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "sqlite", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "psd1", text = "󰨊", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "dump", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "resi", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "spec.ts", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "fnl", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "cu", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "scss", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "config.ru", text = "", fg_dark = "#313244", fg_light = "#313244" }, + { name = "psd", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "db", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "epub", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "haml", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "sol", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "sml", text = "λ", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "svh", text = "󰍛", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "sldprt", text = "󰻫", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "ico", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "xlsx", text = "󰈛", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "rs", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "dconf", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "bz3", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "fdmdownload", text = "", fg_dark = "#94e2d5", fg_light = "#94e2d5" }, + { name = "fs", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "patch", text = "", fg_dark = "#45475a", fg_light = "#45475a" }, + { name = "hs", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "xcf", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "js", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "pyw", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "sha384", text = "󰕥", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "fcmat", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "csh", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "suo", text = "", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "sha224", text = "󰕥", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "sha1", text = "󰕥", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "cr", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "huff", text = "󰡘", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "sh", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "sc", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "ksh", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "cc", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "wma", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "mp3", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "conf", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "3mf", text = "󰆧", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "sbt", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "kicad_mod", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "terminal", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "rlib", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "pdf", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "mts", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "kdenlive", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "kts", text = "", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "spec.tsx", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "res", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "hxx", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "rb", text = "", fg_dark = "#313244", fg_light = "#313244" }, + { name = "vh", text = "󰍛", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "ixx", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "cson", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "cts", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "7z", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "ex", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "cpp", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "qss", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "app", text = "", fg_dark = "#45475a", fg_light = "#45475a" }, + { name = "jxl", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "qrc", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "qml", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "epp", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "otf", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "hh", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "qm", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "pro", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "exe", text = "", fg_dark = "#45475a", fg_light = "#45475a" }, + { name = "kdenlivetitle", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "kdb", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "mpp", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "Dockerfile", text = "󰡨", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "bqn", text = "⎉", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "torrent", text = "", fg_dark = "#94e2d5", fg_light = "#94e2d5" }, + { name = "m3u", text = "󰲹", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "py", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "pxd", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "f3d", text = "󰻫", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "out", text = "", fg_dark = "#45475a", fg_light = "#45475a" }, + { name = "spec.jsx", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "kicad_dru", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "ps1", text = "󰨊", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "ui", text = "", fg_dark = "#313244", fg_light = "#313244" }, + { name = "styl", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "f#", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "png", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "ply", text = "󰆧", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "php", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "eex", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "tbc", text = "󰛓", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "part", text = "", fg_dark = "#94e2d5", fg_light = "#94e2d5" }, + { name = "pub", text = "󰷖", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "ipynb", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "opus", text = "", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "git", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "bmp", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "blade.php", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "nim", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "xpi", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "mustache", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "tscn", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "scad", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "ai", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "hex", text = "", fg_dark = "#6c7086", fg_light = "#6c7086" }, + { name = "hpp", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "xul", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "mobi", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "fcstd1", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "ical", text = "", fg_dark = "#313244", fg_light = "#313244" }, + { name = "icalendar", text = "", fg_dark = "#313244", fg_light = "#313244" }, + { name = "bicep", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "mm", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "mkv", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "graphql", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "mjs", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "mint", text = "󰌪", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "m4v", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "m4a", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "tf", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "gv", text = "󱁉", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "lock", text = "", fg_dark = "#bac2de", fg_light = "#bac2de" }, + { name = "krz", text = "", fg_dark = "#cba6f7", fg_light = "#cba6f7" }, + { name = "kpp", text = "", fg_dark = "#cba6f7", fg_light = "#cba6f7" }, + { name = "ko", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "kicad_sym", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "psm1", text = "󰨊", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "pyx", text = "", fg_dark = "#89b4fa", fg_light = "#89b4fa" }, + { name = "json5", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "json", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "bzl", text = "", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "ifb", text = "", fg_dark = "#313244", fg_light = "#313244" }, + { name = "image", text = "", fg_dark = "#f2cdcd", fg_light = "#f2cdcd" }, + { name = "jpg", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "jpeg", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "java", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "wv", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "ini", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "cast", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "cp", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "fctl", text = "", fg_dark = "#f38ba8", fg_light = "#f38ba8" }, + { name = "ifc", text = "󰻫", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "sldasm", text = "󰻫", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "html", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "typoscript", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "🔥", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "htm", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "ste", text = "󰻫", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "spec.js", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "gresource", text = "", fg_dark = "#f5e0dc", fg_light = "#f5e0dc" }, + { name = "ebook", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "gradle", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "gd", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "fish", text = "", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "igs", text = "󰻫", fg_dark = "#a6e3a1", fg_light = "#a6e3a1" }, + { name = "fbx", text = "󰆧", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "env", text = "", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "srt", text = "󰨖", fg_dark = "#f9e2af", fg_light = "#f9e2af" }, + { name = "dot", text = "󱁉", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "doc", text = "󰈬", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "d.ts", text = "", fg_dark = "#fab387", fg_light = "#fab387" }, + { name = "applescript", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "cxx", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "img", text = "", fg_dark = "#f2cdcd", fg_light = "#f2cdcd" }, + { name = "cljs", text = "", fg_dark = "#74c7ec", fg_light = "#74c7ec" }, + { name = "cobol", text = "⚙", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "cob", text = "⚙", fg_dark = "#585b70", fg_light = "#585b70" }, + { name = "cmake", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, + { name = "webp", text = "", fg_dark = "#7f849c", fg_light = "#7f849c" }, +] diff --git a/zsh/.zshrc b/zsh/.zshrc index 0e30f26..1ae7f40 100644 --- a/zsh/.zshrc +++ b/zsh/.zshrc @@ -3,7 +3,8 @@ export DOTNET_ROOT="/usr/local/share/dotnet" alias py="python3" alias pip="python3 -m pip" alias border="sh ~/dotfiles/yabai/.config/yabai/border.sh" -alias lvim="~/.local/bin/lvim" +alias ts="tailscale" +alias fetch="fastfetch" eval "$(starship init zsh)" function yy() {