parent
0a71517682
commit
1b9762ff5e
@ -0,0 +1 @@
|
||||
This requires nvchad to be install and be dropped in for nvchad install, see here: PLACEHOLDER
|
@ -0,0 +1,32 @@
|
||||
-- Just an example, supposed to be placed in /lua/custom/
|
||||
|
||||
local M = {}
|
||||
|
||||
-- make sure you maintain the structure of `core/default_config.lua` here,
|
||||
-- example of changing theme:
|
||||
|
||||
M.ui = {
|
||||
theme = "rxyhn",
|
||||
}
|
||||
M.plugins = {
|
||||
["glepnir/dashboard-nvim"] = {
|
||||
disable = false,
|
||||
config = function()
|
||||
require "custom.dash"
|
||||
end
|
||||
},
|
||||
['folke/which-key.nvim'] = {disable = false},
|
||||
['goolord/alpha-nvim'] = {disable = true},
|
||||
['kylechui/nvim-surround'] = {
|
||||
tag = "*",
|
||||
config = function()
|
||||
require("nvim-surround").setup({
|
||||
|
||||
})
|
||||
end
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
|
||||
return M
|
@ -0,0 +1,51 @@
|
||||
local present, db = pcall(require, "dashboard")
|
||||
local home = os.getenv('HOME')
|
||||
if present then
|
||||
db.custom_header = {
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡔⠁⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣴⠟⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⡀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⡿⠋⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡾⠚⠁⠀⠀⠈⠉⠙⠒⠢⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣿⣿⠟⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣶⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣴⣾⣿⡿⢻⠿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⣆⠀⠀⠀⠀⢀⣀⣤⣶⣿⣿⣿⠿⠛⣡⠶⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⡳⣤⣴⣾⣿⣿⣿⠿⠟⠋⢀⡤⠞⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣀⡀⠀⠈⡇⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⢀⣠⣤⣴⣾⣿⣿⣮⢻⡟⠋⠉⠀⠀⢀⣴⣋⣀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⠿⠿⠿⠿⢿⣿⡟⠀⠀⠸⣆⠀⣠⣦⣄⢀⠰⡱⢸⢼⣿⣿⠿⠿⠛⠋⠉⠀⠘⣏⠀⢀⠴⠊⠼⠿⠿⠿⠿⢻⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⠏⠀⠀⢀⡀⣸⣾⣟⣝⠻⣷⣕⠈⠁⠈⠀⢠⣤⣤⣤⣤⣤⣤⣤⣬⣷⡅⠀⠀⠀⠀⠀⠀⢠⣿⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡿⣿⣄⠲⠿⠏⢾⡿⠋⠻⣇⠀⠙⢿⣦⡀⠀⠀⠈⠛⠛⠛⣋⡭⠉⠛⠛⠛⠛⡆⠀⠀⠀⢀⣴⡟⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣶⡿⠋⠀⠈⠻⣷⣄⠀⠀⠁⠀⠀⠑⢅⠀⠀⠹⣿⠆⠀⠀⢀⠴⠚⠁⠀⠀⠀⠀⠀⠀⢸⣀⣤⣶⠿⠋⠀⠈⢻⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⡀⠄⠒⠀⠛⠁⠀⠀⠀⠀⠀⠘⠁⠀⠀⠀⠀⠀⠀⠀⠢⣄⠀⠀⢀⠤⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢯⠋⠁⠀⠀⠀⠀⠀⠙⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠠⠀⠁⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢘⠶⢊⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠸⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⡤⠚⠁⠀⠈⠱⣄⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⣷⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⠖⠉⠀⠀⠀⠀⠀⠀⠈⠲⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠴⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠢⡀⠀⠀⠀⠀⠀⠀⠀⢀⡎⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⠖⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠐⠐⠦⢤⣤⣀⣀⡤⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
" ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡰⠚⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠚⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
"⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀",
|
||||
}
|
||||
db.custom_center = {
|
||||
{icon = ' ',
|
||||
desc = 'Recently opened files NOTWORKING ',
|
||||
action = 'DashboardFindHistory',
|
||||
shortcut = 'SPC f h'},
|
||||
{icon = ' ',
|
||||
desc = 'Find File ',
|
||||
action = 'Telescope find_files find_command=rg,--hidden,--files',
|
||||
shortcut = 'SPC f f'},
|
||||
{icon = ' ',
|
||||
desc = 'File Browser NOTWORKING ',
|
||||
action = 'Telescope file_browser',
|
||||
shortcut = 'SPC f b'},
|
||||
{icon = ' ',
|
||||
desc = 'Find word ',
|
||||
action = 'Telescope live_grep',
|
||||
shortcut = 'SPC f w'},
|
||||
{icon = ' ',
|
||||
desc = 'Open Personal dotfiles ',
|
||||
action = 'Telescope fd search_dirs=' .. home ..'/.config',
|
||||
shortcut = 'SPC f d'},
|
||||
}
|
||||
end
|
@ -0,0 +1,57 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
# the scripting-addition must be loaded manually if
|
||||
# you are running yabai on macOS Big Sur. Uncomment
|
||||
# the following line to have the injection performed
|
||||
# when the config is executed during startup.
|
||||
#
|
||||
# for this to work you must configure sudo such that
|
||||
# it will be able to run the command without password
|
||||
#
|
||||
# see this wiki page for information:
|
||||
# - https://github.com/koekeishiya/yabai/wiki/Installing-yabai-(latest-release)
|
||||
#
|
||||
sudo yabai --load-sa
|
||||
yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa"
|
||||
|
||||
# global settings
|
||||
yabai -m config mouse_follows_focus off
|
||||
yabai -m config focus_follows_mouse autoraise
|
||||
yabai -m config window_origin_display default
|
||||
yabai -m config window_placement second_child
|
||||
yabai -m config window_topmost off
|
||||
yabai -m config window_shadow on
|
||||
yabai -m config window_opacity off
|
||||
yabai -m config window_opacity_duration 0.0
|
||||
yabai -m config active_window_opacity 1.0
|
||||
yabai -m config normal_window_opacity 0.90
|
||||
yabai -m config window_border off
|
||||
yabai -m config window_border_width 6
|
||||
yabai -m config active_window_border_color 0xff775759
|
||||
yabai -m config normal_window_border_color 0xff555555
|
||||
yabai -m config insert_feedback_color 0xffd75f5f
|
||||
yabai -m config split_ratio 0.50
|
||||
yabai -m config auto_balance off
|
||||
yabai -m config mouse_modifier fn
|
||||
yabai -m config mouse_action1 move
|
||||
yabai -m config mouse_action2 resize
|
||||
yabai -m config mouse_drop_action swap
|
||||
|
||||
# general space settings
|
||||
yabai -m config layout bsp
|
||||
yabai -m config top_padding 12
|
||||
yabai -m config bottom_padding 12
|
||||
yabai -m config left_padding 12
|
||||
yabai -m config right_padding 12
|
||||
yabai -m config window_gap 06
|
||||
yabai -m config external_bar all:42:0
|
||||
|
||||
yabai -m signal --add event=space_changed \
|
||||
action="osascript -e 'tell application \"Übersicht\" to refresh widget id \"yabar-workspace-jsx\"'"
|
||||
yabai -m signal --add event=display_changed \
|
||||
action="osascript -e 'tell application \"Übersicht\" to refresh widget id \"yabar-workspace-jsx\"'"
|
||||
yabai -m signal --add event=application_front_switched \
|
||||
action="osascript -e 'tell application \"Übersicht\" to refresh widget id \"yabar-workspace-jsx\"'"
|
||||
echo "yabai configuration loaded.."
|
||||
|
||||
yabai -m rule --add title="^quake$" manage=off
|
@ -0,0 +1,115 @@
|
||||
# If you come from bash you might have to change your $PATH.
|
||||
export PATH=$HOME/bin:/usr/local/bin:$PATH:$HOME/.yarn/bin/:$HOME/.local/bin:$HOME/.emacs.d/bin:$HOME/.cargo/bin
|
||||
export RUST_SRC_PATH=$(rustc --print sysroot)/lib/rustlib/src/rust/library
|
||||
# Path to your oh-my-zsh installation.
|
||||
export ZSH="$HOME/.oh-my-zsh"
|
||||
|
||||
# Set name of the theme to load --- if set to "random", it will
|
||||
# load a random theme each time oh-my-zsh is loaded, in which case,
|
||||
# to know which specific one was loaded, run: echo $RANDOM_THEME
|
||||
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
|
||||
ZSH_THEME="robbyrussell"
|
||||
ZSH_DISABLE_COMPFIX="true"
|
||||
# Set list of themes to pick from when loading at random
|
||||
# Setting this variable when ZSH_THEME=random will cause zsh to load
|
||||
# a theme from this variable instead of looking in $ZSH/themes/
|
||||
# If set to an empty array, this variable will have no effect.
|
||||
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
|
||||
|
||||
# Uncomment the following line to use case-sensitive completion.
|
||||
# CASE_SENSITIVE="true"
|
||||
|
||||
# Uncomment the following line to use hyphen-insensitive completion.
|
||||
# Case-sensitive completion must be off. _ and - will be interchangeable.
|
||||
# HYPHEN_INSENSITIVE="true"
|
||||
|
||||
# Uncomment one of the following lines to change the auto-update behavior
|
||||
# zstyle ':omz:update' mode disabled # disable automatic updates
|
||||
# zstyle ':omz:update' mode auto # update automatically without asking
|
||||
# zstyle ':omz:update' mode reminder # just remind me to update when it's time
|
||||
|
||||
# Uncomment the following line to change how often to auto-update (in days).
|
||||
# zstyle ':omz:update' frequency 13
|
||||
|
||||
# Uncomment the following line if pasting URLs and other text is messed up.
|
||||
# DISABLE_MAGIC_FUNCTIONS="true"
|
||||
|
||||
# Uncomment the following line to disable colors in ls.
|
||||
# DISABLE_LS_COLORS="true"
|
||||
|
||||
# Uncomment the following line to disable auto-setting terminal title.
|
||||
# DISABLE_AUTO_TITLE="true"
|
||||
|
||||
# Uncomment the following line to enable command auto-correction.
|
||||
# ENABLE_CORRECTION="true"
|
||||
|
||||
# Uncomment the following line to display red dots whilst waiting for completion.
|
||||
# You can also set it to another string to have that shown instead of the default red dots.
|
||||
# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f"
|
||||
# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765)
|
||||
# COMPLETION_WAITING_DOTS="true"
|
||||
|
||||
# Uncomment the following line if you want to disable marking untracked files
|
||||
# under VCS as dirty. This makes repository status check for large repositories
|
||||
# much, much faster.
|
||||
# DISABLE_UNTRACKED_FILES_DIRTY="true"
|
||||
|
||||
# Uncomment the following line if you want to change the command execution time
|
||||
# stamp shown in the history command output.
|
||||
# You can set one of the optional three formats:
|
||||
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
|
||||
# or set a custom format using the strftime function format specifications,
|
||||
# see 'man strftime' for details.
|
||||
# HIST_STAMPS="mm/dd/yyyy"
|
||||
|
||||
# Would you like to use another custom folder than $ZSH/custom?
|
||||
# ZSH_CUSTOM=/path/to/new-custom-folder
|
||||
|
||||
# Which plugins would you like to load?
|
||||
# Standard plugins can be found in $ZSH/plugins/
|
||||
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
|
||||
# Example format: plugins=(rails git textmate ruby lighthouse)
|
||||
# Add wisely, as too many plugins slow down shell startup
|
||||
# plugins=(git zsh-autosuggestions)
|
||||
|
||||
source $ZSH/oh-my-zsh.sh
|
||||
|
||||
# User configuration
|
||||
|
||||
# export MANPATH="/usr/local/man:$MANPATH"
|
||||
|
||||
# You may need to manually set your language environment
|
||||
# export LANG=en_US.UTF-8
|
||||
|
||||
# Preferred editor for local and remote sessions
|
||||
# if [[ -n $SSH_CONNECTION ]]; then
|
||||
# export EDITOR='vim'
|
||||
# else
|
||||
# export EDITOR='mvim'
|
||||
# fi
|
||||
|
||||
# Compilation flags
|
||||
# export ARCHFLAGS="-arch x86_64"
|
||||
plugins=(zsh_codex)
|
||||
zle -N create_completion
|
||||
bindkey '^X' create_completion
|
||||
# Set personal aliases, overriding those provided by oh-my-zsh libs,
|
||||
# plugins, and themes. Aliases can be placed here, though oh-my-zsh
|
||||
# users are encouraged to define aliases within the ZSH_CUSTOM folder.
|
||||
# For a full list of active aliases, run `alias`.
|
||||
#
|
||||
# Example aliases
|
||||
# alias zshconfig="mate ~/.zshrc"
|
||||
# alias ohmyzsh="mate ~/.oh-my-zsh"
|
||||
export EDITOR='emacs -nw'
|
||||
|
||||
#alias discord='discord --no-sandbox'
|
||||
#alias em='emacs -nw'
|
||||
#alias ssh="kitty +kitten ssh"
|
||||
#alias icat="kitty +kitten icat"
|
||||
alias cat="bat"
|
||||
alias ls='lsd -A'
|
||||
alias uploadsc='(cd ~/Pictures/ScreenshotsSHORTCUT && exec pb $(ls -Art | tail -n 1))'
|
||||
alias connectssh='shuttle -HN --dns -r gallant@35.188.39.50'
|
||||
|
||||
source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh
|
@ -0,0 +1,3 @@
|
||||
gonna be honest here, i just copy and pasted here, if it doesn't work then make a issue please
|
||||
|
||||
for ease of access, i just decided to put my `ls /fontfolder/` here to make searching for the fonts easier
|
@ -0,0 +1,231 @@
|
||||
all-the-icons.ttf
|
||||
azuki.ttf
|
||||
azukiB.ttf
|
||||
azukiP.ttf
|
||||
Blex Mono Bold Italic Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Blex Mono Bold Italic Nerd Font Complete Mono.ttf
|
||||
Blex Mono Bold Italic Nerd Font Complete Windows Compatible.ttf
|
||||
Blex Mono Bold Italic Nerd Font Complete.ttf
|
||||
Blex Mono Bold Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Blex Mono Bold Nerd Font Complete Mono.ttf
|
||||
Blex Mono Bold Nerd Font Complete Windows Compatible.ttf
|
||||
Blex Mono Bold Nerd Font Complete.ttf
|
||||
Blex Mono ExtraLight Italic Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Blex Mono ExtraLight Italic Nerd Font Complete Mono.ttf
|
||||
Blex Mono ExtraLight Italic Nerd Font Complete Windows Compatible.ttf
|
||||
Blex Mono ExtraLight Italic Nerd Font Complete.ttf
|
||||
Blex Mono ExtraLight Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Blex Mono ExtraLight Nerd Font Complete Mono.ttf
|
||||
Blex Mono ExtraLight Nerd Font Complete Windows Compatible.ttf
|
||||
Blex Mono ExtraLight Nerd Font Complete.ttf
|
||||
Blex Mono Italic Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Blex Mono Italic Nerd Font Complete Mono.ttf
|
||||
Blex Mono Italic Nerd Font Complete Windows Compatible.ttf
|
||||
Blex Mono Italic Nerd Font Complete.ttf
|
||||
Blex Mono Light Italic Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Blex Mono Light Italic Nerd Font Complete Mono.ttf
|
||||
Blex Mono Light Italic Nerd Font Complete Windows Compatible.ttf
|
||||
Blex Mono Light Italic Nerd Font Complete.ttf
|
||||
Blex Mono Light Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Blex Mono Light Nerd Font Complete Mono.ttf
|
||||
Blex Mono Light Nerd Font Complete Windows Compatible.ttf
|
||||
Blex Mono Light Nerd Font Complete.ttf
|
||||
Blex Mono Medium Italic Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Blex Mono Medium Italic Nerd Font Complete Mono.ttf
|
||||
Blex Mono Medium Italic Nerd Font Complete Windows Compatible.ttf
|
||||
Blex Mono Medium Italic Nerd Font Complete.ttf
|
||||
Blex Mono Medium Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Blex Mono Medium Nerd Font Complete Mono.ttf
|
||||
Blex Mono Medium Nerd Font Complete Windows Compatible.ttf
|
||||
Blex Mono Medium Nerd Font Complete.ttf
|
||||
Blex Mono Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Blex Mono Nerd Font Complete Mono.ttf
|
||||
Blex Mono Nerd Font Complete Windows Compatible.ttf
|
||||
Blex Mono Nerd Font Complete.ttf
|
||||
Blex Mono SemiBold Italic Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Blex Mono SemiBold Italic Nerd Font Complete Mono.ttf
|
||||
Blex Mono SemiBold Italic Nerd Font Complete Windows Compatible.ttf
|
||||
Blex Mono SemiBold Italic Nerd Font Complete.ttf
|
||||
Blex Mono SemiBold Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Blex Mono SemiBold Nerd Font Complete Mono.ttf
|
||||
Blex Mono SemiBold Nerd Font Complete Windows Compatible.ttf
|
||||
Blex Mono SemiBold Nerd Font Complete.ttf
|
||||
Blex Mono Text Italic Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Blex Mono Text Italic Nerd Font Complete Mono.ttf
|
||||
Blex Mono Text Italic Nerd Font Complete Windows Compatible.ttf
|
||||
Blex Mono Text Italic Nerd Font Complete.ttf
|
||||
Blex Mono Text Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Blex Mono Text Nerd Font Complete Mono.ttf
|
||||
Blex Mono Text Nerd Font Complete Windows Compatible.ttf
|
||||
Blex Mono Text Nerd Font Complete.ttf
|
||||
Blex Mono Thin Italic Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Blex Mono Thin Italic Nerd Font Complete Mono.ttf
|
||||
Blex Mono Thin Italic Nerd Font Complete Windows Compatible.ttf
|
||||
Blex Mono Thin Italic Nerd Font Complete.ttf
|
||||
Blex Mono Thin Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Blex Mono Thin Nerd Font Complete Mono.ttf
|
||||
Blex Mono Thin Nerd Font Complete Windows Compatible.ttf
|
||||
Blex Mono Thin Nerd Font Complete.ttf
|
||||
encodings.dir
|
||||
file-icons.ttf
|
||||
Fira Code Bold Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Fira Code Bold Nerd Font Complete Mono.ttf
|
||||
Fira Code Bold Nerd Font Complete Windows Compatible.ttf
|
||||
Fira Code Bold Nerd Font Complete.ttf
|
||||
Fira Code Light Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Fira Code Light Nerd Font Complete Mono.ttf
|
||||
Fira Code Light Nerd Font Complete Windows Compatible.ttf
|
||||
Fira Code Light Nerd Font Complete.ttf
|
||||
Fira Code Medium Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Fira Code Medium Nerd Font Complete Mono.ttf
|
||||
Fira Code Medium Nerd Font Complete Windows Compatible.ttf
|
||||
Fira Code Medium Nerd Font Complete.ttf
|
||||
Fira Code Regular Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Fira Code Regular Nerd Font Complete Mono.ttf
|
||||
Fira Code Regular Nerd Font Complete Windows Compatible.ttf
|
||||
Fira Code Regular Nerd Font Complete.ttf
|
||||
Fira Code Retina Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Fira Code Retina Nerd Font Complete Mono.ttf
|
||||
Fira Code Retina Nerd Font Complete Windows Compatible.ttf
|
||||
Fira Code Retina Nerd Font Complete.ttf
|
||||
Fira Code SemiBold Nerd Font Complete Mono Windows Compatible.ttf
|
||||
Fira Code SemiBold Nerd Font Complete Mono.ttf
|
||||
Fira Code SemiBold Nerd Font Complete Windows Compatible.ttf
|
||||
Fira Code SemiBold Nerd Font Complete.ttf
|
||||
Font Awesome 6 Brands-Regular-400.otf
|
||||
Font Awesome 6 Duotone-Solid-900.otf
|
||||
Font Awesome 6 Free-Regular-400.otf
|
||||
Font Awesome 6 Free-Solid-900.otf
|
||||
Font Awesome 6 Pro-Light-300.otf
|
||||
Font Awesome 6 Pro-Regular-400.otf
|
||||
Font Awesome 6 Pro-Solid-900.otf
|
||||
Font Awesome 6 Pro-Thin-100.otf
|
||||
fontawesome.ttf
|
||||
fonts.dir
|
||||
fonts.list
|
||||
fonts.scale
|
||||
Hack Bold Italic Nerd Font Complete Mono.ttf
|
||||
Hack Bold Italic Nerd Font Complete.ttf
|
||||
Hack Bold Nerd Font Complete Mono.ttf
|
||||
Hack Bold Nerd Font Complete.ttf
|
||||
Hack Italic Nerd Font Complete Mono.ttf
|
||||
Hack Italic Nerd Font Complete.ttf
|
||||
Hack Regular Nerd Font Complete Mono.ttf
|
||||
Hack Regular Nerd Font Complete.ttf
|
||||
icomoon-feather.ttf
|
||||
icomoon_Regular.ttf
|
||||
iconic.ttf
|
||||
Iosevka Bold Italic Nerd Font Complete Mono.ttf
|
||||
Iosevka Bold Italic Nerd Font Complete.ttf
|
||||
Iosevka Bold Nerd Font Complete Mono.ttf
|
||||
Iosevka Bold Nerd Font Complete.ttf
|
||||
Iosevka Bold Oblique Nerd Font Complete Mono.ttf
|
||||
Iosevka Bold Oblique Nerd Font Complete.ttf
|
||||
Iosevka Extralight Italic Nerd Font Complete Mono.ttf
|
||||
Iosevka Extralight Italic Nerd Font Complete.ttf
|
||||
Iosevka Extralight Nerd Font Complete Mono.ttf
|
||||
Iosevka Extralight Nerd Font Complete.ttf
|
||||
Iosevka Extralight Oblique Nerd Font Complete Mono.ttf
|
||||
Iosevka Extralight Oblique Nerd Font Complete.ttf
|
||||
Iosevka Heavy Italic Nerd Font Complete Mono.ttf
|
||||
Iosevka Heavy Italic Nerd Font Complete.ttf
|
||||
Iosevka Heavy Nerd Font Complete Mono.ttf
|
||||
Iosevka Heavy Nerd Font Complete.ttf
|
||||
Iosevka Heavy Oblique Nerd Font Complete Mono.ttf
|
||||
Iosevka Heavy Oblique Nerd Font Complete.ttf
|
||||
Iosevka Italic Nerd Font Complete Mono.ttf
|
||||
Iosevka Italic Nerd Font Complete.ttf
|
||||
Iosevka Light Italic Nerd Font Complete Mono.ttf
|
||||
Iosevka Light Italic Nerd Font Complete.ttf
|
||||
Iosevka Light Nerd Font Complete Mono.ttf
|
||||
Iosevka Light Nerd Font Complete.ttf
|
||||
Iosevka Light Oblique Nerd Font Complete Mono.ttf
|
||||
Iosevka Light Oblique Nerd Font Complete.ttf
|
||||
Iosevka Medium Italic Nerd Font Complete Mono.ttf
|
||||
Iosevka Medium Italic Nerd Font Complete.ttf
|
||||
Iosevka Medium Nerd Font Complete Mono.ttf
|
||||
Iosevka Medium Nerd Font Complete.ttf
|
||||
Iosevka Medium Oblique Nerd Font Complete Mono.ttf
|
||||
Iosevka Medium Oblique Nerd Font Complete.ttf
|
||||
Iosevka Nerd Font Complete Mono.ttf
|
||||
Iosevka Nerd Font Complete.ttf
|
||||
Iosevka Oblique Nerd Font Complete Mono.ttf
|
||||
Iosevka Oblique Nerd Font Complete.ttf
|
||||
Iosevka Term Bold Italic Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Bold Italic Nerd Font Complete.ttf
|
||||
Iosevka Term Bold Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Bold Nerd Font Complete.ttf
|
||||
Iosevka Term Bold Oblique Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Bold Oblique Nerd Font Complete.ttf
|
||||
Iosevka Term Extralight Italic Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Extralight Italic Nerd Font Complete.ttf
|
||||
Iosevka Term Extralight Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Extralight Nerd Font Complete.ttf
|
||||
Iosevka Term Extralight Oblique Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Extralight Oblique Nerd Font Complete.ttf
|
||||
Iosevka Term Heavy Italic Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Heavy Italic Nerd Font Complete.ttf
|
||||
Iosevka Term Heavy Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Heavy Nerd Font Complete.ttf
|
||||
Iosevka Term Heavy Oblique Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Heavy Oblique Nerd Font Complete.ttf
|
||||
Iosevka Term Italic Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Italic Nerd Font Complete.ttf
|
||||
Iosevka Term Light Italic Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Light Italic Nerd Font Complete.ttf
|
||||
Iosevka Term Light Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Light Nerd Font Complete.ttf
|
||||
Iosevka Term Light Oblique Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Light Oblique Nerd Font Complete.ttf
|
||||
Iosevka Term Medium Italic Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Medium Italic Nerd Font Complete.ttf
|
||||
Iosevka Term Medium Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Medium Nerd Font Complete.ttf
|
||||
Iosevka Term Medium Oblique Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Medium Oblique Nerd Font Complete.ttf
|
||||
Iosevka Term Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Nerd Font Complete.ttf
|
||||
Iosevka Term Oblique Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Oblique Nerd Font Complete.ttf
|
||||
Iosevka Term Thin Italic Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Thin Italic Nerd Font Complete.ttf
|
||||
Iosevka Term Thin Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Thin Nerd Font Complete.ttf
|
||||
Iosevka Term Thin Oblique Nerd Font Complete Mono.ttf
|
||||
Iosevka Term Thin Oblique Nerd Font Complete.ttf
|
||||
Iosevka Thin Italic Nerd Font Complete Mono.ttf
|
||||
Iosevka Thin Italic Nerd Font Complete.ttf
|
||||
Iosevka Thin Nerd Font Complete Mono.ttf
|
||||
Iosevka Thin Nerd Font Complete.ttf
|
||||
Iosevka Thin Oblique Nerd Font Complete Mono.ttf
|
||||
Iosevka Thin Oblique Nerd Font Complete.ttf
|
||||
iosevka-bold.ttc
|
||||
iosevka-extrabold.ttc
|
||||
iosevka-extralight.ttc
|
||||
iosevka-heavy.ttc
|
||||
iosevka-light.ttc
|
||||
iosevka-medium.ttc
|
||||
iosevka-regular.ttc
|
||||
iosevka-semibold.ttc
|
||||
iosevka-thin.ttc
|
||||
material-design-icons.ttf
|
||||
MaterialIcons-Regular.ttf
|
||||
MaterialIconsOutlined-Regular.otf
|
||||
MaterialIconsRound-Regular.otf
|
||||
MaterialIconsSharp-Regular.otf
|
||||
MaterialIconsTwoTone-Regular.otf
|
||||
octicons.ttf
|
||||
remix.ttf
|
||||
Roboto-Black.ttf
|
||||
Roboto-BlackItalic.ttf
|
||||
Roboto-Bold.ttf
|
||||
Roboto-BoldItalic.ttf
|
||||
Roboto-Italic.ttf
|
||||
Roboto-Light.ttf
|
||||
Roboto-LightItalic.ttf
|
||||
Roboto-Medium.ttf
|
||||
Roboto-MediumItalic.ttf
|
||||
Roboto-Regular.ttf
|
||||
Roboto-Thin.ttf
|
||||
Roboto-ThinItalic.ttf
|
||||
weathericons.ttf
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@
|
||||
3.4.18
|
Binary file not shown.
@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
# Color Palette
|
||||
export BLACK=0xff181926
|
||||
export WHITE=0xffD9D7D6
|
||||
export RED=0xffed8796
|
||||
export GREEN=0xffcad3f5
|
||||
export BLUE=0xff8aadf4
|
||||
export YELLOW=0xffeed49f
|
||||
export ORANGE=0xfff5a97f
|
||||
export MAGENTA=0xffc6a0f6
|
||||
export GREY=0xff939ab7
|
||||
export TRANSPARENT=0x00000000
|
||||
|
||||
# General bar colors
|
||||
#export BAR_COLOR=0xcc24273a
|
||||
#131e22
|
||||
#export BAR_COLOR=0xff2a2f38 #grey
|
||||
export BAR_COLOR=0xff131E22
|
||||
export ICON_COLOR=$WHITE # Color of all icons
|
||||
export LABEL_COLOR=$WHITE # Color of all labels
|
||||
export SPACE_BACKGROUND=0xFF242831
|
||||
export OPEN_APPS_BACKGROUND=0xff494d64
|
||||
export CALENDAR_BACKGROUND=0xFF242831
|
||||
|
||||
export POPUP_BACKGROUND_COLOR=$BLACK
|
||||
export POPUP_BORDER_COLOR=$WHITE
|
||||
|
||||
export SHADOW_COLOR=$BLACK
|
@ -0,0 +1,23 @@
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
|
||||
struct clock {
|
||||
char command[128];
|
||||
};
|
||||
|
||||
static inline void clock_init(struct clock* clock) {
|
||||
snprintf(clock->command, 128, "");
|
||||
}
|
||||
|
||||
static inline void clock_update(struct clock* clock) {
|
||||
time_t t = time(NULL);
|
||||
struct tm* tm = localtime(&t);
|
||||
|
||||
char time[8];
|
||||
strftime(time, 8, "%H:%M", tm);
|
||||
|
||||
char date[16];
|
||||
strftime(date, 16, "%a %d. %b", tm);
|
||||
|
||||
snprintf(clock->command, 128, "--set calendar icon=\"%s\" label=\"%s\"", date, time);
|
||||
}
|
@ -0,0 +1,118 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <mach/mach.h>
|
||||
#include <stdbool.h>
|
||||
#include <time.h>
|
||||
|
||||
static const char TOPPROC[32] = { "/bin/ps -Aceo pid,pcpu,comm -r" };
|
||||
static const char FILTER_PATTERN[16] = { "com.apple." };
|
||||
|
||||
struct cpu {
|
||||
host_t host;
|
||||
mach_msg_type_number_t count;
|
||||
host_cpu_load_info_data_t load;
|
||||
host_cpu_load_info_data_t prev_load;
|
||||
bool has_prev_load;
|
||||
|
||||
char command[256];
|
||||
};
|
||||
|
||||
static inline void cpu_init(struct cpu* cpu) {
|
||||
cpu->host = mach_host_self();
|
||||
cpu->count = HOST_CPU_LOAD_INFO_COUNT;
|
||||
cpu->has_prev_load = false;
|
||||
snprintf(cpu->command, 100, "");
|
||||
}
|
||||
|
||||
static inline void cpu_update(struct cpu* cpu) {
|
||||
kern_return_t error = host_statistics(cpu->host,
|
||||
HOST_CPU_LOAD_INFO,
|
||||
(host_info_t)&cpu->load,
|
||||
&cpu->count );
|
||||
|
||||
if (error != KERN_SUCCESS) {
|
||||
printf("Error: Could not read cpu host statistics.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (cpu->has_prev_load) {
|
||||
uint32_t delta_user = cpu->load.cpu_ticks[CPU_STATE_USER]
|
||||
- cpu->prev_load.cpu_ticks[CPU_STATE_USER];
|
||||
|
||||
uint32_t delta_system = cpu->load.cpu_ticks[CPU_STATE_SYSTEM]
|
||||
- cpu->prev_load.cpu_ticks[CPU_STATE_SYSTEM];
|
||||
|
||||
uint32_t delta_idle = cpu->load.cpu_ticks[CPU_STATE_IDLE]
|
||||
- cpu->prev_load.cpu_ticks[CPU_STATE_IDLE];
|
||||
|
||||
double user_perc = (double)delta_user / (double)(delta_system
|
||||
+ delta_user
|
||||
+ delta_idle);
|
||||
|
||||
double sys_perc = (double)delta_system / (double)(delta_system
|
||||
+ delta_user
|
||||
+ delta_idle);
|
||||
|
||||
double total_perc = user_perc + sys_perc;
|
||||
|
||||
FILE* file;
|
||||
char line[1024];
|
||||
|
||||
file = popen(TOPPROC, "r");
|
||||
if (!file) {
|
||||
printf("Error: TOPPROC command errored out...\n" );
|
||||
return;
|
||||
}
|
||||
|
||||
fgets(line, sizeof(line), file);
|
||||
fgets(line, sizeof(line), file);
|
||||
|
||||
char* start = strstr(line, FILTER_PATTERN);
|
||||
char topproc[32];
|
||||
uint32_t caret = 0;
|
||||
for (int i = 0; i < sizeof(line); i++) {
|
||||
if (start && i == start - line) {
|
||||
i+=9;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (i > 29) break;
|
||||
if (i > 27) {
|
||||
topproc[caret++] = '.';
|
||||
continue;
|
||||
}
|
||||
topproc[caret++] = line[i];
|
||||
if (line[i] == '\0') break;
|
||||
}
|
||||
|
||||
pclose(file);
|
||||
|
||||
char color[16];
|
||||
if (total_perc >= .7) {
|
||||
snprintf(color, 16, "%s", getenv("RED"));
|
||||
} else if (total_perc >= .3) {
|
||||
snprintf(color, 16, "%s", getenv("ORANGE"));
|
||||
} else if (total_perc >= .1) {
|
||||
snprintf(color, 16, "%s", getenv("YELLOW"));
|
||||
} else {
|
||||
snprintf(color, 16, "%s", getenv("LABEL_COLOR"));
|
||||
}
|
||||
|
||||
snprintf(cpu->command, 256, "--push cpu.sys %.2f "
|
||||
"--push cpu.user %.2f "
|
||||
"--set cpu.percent label=%.0f%% label.color=%s "
|
||||
"--set cpu.top label=\"%s\"",
|
||||
sys_perc,
|
||||
user_perc,
|
||||
total_perc*100.,
|
||||
color,
|
||||
topproc );
|
||||
}
|
||||
else {
|
||||
snprintf(cpu->command, 256, "");
|
||||
}
|
||||
|
||||
cpu->prev_load = cpu->load;
|
||||
cpu->has_prev_load = true;
|
||||
}
|
Binary file not shown.
@ -0,0 +1,59 @@
|
||||
#include "cpu.h"
|
||||
#include "clock.h"
|
||||
#include "sketchybar.h"
|
||||
|
||||
struct cpu g_cpu;
|
||||
struct clock g_clock;
|
||||
|
||||
void handler(env env) {
|
||||
// Environment variables passed from sketchybar can be accessed as seen below
|
||||
char* name = env_get_value_for_key(env, "NAME");
|
||||
char* sender = env_get_value_for_key(env, "SENDER");
|
||||
char* info = env_get_value_for_key(env, "INFO");
|
||||
char* selected = env_get_value_for_key(env, "SELECTED");
|
||||
|
||||
if (selected && strlen(selected) > 0) {
|
||||
// Space items
|
||||
char* width;
|
||||
if (strcmp(selected, "true") == 0) {
|
||||
width = "0";
|
||||
} else {
|
||||
width = "dynamic";
|
||||
}
|
||||
char command[256];
|
||||
snprintf(command, 256, "--animate tanh 20 --set %s icon.highlight=%s label.width=%s", name, selected, width);
|
||||
sketchybar(command);
|
||||
}
|
||||
else if (strcmp(sender, "front_app_switched") == 0) {
|
||||
// front_app item
|
||||
char command[256];
|
||||
|
||||
snprintf(command, 256, "--set %s label=\"%s\"", name, info);
|
||||
sketchybar(command);
|
||||
}
|
||||
else if ((strcmp(sender, "routine") == 0)
|
||||
|| (strcmp(sender, "forced") == 0)) {
|
||||
// CPU and Clock routine updates
|
||||
cpu_update(&g_cpu);
|
||||
clock_update(&g_clock);
|
||||
|
||||
if (strlen(g_cpu.command) > 0 && strlen(g_clock.command) > 0) {
|
||||
char command[512];
|
||||
snprintf(command, 512, "%s %s", g_cpu.command, g_clock.command);
|
||||
sketchybar(command);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main (int argc, char** argv) {
|
||||
cpu_init(&g_cpu);
|
||||
clock_init(&g_clock);
|
||||
|
||||
if (argc < 2) {
|
||||
printf("Usage: provider \"<bootstrap name>\"\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
event_server_begin(handler, argv[1]);
|
||||
return 0;
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
|
||||
helper: helper.c cpu.h clock.h sketchybar.h
|
||||
clang -std=c17 -O3 helper.c -o helper
|
@ -0,0 +1,227 @@
|
||||
#pragma once
|
||||
|
||||
#include <mach/mach.h>
|
||||
#include <mach/message.h>
|
||||
#include <bootstrap.h>
|
||||
#include <stdlib.h>
|
||||
#include <pthread.h>
|
||||
#include <stdio.h>
|
||||
|
||||
typedef char* env;
|
||||
|
||||
#define MACH_HANDLER(name) void name(env env)
|
||||
typedef MACH_HANDLER(mach_handler);
|
||||
|
||||
struct mach_message {
|
||||
mach_msg_header_t header;
|
||||
mach_msg_size_t msgh_descriptor_count;
|
||||
mach_msg_ool_descriptor_t descriptor;
|
||||
};
|
||||
|
||||
struct mach_buffer {
|
||||
struct mach_message message;
|
||||
mach_msg_trailer_t trailer;
|
||||
};
|
||||
|
||||
struct mach_server {
|
||||
bool is_running;
|
||||
mach_port_name_t task;
|
||||
mach_port_t port;
|
||||
mach_port_t bs_port;
|
||||
|
||||
pthread_t thread;
|
||||
mach_handler* handler;
|
||||
};
|
||||
|
||||
static struct mach_server g_mach_server;
|
||||
static mach_port_t g_mach_port = 0;
|
||||
|
||||
static inline char* env_get_value_for_key(env env, char* key) {
|
||||
uint32_t caret = 0;
|
||||
for(;;) {
|
||||
if (!env[caret]) break;
|
||||
if (strcmp(&env[caret], key) == 0)
|
||||
return &env[caret + strlen(&env[caret]) + 1];
|
||||
|
||||
caret += strlen(&env[caret])
|
||||
+ strlen(&env[caret + strlen(&env[caret]) + 1])
|
||||
+ 2;
|
||||
}
|
||||
return (char*)"";
|
||||
}
|
||||
|
||||
static inline mach_port_t mach_get_bs_port() {
|
||||
mach_port_name_t task = mach_task_self();
|
||||
|
||||
mach_port_t bs_port;
|
||||
if (task_get_special_port(task,
|
||||
TASK_BOOTSTRAP_PORT,
|
||||
&bs_port ) != KERN_SUCCESS) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
mach_port_t port;
|
||||
if (bootstrap_look_up(bs_port,
|
||||
"git.felix.sketchybar",
|
||||
&port ) != KERN_SUCCESS) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return port;
|
||||
}
|
||||
|
||||
static inline void mach_receive_message(mach_port_t port, struct mach_buffer* buffer, bool timeout) {
|
||||
*buffer = (struct mach_buffer) { 0 };
|
||||
mach_msg_return_t msg_return;
|
||||
if (timeout)
|
||||
msg_return = mach_msg(&buffer->message.header,
|
||||
MACH_RCV_MSG | MACH_RCV_TIMEOUT,
|
||||
0,
|
||||
sizeof(struct mach_buffer),
|
||||
port,
|
||||
100,
|
||||
MACH_PORT_NULL );
|
||||
else
|
||||
msg_return = mach_msg(&buffer->message.header,
|
||||
MACH_RCV_MSG,
|
||||
0,
|
||||
sizeof(struct mach_buffer),
|
||||
port,
|
||||
MACH_MSG_TIMEOUT_NONE,
|
||||
MACH_PORT_NULL );
|
||||
|
||||
if (msg_return != MACH_MSG_SUCCESS) {
|
||||
buffer->message.descriptor.address = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static inline char* mach_send_message(mach_port_t port, char* message, uint32_t len) {
|
||||
if (!message || !port) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
mach_port_t response_port;
|
||||
mach_port_name_t task = mach_task_self();
|
||||
if (mach_port_allocate(task, MACH_PORT_RIGHT_RECEIVE,
|
||||
&response_port ) != KERN_SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (mach_port_insert_right(task, response_port,
|
||||
response_port,
|
||||
MACH_MSG_TYPE_MAKE_SEND)!= KERN_SUCCESS) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct mach_message msg = { 0 };
|
||||
msg.header.msgh_remote_port = port;
|
||||
msg.header.msgh_local_port = response_port;
|
||||
msg.header.msgh_id = response_port;
|
||||
msg.header.msgh_bits = MACH_MSGH_BITS_SET(MACH_MSG_TYPE_COPY_SEND,
|
||||
MACH_MSG_TYPE_MAKE_SEND,
|
||||
0,
|
||||
MACH_MSGH_BITS_COMPLEX );
|
||||
|
||||
msg.header.msgh_size = sizeof(struct mach_message);
|
||||
msg.msgh_descriptor_count = 1;
|
||||
msg.descriptor.address = message;
|
||||
msg.descriptor.size = len * sizeof(char);
|
||||
msg.descriptor.copy = MACH_MSG_VIRTUAL_COPY;
|
||||
msg.descriptor.deallocate = false;
|
||||
msg.descriptor.type = MACH_MSG_OOL_DESCRIPTOR;
|
||||
|
||||
mach_msg(&msg.header,
|
||||
MACH_SEND_MSG,
|
||||
sizeof(struct mach_message),
|
||||
0,
|
||||
MACH_PORT_NULL,
|
||||
MACH_MSG_TIMEOUT_NONE,
|
||||
MACH_PORT_NULL );
|
||||
|
||||
struct mach_buffer buffer = { 0 };
|
||||
mach_receive_message(response_port, &buffer, true);
|
||||
if (buffer.message.descriptor.address)
|
||||
return (char*)buffer.message.descriptor.address;
|
||||
mach_msg_destroy(&buffer.message.header);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
|
||||
static inline bool mach_server_begin(struct mach_server* mach_server, mach_handler handler, char* bootstrap_name) {
|
||||
mach_server->task = mach_task_self();
|
||||
|
||||
if (mach_port_allocate(mach_server->task,
|
||||
MACH_PORT_RIGHT_RECEIVE,
|
||||
&mach_server->port ) != KERN_SUCCESS) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (mach_port_insert_right(mach_server->task,
|
||||
mach_server->port,
|
||||
mach_server->port,
|
||||
MACH_MSG_TYPE_MAKE_SEND) != KERN_SUCCESS) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (task_get_special_port(mach_server->task,
|
||||
TASK_BOOTSTRAP_PORT,
|
||||
&mach_server->bs_port) != KERN_SUCCESS) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (bootstrap_register(mach_server->bs_port,
|
||||
bootstrap_name,
|
||||
mach_server->port ) != KERN_SUCCESS) {
|
||||
return false;
|
||||
}
|
||||
|
||||
mach_server->handler = handler;
|
||||
mach_server->is_running = true;
|
||||
while (mach_server->is_running) {
|
||||
struct mach_buffer* buffer = (struct mach_buffer*)malloc(sizeof(struct mach_buffer));
|
||||
mach_receive_message(mach_server->port, buffer, false);
|
||||
mach_server->handler((env)buffer->message.descriptor.address);
|
||||
mach_msg_destroy(&buffer->message.header);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
#pragma clang diagnostic pop
|
||||
|
||||
static inline char* sketchybar(char* message) {
|
||||
uint32_t message_length = strlen(message) + 1;
|
||||
char formatted_message[message_length + 1];
|
||||
|
||||
char quote = '\0';
|
||||
uint32_t caret = 0;
|
||||
for (int i = 0; i < message_length; ++i) {
|
||||
if (message[i] == '"' || message[i] == '\'') {
|
||||
if (quote == message[i]) quote = '\0';
|
||||
else quote = message[i];
|
||||
continue;
|
||||
}
|
||||
formatted_message[caret] = message[i];
|
||||
if (message[i] == ' ' && !quote) formatted_message[caret] = '\0';
|
||||
caret++;
|
||||
}
|
||||
|
||||
if (caret > 0 && formatted_message[caret] == '\0'
|
||||
&& formatted_message[caret - 1] == '\0') {
|
||||
caret--;
|
||||
}
|
||||
|
||||
formatted_message[caret] = '\0';
|
||||
if (!g_mach_port) g_mach_port = mach_get_bs_port();
|
||||
char* response = mach_send_message(g_mach_port,
|
||||
formatted_message,
|
||||
caret + 1 );
|
||||
|
||||
if (response) return response;
|
||||
else return (char*)"";
|
||||
}
|
||||
|
||||
static inline void event_server_begin(mach_handler event_handler, char* bootstrap_name) {
|
||||
mach_server_begin(&g_mach_server, event_handler, bootstrap_name);
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
# General Icons
|
||||
LOADING=
|
||||
APPLE=
|
||||
PREFERENCES=
|
||||
ACTIVITY=
|
||||
LOCK=
|
||||
BELL=
|
||||
BELL_DOT=
|
||||
|
||||
# Git Icons
|
||||
GIT_ISSUE=
|
||||
GIT_DISCUSSION=
|
||||
GIT_PULL_REQUEST=
|
||||
GIT_COMMIT=
|
||||
GIT_INDICATOR=
|
||||
|
||||
# Spotify Icons
|
||||
SPOTIFY_BACK=
|
||||
SPOTIFY_PLAY_PAUSE=
|
||||
SPOTIFY_NEXT=
|
||||
SPOTIFY_SHUFFLE=
|
||||
SPOTIFY_REPEAT=
|
||||
|
||||
# Yabai Icons
|
||||
YABAI_STACK=
|
||||
YABAI_FULLSCREEN_ZOOM=
|
||||
YABAI_PARENT_ZOOM=
|
||||
YABAI_FLOAT=
|
||||
YABAI_GRID=
|
@ -0,0 +1,32 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
POPUP_OFF="sketchybar --set apple.logo popup.drawing=off"
|
||||
POPUP_CLICK_SCRIPT="sketchybar --set \$NAME popup.drawing=toggle"
|
||||
|
||||
sketchybar --add item apple.logo left \
|
||||
\
|
||||
--set apple.logo icon= \
|
||||
icon.font="Font Awesome 6 Pro:Regular:16.0" \
|
||||
icon.color=$GREEN \
|
||||
background.padding_left=-8 \
|
||||
background.padding_right=25 \
|
||||
label.drawing=off \
|
||||
click_script="$POPUP_CLICK_SCRIPT" \
|
||||
\
|
||||
--add item apple.prefs popup.apple.logo \
|
||||
--set apple.prefs icon=$PREFERENCES \
|
||||
label="Preferences" \
|
||||
click_script="open -a 'System Preferences';
|
||||
$POPUP_OFF" \
|
||||
\
|
||||
--add item apple.activity popup.apple.logo \
|
||||
--set apple.activity icon=$ACTIVITY \
|
||||
label="Activity" \
|
||||
click_script="open -a 'Activity Monitor';
|
||||
$POPUP_OFF"\
|
||||
\
|
||||
--add item apple.lock popup.apple.logo \
|
||||
--set apple.lock icon=$LOCK \
|
||||
label="Lock Screen" \
|
||||
click_script="pmset displaysleepnow;
|
||||
$POPUP_OFF"
|
@ -0,0 +1,16 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
sketchybar --add item calendar right \
|
||||
--set calendar icon=cal \
|
||||
icon.color=$WHITE \
|
||||
icon.font="$FONT:Black:12.0" \
|
||||
icon.padding_left=5 \
|
||||
icon.padding_right=5 \
|
||||
label.color=$WHITE \
|
||||
label.padding_left=5 \
|
||||
label.padding_right=5 \
|
||||
width=140 \
|
||||
align=center \
|
||||
background.color=$CALENDAR_BACKGROUND \
|
||||
background.height=26 \
|
||||
background.corner_radius=11
|
@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
sketchybar --add item cpu.top right \
|
||||
--set cpu.top label.font="$FONT:Semibold:7" \
|
||||
label=CPU \
|
||||
icon.drawing=off \
|
||||
width=0 \
|
||||
y_offset=6 \
|
||||
background.padding_right=23 \
|
||||
\
|
||||
--add item cpu.percent right \
|
||||
--set cpu.percent label.font="$FONT:Heavy:12" \
|
||||
label=CPU \
|
||||
y_offset=-4 \
|
||||
width=40 \
|
||||
icon.drawing=off \
|
||||
update_freq=2 \
|
||||
mach_helper="$HELPER" \
|
||||
background.padding_right=20 \
|
||||
\
|
||||
--add graph cpu.sys right 100 \
|
||||
--set cpu.sys width=0 \
|
||||
graph.color=$RED \
|
||||
graph.fill_color=$RED \
|
||||
label.drawing=off \
|
||||
icon.drawing=off \
|
||||
background.padding_right=20 \
|
||||
background.padding_left=10 \
|
||||
background.height=30 \
|
||||
background.drawing=on \
|
||||
background.color=$TRANSPARENT \
|
||||
\
|
||||
--add graph cpu.user right 100 \
|
||||
--set cpu.user graph.color=$BLUE \
|
||||
label.drawing=off \
|
||||
icon.drawing=off \
|
||||
background.padding_right=20 \
|
||||
background.padding_left=10 \
|
||||
background.height=30 \
|
||||
background.drawing=on \
|
||||
background.color=$TRANSPARENT
|
@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
sketchybar --add event window_focus \
|
||||
--add event windows_on_spaces \
|
||||
--add item system.yabai left \
|
||||
--set system.yabai script="$PLUGIN_DIR/yabai.sh" \
|
||||
icon.font="$FONT:Bold:16.0" \
|
||||
label.drawing=off \
|
||||
icon.width=30 \
|
||||
icon=$YABAI_GRID \
|
||||
icon.color=$GREEN \
|
||||
updates=on \
|
||||
associated_display=active \
|
||||
--subscribe system.yabai window_focus \
|
||||
windows_on_spaces \
|
||||
mouse.clicked \
|
||||
\
|
||||
--add item front_app left \
|
||||
--set front_app mach_helper="$HELPER" \
|
||||
icon.drawing=off \
|
||||
background.padding_left=0 \
|
||||
background.padding_right=10 \
|
||||
label.color=$WHITE \
|
||||
label.font="$FONT:Black:12.0" \
|
||||
associated_display=active \
|
||||
--subscribe front_app front_app_switched
|
||||
|
@ -0,0 +1,26 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
sketchybar --add item github.bell right \
|
||||
--set github.bell update_freq=180 \
|
||||
icon.font="$FONT:Bold:15.0" \
|
||||
icon=$BELL \
|
||||
icon.color=$BLUE \
|
||||
label=$LOADING \
|
||||
label.highlight_color=$BLUE \
|
||||
background.padding_left=10 \
|
||||
popup.align=right \
|
||||
script="$PLUGIN_DIR/github.sh" \
|
||||
click_script="$POPUP_CLICK_SCRIPT" \
|
||||
--subscribe github.bell mouse.entered \
|
||||
mouse.exited \
|
||||
mouse.exited.global \
|
||||
\
|
||||
--add item github.template popup.github.bell \
|
||||
--set github.template drawing=off \
|
||||
background.corner_radius=12 \
|
||||
background.padding_left=7 \
|
||||
background.padding_right=7 \
|
||||
background.color=$BLACK \
|
||||
background.drawing=off \
|
||||
icon.background.height=2 \
|
||||
icon.background.y_offset=-12
|
@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
SPACE_ICONS=("" "" "" "" "" "" "" "")
|
||||
|
||||
sid=0
|
||||
for i in "${!SPACE_ICONS[@]}"
|
||||
do
|
||||
sid=$(($i+1))
|
||||
sketchybar --add space space.$sid left \
|
||||
--set space.$sid associated_space=$sid \
|
||||
icon=${SPACE_ICONS[i]} \
|
||||
icon.padding_left=22 \
|
||||
icon.padding_right=22 \
|
||||
label.padding_right=33 \
|
||||
icon.highlight_color=$RED \
|
||||
background.padding_left=-8 \
|
||||
background.padding_right=-8 \
|
||||
background.height=26 \
|
||||
background.corner_radius=9 \
|
||||
background.color=$SPACE_BACKGROUND \
|
||||
background.drawing=on \
|
||||
icon.font="Font Awesome 6 Pro:Regular:16.0" \
|
||||
label.background.height=26 \
|
||||
label.background.drawing=on \
|
||||
label.background.color=$OPEN_APPS_BACKGROUND \
|
||||
label.background.corner_radius=9 \
|
||||
label.drawing=off \
|
||||
script="" \
|
||||
mach_helper="$HELPER" \
|
||||
click_script="$SPACE_CLICK_SCRIPT"
|
||||
done
|
||||
|
||||
sketchybar --add item separator left \
|
||||
--set separator icon= \
|
||||
icon.font="Hack Nerd Font:Regular:16.0" \
|
||||
background.padding_left=26 \
|
||||
background.padding_right=15 \
|
||||
label.drawing=off \
|
||||
associated_display=active \
|
||||
icon.color=$WHITE
|
@ -0,0 +1,131 @@
|
||||
SPOTIFY_EVENT="com.spotify.client.PlaybackStateChanged"
|
||||
POPUP_SCRIPT="sketchybar -m --set spotify.anchor popup.drawing=toggle"
|
||||
|
||||
sketchybar --add event spotify_change $SPOTIFY_EVENT \
|
||||
--add item spotify.anchor center \
|
||||
--set spotify.anchor script="$PLUGIN_DIR/spotify.sh" \
|
||||
click_script="$POPUP_SCRIPT" \
|
||||
width=170 \
|
||||
align=left \
|
||||
icon.background.drawing=on \
|
||||
icon.background.color=$GREEN \
|
||||
icon.background.height=3 \
|
||||
icon.background.corner_radius=2 \
|
||||
background.padding_left=1 \
|
||||
background.drawing=on \
|
||||
popup.horizontal=on \
|
||||
popup.align=center \
|
||||
popup.height=120 \
|
||||
label= \
|
||||
label.font="$FONT:Regular:19.0" \
|
||||
label.drawing=off \
|
||||
drawing=off \
|
||||
--subscribe spotify.anchor mouse.entered mouse.exited \
|
||||
mouse.exited.global \
|
||||
\
|
||||
--add item spotify.cover popup.spotify.anchor \
|
||||
--set spotify.cover script="$PLUGIN_DIR/spotify.sh" \
|
||||
label.drawing=off \
|
||||
icon.drawing=off \
|
||||
background.padding_left=12 \
|
||||
background.padding_right=10 \
|
||||
background.image.scale=0.15 \
|
||||
background.image.drawing=on \
|
||||
background.drawing=on \
|
||||
\
|
||||
--add item spotify.title popup.spotify.anchor \
|
||||
--set spotify.title icon.drawing=off \
|
||||
background.padding_left=0 \
|
||||
background.padding_right=0 \
|
||||
width=0 \
|
||||
label.font="$FONT:Heavy:14.0" \
|
||||
y_offset=40 \
|
||||
\
|
||||
--add item spotify.artist popup.spotify.anchor \
|
||||
--set spotify.artist icon.drawing=off \
|
||||
y_offset=20 \
|
||||
background.padding_left=0 \
|
||||
background.padding_right=0 \
|
||||
width=0 \
|
||||
\
|
||||
--add item spotify.album popup.spotify.anchor \
|
||||
--set spotify.album icon.drawing=off \
|
||||
background.padding_left=0 \
|
||||
background.padding_right=0 \
|
||||
y_offset=3 \
|
||||
width=0 \
|
||||
\
|
||||
--add item spotify.shuffle popup.spotify.anchor \
|
||||
--set spotify.shuffle icon= \
|
||||
icon.padding_left=5 \
|
||||
icon.padding_right=5 \
|
||||
icon.color=$BLACK \
|
||||
icon.highlight_color=$MAGENTA \
|
||||
label.drawing=off \
|
||||
script="$PLUGIN_DIR/spotify.sh" \
|
||||
y_offset=-30 \
|
||||
--subscribe spotify.shuffle mouse.clicked \
|
||||
\
|
||||
--add item spotify.back popup.spotify.anchor \
|
||||
--set spotify.back icon= \
|
||||
icon.padding_left=5 \
|
||||
icon.padding_right=5 \
|
||||
icon.color=$BLACK \
|
||||
script="$PLUGIN_DIR/spotify.sh" \
|
||||
label.drawing=off \
|
||||
y_offset=-30 \
|
||||
--subscribe spotify.back mouse.clicked \
|
||||
\
|
||||
--add item spotify.play popup.spotify.anchor \
|
||||
--set spotify.play icon= \
|
||||
background.height=40 \
|
||||
background.corner_radius=20 \
|
||||
width=40 \
|
||||
align=center \
|
||||
background.color=$BLACK \
|
||||
background.border_color=$WHITE \
|
||||
background.border_width=0 \
|
||||
background.drawing=on \
|
||||
icon.padding_left=4 \
|
||||
icon.padding_right=5 \
|
||||
icon.color=$WHITE \
|
||||
updates=on \
|
||||
label.drawing=off \
|
||||
script="$PLUGIN_DIR/spotify.sh" \
|
||||
y_offset=-30 \
|
||||
--subscribe spotify.play mouse.clicked spotify_change \
|
||||
\
|
||||
--add item spotify.next popup.spotify.anchor \
|
||||
--set spotify.next icon= \
|
||||
icon.padding_left=5 \
|
||||
icon.padding_right=10 \
|
||||
icon.color=$BLACK \
|
||||
label.drawing=off \
|
||||
script="$PLUGIN_DIR/spotify.sh" \
|
||||
y_offset=-30 \
|
||||
--subscribe spotify.next mouse.clicked \
|
||||
\
|
||||
--add item spotify.repeat popup.spotify.anchor \
|
||||
--set spotify.repeat icon= \
|
||||
icon.highlight_color=$MAGENTA \
|
||||
icon.padding_left=5 \
|
||||
icon.padding_right=10 \
|
||||
icon.color=$BLACK \
|
||||
label.drawing=off \
|
||||
script="$PLUGIN_DIR/spotify.sh" \
|
||||
y_offset=-30 \
|
||||
--subscribe spotify.repeat mouse.clicked \
|
||||
\
|
||||
--add item spotify.spacer popup.spotify.anchor \
|
||||
--set spotify.spacer width=5 \
|
||||
\
|
||||
--add bracket spotify spotify.shuffle \
|
||||
spotify.back \
|
||||
spotify.play \
|
||||
spotify.next \
|
||||
spotify.repeat \
|
||||
--set spotify background.color=$GREEN \
|
||||
background.corner_radius=11 \
|
||||
background.drawing=on \
|
||||
y_offset=-30 \
|
||||
drawing=off
|
@ -0,0 +1,21 @@
|
||||
sketchybar --add item volume right \
|
||||
--set volume script="$PLUGIN_DIR/volume.sh" \
|
||||
updates=on \
|
||||
icon.background.drawing=on \
|
||||
icon.background.color=$BLUE \
|
||||
icon.background.height=8 \
|
||||
icon.background.corner_radius=3 \
|
||||
icon.width=0 \
|
||||
icon.align=right \
|
||||
label.drawing=off \
|
||||
< |