mirror of
https://github.com/GeorgeSG/dotfiles.git
synced 2026-09-06 01:18:44 +00:00
Compare commits
2
Commits
2c124d2bee
..
cobalt
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7c052872cc | ||
|
|
f1e56ce98a |
@@ -0,0 +1,63 @@
|
|||||||
|
##### Platform independent #####
|
||||||
|
# Files
|
||||||
|
alias df1="du -h -d 1"
|
||||||
|
|
||||||
|
|
||||||
|
# Git Aliases
|
||||||
|
alias g="git"
|
||||||
|
alias ga="git add"
|
||||||
|
alias gr="git rm"
|
||||||
|
alias gc="git commit"
|
||||||
|
alias gs="git status -s"
|
||||||
|
alias gss="git status"
|
||||||
|
alias gd="git diff"
|
||||||
|
alias gds="git diff --staged"
|
||||||
|
alias gco="git checkout"
|
||||||
|
alias gcom="git checkout master"
|
||||||
|
alias gpom="git pull origin master"
|
||||||
|
alias gbd="git branch -D"
|
||||||
|
alias gm="git mergetool"
|
||||||
|
alias gmc="git merge --continue"
|
||||||
|
alias grc="git rebase --continue"
|
||||||
|
|
||||||
|
# tmux
|
||||||
|
alias tm="tmux -2 attach-session -t "default" || tmux -2 new-session -s \"default\""
|
||||||
|
alias tmv="tmux -2 attach-session -t "vscode" || tmux -2 new-session -s \"vscode\""
|
||||||
|
alias tmks="tmux kill-session -t"
|
||||||
|
alias tmas="tmux attach-session -t"
|
||||||
|
alias tmls="tmux list-sessions"
|
||||||
|
|
||||||
|
# Docker
|
||||||
|
alias dc="docker compose"
|
||||||
|
alias de="docker exec"
|
||||||
|
alias dr="docker run"
|
||||||
|
alias db="docker build"
|
||||||
|
alias ds="docker stop"
|
||||||
|
alias drm="docker rm"
|
||||||
|
alias drmi="docker rmi"
|
||||||
|
alias dps="docker ps"
|
||||||
|
alias dl="docker logs"
|
||||||
|
|
||||||
|
# Editing files
|
||||||
|
alias aliases="code ~/.bash_aliases"
|
||||||
|
alias vimrc="vim ~/.vimrc"
|
||||||
|
|
||||||
|
# NPM
|
||||||
|
alias npr="npm run"
|
||||||
|
|
||||||
|
# CD-ing to some commonly used folders
|
||||||
|
alias og="cd ~/Git"
|
||||||
|
|
||||||
|
alias sass_watch="sass --watch ./:./"
|
||||||
|
alias grep="grep --color=auto"
|
||||||
|
alias c="clear"
|
||||||
|
alias be="bundle exec"
|
||||||
|
alias serve="python -m http.server 9000"
|
||||||
|
|
||||||
|
##### Mac OS Specific #####
|
||||||
|
alias cask="brew cask"
|
||||||
|
alias fl="open -a ForkLift"
|
||||||
|
|
||||||
|
if [ -f ~/.bash_local_aliases ]; then
|
||||||
|
. ~/.bash_local_aliases
|
||||||
|
fi
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
source ~/.bashrc
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
# Set prompt
|
# Set prompt
|
||||||
IFS='.' read -ra split_hostname <<<$(hostname | tr '[:upper:]' '[:lower:]')
|
IFS='.' read -ra split_hostname <<<$(hostname | tr '[:upper:]' '[:lower:]')
|
||||||
HOSTNAME=${split_hostname[0]}
|
HOSTNAME=${split_hostname[0]}
|
||||||
PS1='\[\e[1;4;36m\]$HOSTNAME\[\e[1;0m\] \[\e[1;32m\]\w\[\e[m\]\[\e[1;0m\] \[\e[0m\] \[\e[1;0m\]'
|
PS1='\[\e[1;4;31m\]$HOSTNAME\[\e[1;0m\] \[\e[1;32m\]\w\[\e[m\]\[\e[1;0m\] λ\[\e[0m\] \[\e[1;0m\]'
|
||||||
export TERM=xterm-256color
|
export TERM=xterm-256color
|
||||||
|
|
||||||
shopt -s cdspell
|
shopt -s cdspell
|
||||||
@@ -9,13 +9,6 @@ shopt -s cdspell
|
|||||||
# update the values of LINES and COLUMNS.
|
# update the values of LINES and COLUMNS.
|
||||||
shopt -s checkwinsize
|
shopt -s checkwinsize
|
||||||
|
|
||||||
# Enable some Bash 4 features when possible:
|
|
||||||
# * `autocd`, e.g. `**/qux` will enter `./foo/bar/baz/qux`
|
|
||||||
# * Recursive globbing, e.g. `echo **/*.txt`
|
|
||||||
for option in autocd globstar; do
|
|
||||||
shopt -s "$option" 2> /dev/null;
|
|
||||||
done;
|
|
||||||
|
|
||||||
# Disable Caret-C output
|
# Disable Caret-C output
|
||||||
stty -ctlecho
|
stty -ctlecho
|
||||||
|
|
||||||
@@ -44,18 +37,27 @@ HISTCONTROL=ignoreboth
|
|||||||
# Aliases #
|
# Aliases #
|
||||||
######################
|
######################
|
||||||
|
|
||||||
# enable color support of ls
|
# enable color support of ls and also add handy aliases
|
||||||
if [ -x /usr/bin/dircolors ]; then
|
if [ -x /usr/bin/dircolors ]; then
|
||||||
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
|
||||||
|
alias grep='grep --color=auto'
|
||||||
|
alias fgrep='fgrep --color=auto'
|
||||||
|
alias egrep='egrep --color=auto'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# some more ls aliases
|
||||||
|
alias ls='ls -hG'
|
||||||
|
alias ll='ls -alhFG'
|
||||||
|
alias la='ls -AG'
|
||||||
|
alias l='ls -CFG'
|
||||||
|
|
||||||
# Editor
|
# Editor
|
||||||
export EDITOR='code -w'
|
export EDITOR='code -w'
|
||||||
|
|
||||||
# bash-git-prompt
|
# bash-git-prompt
|
||||||
GIT_PROMPT_ONLY_IN_REPO=1
|
GIT_PROMPT_ONLY_IN_REPO=1
|
||||||
GIT_PROMPT_START="\[\e[1;4;36m\]$HOSTNAME\[\e[1;0m\] \[\e[1;32m\]\w\[\e[m\]"
|
GIT_PROMPT_START="\[\e[1;4;31m\]$HOSTNAME\[\e[1;0m\] \[\e[1;32m\]\w\[\e[m\]"
|
||||||
GIT_PROMPT_END="\[\e[1;m\] \[\e[1;m\]"
|
GIT_PROMPT_END="\[\e[1;m\] λ \[\e[1;m\]"
|
||||||
|
|
||||||
|
|
||||||
# Disable deprecation warning on mac
|
# Disable deprecation warning on mac
|
||||||
@@ -65,22 +67,17 @@ export BASH_SILENCE_DEPRECATION_WARNING=1
|
|||||||
# Sources & exports #
|
# Sources & exports #
|
||||||
######################
|
######################
|
||||||
|
|
||||||
if [ -f ~/.config/.aliases ]; then
|
if [ -f ~/.bash_aliases ]; then
|
||||||
source ~/.config/.aliases
|
source ~/.bash_aliases
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f ~/.config/.aliases.local ]; then
|
if [ -f ~/.bashrc_local ]; then
|
||||||
. ~/.config/.aliases.local
|
source ~/.bashrc_local
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
if [ -f ~/.config/bash/.bash_profile.local ]; then
|
|
||||||
source ~/.config/bash/.bash_profile.local
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# bash-git prompt
|
# bash-git prompt
|
||||||
if [ -f ~/.config/bash/bash-git-prompt/gitprompt.sh ]; then
|
if [ -f ~/.bash-git-prompt/gitprompt.sh ]; then
|
||||||
source ~/.config/bash/bash-git-prompt/gitprompt.sh
|
source ~/.bash-git-prompt/gitprompt.sh
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# enable programmable completion features (you don't need to enable
|
# enable programmable completion features (you don't need to enable
|
||||||
@@ -91,6 +88,6 @@ if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Git completion
|
# Git completion
|
||||||
if [ -f ~/.config/bash/git-completion.bash ]; then
|
if [ -f ~/.git-completion.bash ]; then
|
||||||
source ~/.config/bash/git-completion.bash
|
source ~/.git-completion.bash
|
||||||
fi
|
fi
|
||||||
+55
@@ -0,0 +1,55 @@
|
|||||||
|
|
||||||
|
[color]
|
||||||
|
diff = auto
|
||||||
|
status = auto
|
||||||
|
branch = auto
|
||||||
|
interactive = auto
|
||||||
|
ui = auto
|
||||||
|
[alias]
|
||||||
|
# Shorten some often used commands
|
||||||
|
b = branch
|
||||||
|
c = commit
|
||||||
|
co = checkout
|
||||||
|
com = checkout master
|
||||||
|
ss = status
|
||||||
|
s = status -s
|
||||||
|
ds = diff --staged
|
||||||
|
amend = commit --amend -c HEAD
|
||||||
|
oops = reset --soft HEAD~1
|
||||||
|
kris = pull --rebase
|
||||||
|
ignore = !git update-index --assume-unchanged
|
||||||
|
unignore = !git update-index --no-assume-unchanged
|
||||||
|
ignored = !git ls-files -v | grep "^[[:lower:]]"
|
||||||
|
undo = reset --soft HEAD^
|
||||||
|
squash = rebase --autostash -i
|
||||||
|
megasquash = "!f() { git rebase --autostash -i `git merge-base --fork-point HEAD master`; }; f"
|
||||||
|
unstage = restore --staged
|
||||||
|
|
||||||
|
# various pretty loggers from various places
|
||||||
|
l = log --pretty=oneline --abbrev-commit
|
||||||
|
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
|
||||||
|
lgg = log --graph --pretty=format:'%Creset %s' --abbrev-commit
|
||||||
|
lc = log ORIG_HEAD.. --stat --no-merges
|
||||||
|
# from http://blog.kfish.org/2010/04/git-lola.html
|
||||||
|
lol = log --graph --decorate --pretty=oneline --abbrev-commit
|
||||||
|
lola = log --graph --decorate --pretty=oneline --abbrev-commit --all
|
||||||
|
ll = log --graph --date=short
|
||||||
|
[push]
|
||||||
|
default = simple
|
||||||
|
[mergetool "sourcetree"]
|
||||||
|
cmd = /Applications/Sourcetree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
|
||||||
|
trustExitCode = true
|
||||||
|
[diff]
|
||||||
|
tool = default-difftool
|
||||||
|
[difftool "default-difftool"]
|
||||||
|
cmd = code --wait --diff $LOCAL $REMOTE
|
||||||
|
[difftool "sourcetree"]
|
||||||
|
cmd = opendiff \"$LOCAL\" \"$REMOTE\"
|
||||||
|
path =
|
||||||
|
[filter "media"]
|
||||||
|
clean = git media clean %f
|
||||||
|
smudge = git media smudge %f
|
||||||
|
required = true
|
||||||
|
# local user config, usernames, etc
|
||||||
|
[include]
|
||||||
|
path=~/.gitconfig-local
|
||||||
+2
-13
@@ -1,14 +1,3 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
home/.vim/bundle
|
.vim/bundle
|
||||||
home/.vim/undodir
|
.vim/undodir
|
||||||
home/.config/bash/bash-git-prompt
|
|
||||||
Brewfile.lock.json
|
|
||||||
Caskfile.lock.json
|
|
||||||
|
|
||||||
home/.config/alacritty/themes
|
|
||||||
|
|
||||||
__pycache__
|
|
||||||
*.pyc
|
|
||||||
|
|
||||||
*.local
|
|
||||||
*.log
|
|
||||||
|
|||||||
-28
@@ -1,28 +0,0 @@
|
|||||||
[submodule "dotbot"]
|
|
||||||
path = dotbot
|
|
||||||
url = https://github.com/anishathalye/dotbot
|
|
||||||
ignore = dirty
|
|
||||||
[submodule "home/config/tmux/plugins/tpm"]
|
|
||||||
path = home/config/tmux/plugins/tpm
|
|
||||||
url = https://github.com/tmux-plugins/tpm
|
|
||||||
[submodule "home/config/bash/bash-git-prompt"]
|
|
||||||
path = home/config/bash/bash-git-prompt
|
|
||||||
url = https://github.com/magicmonty/bash-git-prompt.git
|
|
||||||
[submodule "home/config/zsh/plugins/zsh-git-prompt"]
|
|
||||||
path = home/config/zsh/plugins/zsh-git-prompt
|
|
||||||
url = https://github.com/zsh-git-prompt/zsh-git-prompt.git
|
|
||||||
[submodule "home/config/zsh/plugins/calc.plugin.zsh"]
|
|
||||||
path = home/config/zsh/plugins/calc.plugin.zsh
|
|
||||||
url = https://github.com/arzzen/calc.plugin.zsh.git
|
|
||||||
[submodule "home/config/zsh/plugins/zsh-vim-mode"]
|
|
||||||
path = home/config/zsh/plugins/zsh-vim-mode
|
|
||||||
url = https://github.com/softmoth/zsh-vim-mode.git
|
|
||||||
[submodule "home/config/zsh/plugins/zsh-better-npm-completion"]
|
|
||||||
path = home/config/zsh/plugins/zsh-better-npm-completion
|
|
||||||
url = https://github.com/lukechilds/zsh-better-npm-completion.git
|
|
||||||
[submodule "home/config/zsh/plugins/zsh-ssh"]
|
|
||||||
path = home/config/zsh/plugins/zsh-ssh
|
|
||||||
url = https://github.com/sunlei/zsh-ssh
|
|
||||||
[submodule "home/vim/bundle/Vundle.vim"]
|
|
||||||
path = home/vim/bundle/Vundle.vim
|
|
||||||
url = https://github.com/VundleVim/Vundle.vim.git
|
|
||||||
@@ -2,38 +2,30 @@
|
|||||||
# General Settings
|
# General Settings
|
||||||
# ------------------
|
# ------------------
|
||||||
|
|
||||||
set-option -g default-shell "/bin/zsh"
|
|
||||||
|
|
||||||
# See: https://github.com/gpakosz/.tmux/blob/master/.tmux.conf
|
# See: https://github.com/gpakosz/.tmux/blob/master/.tmux.conf
|
||||||
|
|
||||||
# Set Custom Prefix
|
# Set Custom Prefix
|
||||||
set -g prefix C-a
|
set -g prefix C-a
|
||||||
unbind C-b
|
unbind C-b
|
||||||
|
|
||||||
|
# Start in newer bash
|
||||||
|
set-option -g default-command "/usr/local/bin/bash --login"
|
||||||
|
|
||||||
|
# Disable delay
|
||||||
set -sg escape-time 1
|
set -sg escape-time 1
|
||||||
|
|
||||||
# Increase scrollback buffer size from 2000 to 50000 lines
|
|
||||||
set -g history-limit 50000
|
|
||||||
|
|
||||||
set -g base-index 1 # start windows numbering at 1
|
set -g base-index 1 # start windows numbering at 1
|
||||||
setw -g pane-base-index 1 # make pane numbering consistent with windows
|
setw -g pane-base-index 1 # make pane numbering consistent with windows
|
||||||
|
|
||||||
set -q -g status-utf8 on # expect UTF-8 (tmux < 2.2)
|
set -q -g status-utf8 on # expect UTF-8 (tmux < 2.2)
|
||||||
setw -q -g utf8 on
|
setw -q -g utf8 on
|
||||||
|
|
||||||
# Focus events enabled for terminals that support them
|
|
||||||
set -g focus-events on
|
|
||||||
|
|
||||||
# Super useful when using "grouped sessions" and multi-monitor setup
|
|
||||||
setw -g aggressive-resize on
|
|
||||||
|
|
||||||
# -------------------
|
# -------------------
|
||||||
# Visual Settings
|
# Visual Settings
|
||||||
# -------------------
|
# -------------------
|
||||||
|
|
||||||
set -g default-terminal "screen-256color"
|
set -g default-terminal "screen-256color"
|
||||||
source-file ~/.config/tmux/themes/tomorrow-night.tmux
|
source-file ~/.tmux/themes/tomorrow-night.tmux
|
||||||
|
|
||||||
# Theme Variables
|
# Theme Variables
|
||||||
|
|
||||||
@@ -49,8 +41,7 @@ TMUX_USERNAME_FG="#000000"
|
|||||||
TMUX_STATUS_AQUA="#8abeb7"
|
TMUX_STATUS_AQUA="#8abeb7"
|
||||||
|
|
||||||
# Styles
|
# Styles
|
||||||
# STYLE_DEFAULT="fg=white,bg=$TMUX_STATUS_BG"
|
STYLE_DEFAULT="fg=white,bg=$TMUX_STATUS_BG"
|
||||||
STYLE_DEFAULT="fg=white"
|
|
||||||
STYLE_ACTIVE_ITEM="#[fg=$TMUX_STATUS_TEXT_COLOR,bg=$TMUX_ACTIVE_COLOR,noreverse,bold]"
|
STYLE_ACTIVE_ITEM="#[fg=$TMUX_STATUS_TEXT_COLOR,bg=$TMUX_ACTIVE_COLOR,noreverse,bold]"
|
||||||
STYLE_RED="#[fg=$TMUX_NAMESPACE_FG,bg=$TMUX_STATUS_RED,bold]"
|
STYLE_RED="#[fg=$TMUX_NAMESPACE_FG,bg=$TMUX_STATUS_RED,bold]"
|
||||||
STYLE_AQUA="#[fg=$TMUX_USERNAME_FG,bg=$TMUX_STATUS_AQUA,bold]"
|
STYLE_AQUA="#[fg=$TMUX_USERNAME_FG,bg=$TMUX_STATUS_AQUA,bold]"
|
||||||
@@ -58,9 +49,6 @@ STYLE_AQUA="#[fg=$TMUX_USERNAME_FG,bg=$TMUX_STATUS_AQUA,bold]"
|
|||||||
# Status bar
|
# Status bar
|
||||||
set-option -g status-position bottom
|
set-option -g status-position bottom
|
||||||
|
|
||||||
# Refresh 'status-left' and 'status-right' more often, from every 15s to 5s
|
|
||||||
set -g status-interval 5
|
|
||||||
|
|
||||||
# Status mid style
|
# Status mid style
|
||||||
set -g status-style $STYLE_DEFAULT
|
set -g status-style $STYLE_DEFAULT
|
||||||
|
|
||||||
@@ -88,6 +76,7 @@ set -g @prefix_highlight_bg $TMUX_ACTIVE_COLOR
|
|||||||
set -g mouse on
|
set -g mouse on
|
||||||
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"
|
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'"
|
||||||
|
|
||||||
|
|
||||||
setw -g mode-keys vi
|
setw -g mode-keys vi
|
||||||
bind C-a send-prefix
|
bind C-a send-prefix
|
||||||
|
|
||||||
@@ -112,7 +101,7 @@ unbind C-Left
|
|||||||
unbind C-Right
|
unbind C-Right
|
||||||
|
|
||||||
# Source this file
|
# Source this file
|
||||||
bind r source-file $HOME/.tmux.conf \; display "Config file reloaded!"
|
bind r source-file ~/.tmux.conf \; display "Config file reloaded!"
|
||||||
|
|
||||||
# split current window horizontally
|
# split current window horizontally
|
||||||
bind v split-window -h
|
bind v split-window -h
|
||||||
@@ -156,12 +145,10 @@ bind C-c run-shell "bash -c 'tmux show-buffer | pbcopy'" \; display 'Copied to c
|
|||||||
|
|
||||||
# Enabled plugins
|
# Enabled plugins
|
||||||
# install prefix I
|
# install prefix I
|
||||||
# update prefix U
|
# update prefix u
|
||||||
# uninstall all prefix alt u
|
# uninstall all prefix alt u
|
||||||
set-environment -g TMUX_PLUGIN_MANAGER_PATH '~/.config/tmux/plugins'
|
|
||||||
set -g @plugin 'tmux-plugins/tpm'
|
set -g @plugin 'tmux-plugins/tpm'
|
||||||
set -g @plugin 'tmux-plugins/tmux-cpu'
|
set -g @plugin 'tmux-plugins/tmux-cpu'
|
||||||
set -g @plugin 'tmux-plugins/tmux-prefix-highlight'
|
set -g @plugin 'tmux-plugins/tmux-prefix-highlight'
|
||||||
set -g @plugin 'sainnhe/tmux-fzf'
|
|
||||||
|
|
||||||
run -b '~/.config/tmux/plugins/tpm/tpm'
|
run -b '~/.tmux/plugins/tpm/tpm'
|
||||||
@@ -20,8 +20,8 @@ setw -g window-status-current-style bg="#282a2e"
|
|||||||
setw -g window-status-current-style fg="#81a2be"
|
setw -g window-status-current-style fg="#81a2be"
|
||||||
|
|
||||||
## highlight active window
|
## highlight active window
|
||||||
# setw -g window-style 'bg=#282a2e'
|
setw -g window-style 'bg=#282a2e'
|
||||||
# setw -g window-active-style 'bg=#1d1f21'
|
setw -g window-active-style 'bg=#1d1f21'
|
||||||
setw -g pane-active-border-style ''
|
setw -g pane-active-border-style ''
|
||||||
|
|
||||||
## highlight activity in status bar
|
## highlight activity in status bar
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
# Dotfiles
|
|
||||||
|
|
||||||
Personal dotfiles for macOS and Linux, managed with [dotbot](https://github.com/anishathalye/dotbot).
|
|
||||||
|
|
||||||
## Structure
|
|
||||||
|
|
||||||
```
|
|
||||||
dotfiles/
|
|
||||||
├── home/ # Config files symlinked into $HOME
|
|
||||||
│ ├── config/ # ~/.config/* (alacritty, tmux, zsh, bash, etc.)
|
|
||||||
│ ├── claude/ # Claude Code config
|
|
||||||
│ ├── bashrc
|
|
||||||
│ ├── gitconfig
|
|
||||||
│ ├── tmux.conf
|
|
||||||
│ ├── vim/
|
|
||||||
│ ├── vimrc
|
|
||||||
│ └── zshenv
|
|
||||||
├── macos/ # macOS-specific: Brewfile, Caskfiles, iTerm2 config
|
|
||||||
├── shell/ # Shell scripts (setup, platform installers, clone, ssh)
|
|
||||||
├── functions/ # Utility scripts
|
|
||||||
├── fonts/ # Fonts
|
|
||||||
├── dotbot/ # Dotbot submodule
|
|
||||||
├── dotbot.default.yaml # Main dotbot config (always applied)
|
|
||||||
├── dotbot.personal.yaml # Personal brew casks
|
|
||||||
├── dotbot.setup-once.yaml # One-time setup (macOS defaults, repo clones)
|
|
||||||
└── install # Main install script
|
|
||||||
```
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
```sh
|
|
||||||
# Default setup (symlinks + shell plugins)
|
|
||||||
./install
|
|
||||||
|
|
||||||
# First-time macOS setup (run once: Xcode tools, macOS defaults, clone repos)
|
|
||||||
./install setup-once
|
|
||||||
|
|
||||||
# Personal apps (brew cask installs from Caskfile.personal)
|
|
||||||
./install personal
|
|
||||||
```
|
|
||||||
|
|
||||||
## How It Works
|
|
||||||
|
|
||||||
- `./install` runs dotbot with `dotbot.default.yaml` plus any additional configs passed as arguments
|
|
||||||
- Dotbot creates symlinks from `home/` into `$HOME`, creates directories, and runs shell commands. Folders in `home/config` are symlinked to `~/.config/<folder>`
|
|
||||||
- Platform detection: macOS runs `shell/install_apps_macos.sh`, Linux runs `shell/install_apps_linux.sh`
|
|
||||||
- Submodules: dotbot, tpm, Vundle.vim, and several zsh/bash plugins — run `git submodule update --init --recursive` if anything is missing
|
|
||||||
|
|
||||||
## Important: `.local` files
|
|
||||||
|
|
||||||
Files matching `*.local` (e.g. `.zshrc.local`, `.gitconfig.local`, `.bash_profile.local`) are **machine-specific overrides** that exist only on the local machine. They are gitignored and not part of this repo. Do not modify, reference, or suggest changes to `.local` files.
|
|
||||||
|
|
||||||
## Adding Config for a New Tool
|
|
||||||
|
|
||||||
1. Put the config file under `home/config/<tool>/` or directly in `home/`
|
|
||||||
2. Add a `link:` entry in `dotbot.default.yaml` pointing from the repo path to the target path in `$HOME`
|
|
||||||
3. If it needs a directory created first, add it under `create:` in the same file
|
|
||||||
4. Run `./install` to apply
|
|
||||||
|
|
||||||
## Key Configs
|
|
||||||
|
|
||||||
| File | Linked to |
|
|
||||||
|------|-----------|
|
|
||||||
| `home/zshenv` | `~/.zshenv` |
|
|
||||||
| `home/gitconfig` | `~/.gitconfig` |
|
|
||||||
| `home/config/alacritty/` | `~/.config/alacritty/` |
|
|
||||||
| `home/config/tmux/` | `~/.config/tmux/` |
|
|
||||||
| `home/config/vim/` | `~/.vim/` |
|
|
||||||
| `home/config/zsh/` | `~/.config/zsh/` |
|
|
||||||
| `home/config/bash/` | `~/.config/bash/` |
|
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
linux: link bash_git_prompt tmux vim
|
||||||
|
macos: link bash_git_prompt brew cask tmux vim
|
||||||
|
|
||||||
|
link:
|
||||||
|
-ln -s ~/Git/dotfiles/.bash_aliases ~/.bash_aliases
|
||||||
|
-ln -s ~/Git/dotfiles/.bashrc ~/.bashrc
|
||||||
|
-ln -s ~/Git/dotfiles/.git-completion.bash ~/.git-completion.bash
|
||||||
|
-ln -s ~/Git/dotfiles/.gitconfig ~/.gitconfig
|
||||||
|
-ln -s ~/Git/dotfiles/.tmux.conf ~/.tmux.conf
|
||||||
|
|
||||||
|
brew:
|
||||||
|
sh ./macos/brewfile.sh
|
||||||
|
|
||||||
|
cask:
|
||||||
|
sh ./macos/caskfile.sh
|
||||||
|
|
||||||
|
tmux:
|
||||||
|
-git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
|
||||||
|
-ln -s ~/Git/dotfiles/.tmux/themes ~/.tmux/themes
|
||||||
|
|
||||||
|
bash_git_prompt:
|
||||||
|
-git clone https://github.com/magicmonty/bash-git-prompt.git ~/.bash-git-prompt --depth=1
|
||||||
|
-ln -s ~/Git/dotfiles/.git-prompt-colors.sh ~/.git-prompt-colors.sh
|
||||||
|
|
||||||
|
vim:
|
||||||
|
-ln -s ~/Git/dotfiles/.vim ~/.vim
|
||||||
|
-ln -s ~/Git/dotfiles/.vimrc ~/.vimrc
|
||||||
|
-git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
|
||||||
@@ -1,29 +1,4 @@
|
|||||||
dotfiles
|
dotfiles
|
||||||
========
|
========
|
||||||
|
|
||||||
Personal dotfiles for macOS and Linux, managed with [dotbot](https://github.com/anishathalye/dotbot).
|
Some of my dotfiles
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
```sh
|
|
||||||
git clone --recursive git@github.com:GeorgeSG/dotfiles.git ~/Git/dotfiles
|
|
||||||
cd ~/Git/dotfiles
|
|
||||||
./install
|
|
||||||
```
|
|
||||||
|
|
||||||
### macOS - first time setup
|
|
||||||
|
|
||||||
```sh
|
|
||||||
# Installs Xcode tools, sets macOS defaults, clones personal repos
|
|
||||||
./install setup-once
|
|
||||||
|
|
||||||
# Installs personal apps (Bitwarden, Discord, Spotify, etc.)
|
|
||||||
./install personal
|
|
||||||
```
|
|
||||||
|
|
||||||
### Linux
|
|
||||||
|
|
||||||
```sh
|
|
||||||
# Default install handles everything - installs apt packages, sets zsh as default shell
|
|
||||||
./install
|
|
||||||
```
|
|
||||||
-1
Submodule dotbot deleted from 9cd5d073f2
@@ -1,57 +0,0 @@
|
|||||||
- defaults:
|
|
||||||
link:
|
|
||||||
relink: true
|
|
||||||
|
|
||||||
- clean: ['~']
|
|
||||||
|
|
||||||
- create:
|
|
||||||
- ~/.config
|
|
||||||
- ~/.config/bash
|
|
||||||
- ~/.config/herdr
|
|
||||||
- ~/.config/tmux
|
|
||||||
- ~/.claude
|
|
||||||
|
|
||||||
- link:
|
|
||||||
# git
|
|
||||||
~/.gitconfig: home/gitconfig
|
|
||||||
~/.config/.gitignore_global: home/config/gitignore_global
|
|
||||||
|
|
||||||
# bash
|
|
||||||
~/.bashrc: home/bashrc
|
|
||||||
~/.config/bash/.bash_profile: home/config/bash/bash_profile
|
|
||||||
~/.git-completion.bash: home/config/bash/git-completion.bash
|
|
||||||
~/.git-prompt-colors.sh: home/config/bash/git-prompt-colors.sh
|
|
||||||
|
|
||||||
# apps
|
|
||||||
~/.config/alacritty: home/config/alacritty
|
|
||||||
~/.config/btop: home/config/btop
|
|
||||||
~/.config/herdr/config.toml: home/config/herdr/config.toml
|
|
||||||
|
|
||||||
# tmux
|
|
||||||
~/.tmux.conf: home/tmux.conf
|
|
||||||
~/.config/tmux/plugins: home/config/tmux/plugins
|
|
||||||
~/.config/tmux/themes: home/config/tmux/themes
|
|
||||||
|
|
||||||
~/.config/.aliases: home/config/aliases
|
|
||||||
|
|
||||||
# vim
|
|
||||||
~/.vim : home/vim
|
|
||||||
~/.vimrc: home/vimrc
|
|
||||||
|
|
||||||
# zsh
|
|
||||||
~/.zshenv: home/zshenv
|
|
||||||
~/.config/zsh: home/config/zsh
|
|
||||||
|
|
||||||
# claude code
|
|
||||||
~/.claude/skills: home/claude/skills
|
|
||||||
|
|
||||||
# mac os
|
|
||||||
~/.hushlogin:
|
|
||||||
if: '[ `uname` = Darwin ]'
|
|
||||||
path: macos/hushlogin
|
|
||||||
|
|
||||||
- shell:
|
|
||||||
- command: ./shell/setup.sh
|
|
||||||
stdin: true
|
|
||||||
stdout: true
|
|
||||||
stderr: true
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
## TODO:
|
|
||||||
## cask_personal using some variable?
|
|
||||||
|
|
||||||
- shell:
|
|
||||||
- stdin: true
|
|
||||||
stdout: true
|
|
||||||
command: >
|
|
||||||
if [ "$(uname)" = "Darwin" ]; then
|
|
||||||
brew bundle --file ./macos/Caskfile.personal
|
|
||||||
fi
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
- shell:
|
|
||||||
-
|
|
||||||
stdin: true
|
|
||||||
stdout: true
|
|
||||||
description: Setting Mac OS defaults
|
|
||||||
command: >
|
|
||||||
if [ "$(uname)" = "Darwin" ]; then
|
|
||||||
xcode-select -p &>/dev/null || xcode-select --install
|
|
||||||
./shell/macos_setup.sh
|
|
||||||
fi
|
|
||||||
-
|
|
||||||
command: ./shell/clone.sh
|
|
||||||
description: Cloning Git repos
|
|
||||||
stdout: true
|
|
||||||
quiet: false
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
# Usage: extract <file>
|
|
||||||
# Description: extracts archived files / mounts disk images
|
|
||||||
# Note: .dmg/hdiutil is macOS-specific.
|
|
||||||
#
|
|
||||||
# credit: http://nparikh.org/notes/zshrc.txt
|
|
||||||
extract () {
|
|
||||||
if [ -f $1 ]; then
|
|
||||||
case $1 in
|
|
||||||
*.tar.bz2) tar -jxvf $1 ;;
|
|
||||||
*.tar.gz) tar -zxvf $1 ;;
|
|
||||||
*.bz2) bunzip2 $1 ;;
|
|
||||||
*.dmg) hdiutil mount $1 ;;
|
|
||||||
*.gz) gunzip $1 ;;
|
|
||||||
*.tar) tar -xvf $1 ;;
|
|
||||||
*.tbz2) tar -jxvf $1 ;;
|
|
||||||
*.tgz) tar -zxvf $1 ;;
|
|
||||||
*.zip) unzip $1 ;;
|
|
||||||
*.ZIP) unzip $1 ;;
|
|
||||||
*.pax) cat $1 | pax -r ;;
|
|
||||||
*.pax.Z) uncompress $1 --stdout | pax -r ;;
|
|
||||||
*.rar) unrar x $1 ;;
|
|
||||||
*.Z) uncompress $1 ;;
|
|
||||||
*) echo "'$1' cannot be extracted/mounted via extract()" ;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
echo "'$1' is not a valid file"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# set_alias_with_backup - A Bash function to alias a command while preserving the original.
|
|
||||||
#
|
|
||||||
# Usage:
|
|
||||||
# set_alias_with_backup <alias_name> <new_command>
|
|
||||||
#
|
|
||||||
# Parameters:
|
|
||||||
# alias_name: The alias name to override (e.g., "cat").
|
|
||||||
# new_command: The command to alias to (e.g., "bat").
|
|
||||||
#
|
|
||||||
# Behavior:
|
|
||||||
# - Checks if the new command exists.
|
|
||||||
# - If it exists and the backup alias (alias_name with an underscore appended) isn't set,
|
|
||||||
# it creates a backup alias pointing to the original command.
|
|
||||||
# - Sets the alias (alias_name) to use the new command.
|
|
||||||
#
|
|
||||||
# Example:
|
|
||||||
# To alias "bat" as "cat" and preserve the original "cat" as "cat_", run:
|
|
||||||
# set_alias_with_backup cat bat
|
|
||||||
set_alias_with_backup() {
|
|
||||||
local alias_name="$1"
|
|
||||||
local new_cmd="$2"
|
|
||||||
|
|
||||||
# Allow for extra parameters to be passed to the new command.
|
|
||||||
shift 2
|
|
||||||
local extra_params="$*"
|
|
||||||
|
|
||||||
# Check that both arguments are provided.
|
|
||||||
if [ -z "$alias_name" ] || [ -z "$new_cmd" ]; then
|
|
||||||
echo "Usage: set_alias_with_backup <alias_name> <new_command> [extra_params]"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check that the new command exists.
|
|
||||||
if type "$new_cmd" >/dev/null 2>&1; then
|
|
||||||
# Define a backup alias by appending an underscore
|
|
||||||
# (e.g., "cat_" for "cat")
|
|
||||||
local backup_alias="${alias_name}_"
|
|
||||||
|
|
||||||
# If the backup alias isn't already set, create it pointing
|
|
||||||
# to the original command.
|
|
||||||
if ! type "$backup_alias" >/dev/null 2>&1; then
|
|
||||||
alias "$backup_alias"="$(which "$alias_name")"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Create the alias: e.g., alias "cat" to "bat" and pass any extra params.
|
|
||||||
alias "$alias_name"="$new_cmd $extra_params"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
[ -n "$PS1" ] && source ~/.config/bash/.bash_profile;
|
|
||||||
|
|
||||||
[ -f ~/.fzf.bash ] && source ~/.fzf.bash
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
[general]
|
|
||||||
import = [
|
|
||||||
"~/.config/alacritty/tomorrow-night-gardev.toml"
|
|
||||||
]
|
|
||||||
|
|
||||||
[window]
|
|
||||||
padding = { x = 16, y = 8 }
|
|
||||||
dynamic_title = true
|
|
||||||
option_as_alt = "OnlyLeft"
|
|
||||||
|
|
||||||
[scrolling]
|
|
||||||
history = 10000
|
|
||||||
multiplier = 3
|
|
||||||
|
|
||||||
[font]
|
|
||||||
normal = { family = "CaskaydiaCove Nerd Font Mono", style = "Regular" }
|
|
||||||
size = 14
|
|
||||||
offset = { y = 1 }
|
|
||||||
|
|
||||||
[cursor]
|
|
||||||
style = { shape = "Beam", blinking = "Always" }
|
|
||||||
|
|
||||||
[[hints.enabled]]
|
|
||||||
regex = "https?://[^\\s]+"
|
|
||||||
hyperlinks = true
|
|
||||||
command = { program = "open" }
|
|
||||||
mouse = { enabled = true }
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
# Colors (Tomorrow Night)
|
|
||||||
[colors]
|
|
||||||
draw_bold_text_with_bright_colors = true
|
|
||||||
|
|
||||||
# Default colors
|
|
||||||
[colors.primary]
|
|
||||||
background = '#27292b'
|
|
||||||
foreground = '#d0d2d0'
|
|
||||||
|
|
||||||
[colors.cursor]
|
|
||||||
text = '#27292b'
|
|
||||||
cursor = '#d0d2d0'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
[colors.normal]
|
|
||||||
black = '#777777'
|
|
||||||
red = '#ca807b'
|
|
||||||
green = '#c2c683'
|
|
||||||
yellow = '#edd090'
|
|
||||||
blue = '#98b0c7'
|
|
||||||
magenta = '#bba7c4'
|
|
||||||
cyan = '#a3c7c3'
|
|
||||||
white = '#fefefe'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
[colors.bright]
|
|
||||||
black = '#999999'
|
|
||||||
red = '#ca807b'
|
|
||||||
green = '#c2c683'
|
|
||||||
yellow = '#edd090'
|
|
||||||
blue = '#98b0c7'
|
|
||||||
magenta = '#bba7c4'
|
|
||||||
cyan = '#a3c7c3'
|
|
||||||
white = '#fefefe'
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
# Colors (Tomorrow Night)
|
|
||||||
|
|
||||||
# Default colors
|
|
||||||
[colors.primary]
|
|
||||||
background = '#1d1f21'
|
|
||||||
foreground = '#c5c8c6'
|
|
||||||
|
|
||||||
[colors.cursor]
|
|
||||||
text = '#1d1f21'
|
|
||||||
cursor = '#ffffff'
|
|
||||||
|
|
||||||
# Normal colors
|
|
||||||
[colors.normal]
|
|
||||||
black = '#1d1f21'
|
|
||||||
red = '#cc6666'
|
|
||||||
green = '#b5bd68'
|
|
||||||
yellow = '#e6c547'
|
|
||||||
blue = '#81a2be'
|
|
||||||
magenta = '#b294bb'
|
|
||||||
cyan = '#70c0ba'
|
|
||||||
white = '#373b41'
|
|
||||||
|
|
||||||
# Bright colors
|
|
||||||
[colors.bright]
|
|
||||||
black = '#666666'
|
|
||||||
red = '#ff3334'
|
|
||||||
green = '#9ec400'
|
|
||||||
yellow = '#f0c674'
|
|
||||||
blue = '#81a2be'
|
|
||||||
magenta = '#b77ee0'
|
|
||||||
cyan = '#54ced6'
|
|
||||||
white = '#282a2e'
|
|
||||||
@@ -1,142 +0,0 @@
|
|||||||
##### Platform independent #####
|
|
||||||
|
|
||||||
# Files
|
|
||||||
alias ...="cd ../../"
|
|
||||||
alias ....="cd ../../../"
|
|
||||||
|
|
||||||
alias ll='ls -alhFG'
|
|
||||||
alias la='ls -AG'
|
|
||||||
alias l='ls -CFG'
|
|
||||||
|
|
||||||
alias grep='grep --color=auto'
|
|
||||||
alias fgrep='fgrep --color=auto'
|
|
||||||
alias egrep='egrep --color=auto'
|
|
||||||
|
|
||||||
# CD-ing to some commonly used folders
|
|
||||||
alias og="cd ~/Git"
|
|
||||||
alias dotfiles="cd ~/Git/dotfiles"
|
|
||||||
|
|
||||||
# Editing files
|
|
||||||
alias raliases="source ~/.config/.aliases && source ~/.config/.aliases.local"
|
|
||||||
alias aliases="code ~/.config/.aliases"
|
|
||||||
alias laliases="code ~/.config/.aliases.local"
|
|
||||||
alias zshrc="code $ZDOTDIR/.zshrc"
|
|
||||||
alias lzshrc="code $ZDOTDIR/.zshrc.local"
|
|
||||||
alias vimrc="vim ~/.vimrc"
|
|
||||||
|
|
||||||
# NPM
|
|
||||||
alias npr="npm run"
|
|
||||||
|
|
||||||
# IP addresses & networking
|
|
||||||
alias ip="dig +short myip.opendns.com @resolver1.opendns.com"
|
|
||||||
alias localip="ipconfig getifaddr en0"
|
|
||||||
|
|
||||||
# Misc
|
|
||||||
alias c="clear"
|
|
||||||
alias be="bundle exec"
|
|
||||||
alias serve="python -m http.server 9000"
|
|
||||||
alias yda="youtube-dl -x --audio-format mp3"
|
|
||||||
|
|
||||||
# tmux
|
|
||||||
if type tmux >/dev/null 2>&1; then
|
|
||||||
alias tm="tmux -2 attach-session -t "default" || tmux -2 new-session -s \"default\""
|
|
||||||
alias tmv="tmux -2 attach-session -t "vscode" || tmux -2 new-session -s \"vscode\""
|
|
||||||
alias tmks="tmux kill-session -t"
|
|
||||||
alias tmas="tmux attach-session -t"
|
|
||||||
alias tmls="tmux list-sessions"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Docker
|
|
||||||
if type docker >/dev/null 2>&1; then
|
|
||||||
alias dc="docker compose"
|
|
||||||
alias de="docker exec"
|
|
||||||
alias dr="docker run"
|
|
||||||
alias db="docker build"
|
|
||||||
alias ds="docker stop"
|
|
||||||
alias drm="docker rm"
|
|
||||||
alias drmi="docker rmi"
|
|
||||||
alias dps="docker ps"
|
|
||||||
alias dl="docker logs"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Git Aliases
|
|
||||||
if type git >/dev/null 2>&1; then
|
|
||||||
alias g="git"
|
|
||||||
alias ga="git add"
|
|
||||||
alias gr="git rm"
|
|
||||||
alias gc="git commit"
|
|
||||||
alias gs="git status -s"
|
|
||||||
alias gss="git status"
|
|
||||||
alias gd="git diff"
|
|
||||||
alias gds="git diff --staged"
|
|
||||||
alias gco="git checkout"
|
|
||||||
alias gcom="git checkout master"
|
|
||||||
alias gpom="git pull origin master"
|
|
||||||
alias gbd="git branch -D"
|
|
||||||
alias gm="git mergetool"
|
|
||||||
alias gmc="git merge --continue"
|
|
||||||
alias grc="git rebase --continue"
|
|
||||||
alias gsf="git sf"
|
|
||||||
alias gaf="git af"
|
|
||||||
alias gmf="git mf"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Github CLI Aliases
|
|
||||||
if type gh >/dev/null 2>&1; then
|
|
||||||
alias gp="gh pr"
|
|
||||||
alias gps="gh pr status"
|
|
||||||
|
|
||||||
# my prs
|
|
||||||
alias prso="gh pr list --author @me --state open"
|
|
||||||
|
|
||||||
function prsob() {
|
|
||||||
gh pr list --author $1 --state open
|
|
||||||
}
|
|
||||||
|
|
||||||
function prscb() {
|
|
||||||
gh pr list --author $1 --state closed
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
|
|
||||||
if type systemctl >/dev/null 2>&1; then
|
|
||||||
alias ssc="sudo systemctl"
|
|
||||||
alias sc="systemctl"
|
|
||||||
alias scs="systemctl status"
|
|
||||||
alias scst="systemctl start"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# eza aliases, if available
|
|
||||||
if type eza >/dev/null 2>&1; then
|
|
||||||
eza_params=(
|
|
||||||
'--git' '--icons' '--group' '--group-directories-first'
|
|
||||||
'--time-style=relative'
|
|
||||||
)
|
|
||||||
alias ls='eza $eza_params -1'
|
|
||||||
alias l='eza --git-ignore $eza_params'
|
|
||||||
alias ll='eza --all --header --long $eza_params'
|
|
||||||
alias llm='eza --all --header --long --sort=modified $eza_params'
|
|
||||||
alias la='eza -lbhHigUmuSa'
|
|
||||||
alias lx='eza -lbhHigUmuSa@'
|
|
||||||
alias lt='eza --tree $eza_params'
|
|
||||||
alias tree='eza --tree $eza_params'
|
|
||||||
|
|
||||||
alias lA='ll --sort=acc'
|
|
||||||
alias lC='ll --sort=cr'
|
|
||||||
alias lM='ll --sort=mod'
|
|
||||||
alias lS='ll --sort=size'
|
|
||||||
alias lX='ll --sort=ext'
|
|
||||||
fi
|
|
||||||
|
|
||||||
set_alias_with_backup cat bat
|
|
||||||
set_alias_with_backup dig doggo
|
|
||||||
set_alias_with_backup df duf
|
|
||||||
set_alias_with_backup ping gping
|
|
||||||
set_alias_with_backup du dust --no-percent-bars
|
|
||||||
|
|
||||||
##### Mac OS Specific #####
|
|
||||||
if [ "$(uname)" = "Darwin" ]; then
|
|
||||||
alias fl="open -a ForkLift"
|
|
||||||
alias flushdns="sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder"
|
|
||||||
alias copyssh="pbcopy < $HOME/.ssh/id_ed25519.pub"
|
|
||||||
alias scr="open -b com.apple.ScreenSaver.Engine"
|
|
||||||
fi
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
.bash_profile.local
|
|
||||||
Submodule home/config/bash/bash-git-prompt deleted from 622e337d11
@@ -1,218 +0,0 @@
|
|||||||
#? Config file for btop v. 1.4.0
|
|
||||||
|
|
||||||
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
|
|
||||||
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
|
|
||||||
color_theme = "/usr/share/btop/themes/matcha-dark-sea.theme"
|
|
||||||
|
|
||||||
#* If the theme set background should be shown, set to False if you want terminal background transparency.
|
|
||||||
theme_background = False
|
|
||||||
|
|
||||||
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
|
|
||||||
truecolor = True
|
|
||||||
|
|
||||||
#* Set to true to force tty mode regardless if a real tty has been detected or not.
|
|
||||||
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
|
|
||||||
force_tty = False
|
|
||||||
|
|
||||||
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
|
|
||||||
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
|
|
||||||
#* Use whitespace " " as separator between different presets.
|
|
||||||
#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
|
|
||||||
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
|
|
||||||
|
|
||||||
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
|
|
||||||
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
|
|
||||||
vim_keys = False
|
|
||||||
|
|
||||||
#* Rounded corners on boxes, is ignored if TTY mode is ON.
|
|
||||||
rounded_corners = True
|
|
||||||
|
|
||||||
#* Default symbols to use for graph creation, "braille", "block" or "tty".
|
|
||||||
#* "braille" offers the highest resolution but might not be included in all fonts.
|
|
||||||
#* "block" has half the resolution of braille but uses more common characters.
|
|
||||||
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
|
|
||||||
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
|
|
||||||
graph_symbol = "braille"
|
|
||||||
|
|
||||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
|
||||||
graph_symbol_cpu = "default"
|
|
||||||
|
|
||||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
|
||||||
graph_symbol_mem = "default"
|
|
||||||
|
|
||||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
|
||||||
graph_symbol_net = "default"
|
|
||||||
|
|
||||||
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
|
||||||
graph_symbol_proc = "default"
|
|
||||||
|
|
||||||
#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace.
|
|
||||||
shown_boxes = "cpu mem net proc"
|
|
||||||
|
|
||||||
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
|
|
||||||
update_ms = 2000
|
|
||||||
|
|
||||||
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
|
|
||||||
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
|
|
||||||
proc_sorting = "cpu lazy"
|
|
||||||
|
|
||||||
#* Reverse sorting order, True or False.
|
|
||||||
proc_reversed = False
|
|
||||||
|
|
||||||
#* Show processes as a tree.
|
|
||||||
proc_tree = False
|
|
||||||
|
|
||||||
#* Use the cpu graph colors in the process list.
|
|
||||||
proc_colors = True
|
|
||||||
|
|
||||||
#* Use a darkening gradient in the process list.
|
|
||||||
proc_gradient = True
|
|
||||||
|
|
||||||
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
|
|
||||||
proc_per_core = True
|
|
||||||
|
|
||||||
#* Show process memory as bytes instead of percent.
|
|
||||||
proc_mem_bytes = True
|
|
||||||
|
|
||||||
#* Show cpu graph for each process.
|
|
||||||
proc_cpu_graphs = True
|
|
||||||
|
|
||||||
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
|
|
||||||
proc_info_smaps = False
|
|
||||||
|
|
||||||
#* Show proc box on left side of screen instead of right.
|
|
||||||
proc_left = False
|
|
||||||
|
|
||||||
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
|
|
||||||
proc_filter_kernel = False
|
|
||||||
|
|
||||||
#* In tree-view, always accumulate child process resources in the parent process.
|
|
||||||
proc_aggregate = False
|
|
||||||
|
|
||||||
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
|
|
||||||
#* Select from a list of detected attributes from the options menu.
|
|
||||||
cpu_graph_upper = "Auto"
|
|
||||||
|
|
||||||
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
|
|
||||||
#* Select from a list of detected attributes from the options menu.
|
|
||||||
cpu_graph_lower = "Auto"
|
|
||||||
|
|
||||||
#* Toggles if the lower CPU graph should be inverted.
|
|
||||||
cpu_invert_lower = True
|
|
||||||
|
|
||||||
#* Set to True to completely disable the lower CPU graph.
|
|
||||||
cpu_single_graph = False
|
|
||||||
|
|
||||||
#* Show cpu box at bottom of screen instead of top.
|
|
||||||
cpu_bottom = False
|
|
||||||
|
|
||||||
#* Shows the system uptime in the CPU box.
|
|
||||||
show_uptime = True
|
|
||||||
|
|
||||||
#* Show cpu temperature.
|
|
||||||
check_temp = True
|
|
||||||
|
|
||||||
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
|
|
||||||
cpu_sensor = "Auto"
|
|
||||||
|
|
||||||
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
|
|
||||||
show_coretemp = True
|
|
||||||
|
|
||||||
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
|
|
||||||
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
|
|
||||||
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
|
|
||||||
#* Example: "4:0 5:1 6:3"
|
|
||||||
cpu_core_map = ""
|
|
||||||
|
|
||||||
#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
|
|
||||||
temp_scale = "celsius"
|
|
||||||
|
|
||||||
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
|
|
||||||
base_10_sizes = False
|
|
||||||
|
|
||||||
#* Show CPU frequency.
|
|
||||||
show_cpu_freq = True
|
|
||||||
|
|
||||||
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
|
|
||||||
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
|
|
||||||
clock_format = "%X"
|
|
||||||
|
|
||||||
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
|
|
||||||
background_update = False
|
|
||||||
|
|
||||||
#* Custom cpu model name, empty string to disable.
|
|
||||||
custom_cpu_name = ""
|
|
||||||
|
|
||||||
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
|
|
||||||
#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user".
|
|
||||||
disks_filter = ""
|
|
||||||
|
|
||||||
#* Show graphs instead of meters for memory values.
|
|
||||||
mem_graphs = True
|
|
||||||
|
|
||||||
#* Show mem box below net box instead of above.
|
|
||||||
mem_below_net = False
|
|
||||||
|
|
||||||
#* Count ZFS ARC in cached and available memory.
|
|
||||||
zfs_arc_cached = True
|
|
||||||
|
|
||||||
#* If swap memory should be shown in memory box.
|
|
||||||
show_swap = False
|
|
||||||
|
|
||||||
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
|
|
||||||
swap_disk = False
|
|
||||||
|
|
||||||
#* If mem box should be split to also show disks info.
|
|
||||||
show_disks = True
|
|
||||||
|
|
||||||
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
|
|
||||||
only_physical = True
|
|
||||||
|
|
||||||
#* Read disks list from /etc/fstab. This also disables only_physical.
|
|
||||||
use_fstab = True
|
|
||||||
|
|
||||||
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
|
|
||||||
zfs_hide_datasets = False
|
|
||||||
|
|
||||||
#* Set to true to show available disk space for privileged users.
|
|
||||||
disk_free_priv = False
|
|
||||||
|
|
||||||
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
|
|
||||||
show_io_stat = True
|
|
||||||
|
|
||||||
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
|
|
||||||
io_mode = False
|
|
||||||
|
|
||||||
#* Set to True to show combined read/write io graphs in io mode.
|
|
||||||
io_graph_combined = False
|
|
||||||
|
|
||||||
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
|
|
||||||
#* Example: "/mnt/media:100 /:20 /boot:1".
|
|
||||||
io_graph_speeds = ""
|
|
||||||
|
|
||||||
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
|
|
||||||
net_download = 100
|
|
||||||
|
|
||||||
net_upload = 100
|
|
||||||
|
|
||||||
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
|
|
||||||
net_auto = True
|
|
||||||
|
|
||||||
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
|
|
||||||
net_sync = True
|
|
||||||
|
|
||||||
#* Starts with the Network Interface specified here.
|
|
||||||
net_iface = ""
|
|
||||||
|
|
||||||
#* Show battery stats in top right if battery is present.
|
|
||||||
show_battery = False
|
|
||||||
|
|
||||||
#* Which battery to use if multiple are present. "Auto" for auto detection.
|
|
||||||
selected_battery = "Auto"
|
|
||||||
|
|
||||||
#* Show power stats of battery next to charge indicator.
|
|
||||||
show_battery_watts = False
|
|
||||||
|
|
||||||
#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
|
|
||||||
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
|
|
||||||
log_level = "WARNING"
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
(deflisten window :initial "..." "./lib/get-active-window.sh")
|
|
||||||
|
|
||||||
(defwidget active-window []
|
|
||||||
(box
|
|
||||||
:halign "center"
|
|
||||||
(label :class "bar-group" :text "${window?: 'none'}")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
; (include "./bar/brightness.yuck")
|
|
||||||
(include "./bar/active-window.yuck")
|
|
||||||
(include "./bar/clock.yuck")
|
|
||||||
(include "./bar/kbd-layout.yuck")
|
|
||||||
(include "./bar/media.yuck")
|
|
||||||
(include "./bar/power.yuck")
|
|
||||||
(include "./bar/updates.yuck")
|
|
||||||
(include "./bar/weather.yuck")
|
|
||||||
(include "./bar/workspaces.yuck")
|
|
||||||
|
|
||||||
(defwidget bar-tray []
|
|
||||||
(box :class "bar-group"
|
|
||||||
:orientation "h"
|
|
||||||
:halign "end"
|
|
||||||
:space-evenly false
|
|
||||||
(systray :hexpand true :class "systray" :icon-size 18 :spacing 4)
|
|
||||||
(kbd-layout-tray-item)
|
|
||||||
(media-tray-item)
|
|
||||||
; (brightness)
|
|
||||||
(weather-tray-item)
|
|
||||||
(clock-tray-item)
|
|
||||||
(power-tray-item)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(defwidget bar [monitor-workspaces]
|
|
||||||
(box :class "bar" :orientation "h"
|
|
||||||
(workspaces :monitor-workspaces monitor-workspaces)
|
|
||||||
(active-window)
|
|
||||||
|
|
||||||
(box :orientation "h" :halign "end" :space-evenly false :spacing 8
|
|
||||||
(pacman-updates-widget)
|
|
||||||
(bar-tray)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(defwindow bar [monitor monitor-workspaces]
|
|
||||||
:monitor monitor
|
|
||||||
:geometry (geometry :x "0%"
|
|
||||||
:y "4px"
|
|
||||||
:width "99.7%"
|
|
||||||
:height "32px"
|
|
||||||
:anchor "top center"
|
|
||||||
)
|
|
||||||
:exclusive true
|
|
||||||
:windowtype "dock"
|
|
||||||
:wm-ignore false
|
|
||||||
:focusable false
|
|
||||||
(bar :monitor-workspaces monitor-workspaces)
|
|
||||||
)
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
; this is taking up too much CPU time
|
|
||||||
|
|
||||||
(defpoll brightness-1 :interval "2s" "ddcutil -d 1 getvcp 10 | awk '{ split($9, a, \",\"); print a[1]}'")
|
|
||||||
|
|
||||||
(defwidget brightness []
|
|
||||||
(eventbox :onscroll "./lib/change-brightness.sh {} ${brightness-1 + 0}"
|
|
||||||
(label :text " ${substring(brightness-1, 0, 2)}")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
(defpoll date-time :interval "5s" "./lib/date-time.sh")
|
|
||||||
|
|
||||||
(defwidget date []
|
|
||||||
(box :class "date"
|
|
||||||
"${date-time.date}"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(defwidget day []
|
|
||||||
(box :class "day"
|
|
||||||
"${date-time.day}"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(defwidget time []
|
|
||||||
(box :class "time"
|
|
||||||
"${date-time.time}"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(defwidget clock-tray-item []
|
|
||||||
(box :class "clock-tray-item"
|
|
||||||
:orientation "h"
|
|
||||||
:space-evenly false
|
|
||||||
:valign "center"
|
|
||||||
(date)
|
|
||||||
(day)
|
|
||||||
(time)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
(deflisten keyboard-layout :initial "en" "./lib/get-kb-layout.sh")
|
|
||||||
|
|
||||||
(defwidget kbd-layout-tray-item []
|
|
||||||
(box
|
|
||||||
:orientation "h"
|
|
||||||
:space-evenly false
|
|
||||||
:halign "center"
|
|
||||||
:class "interactive kbd-layout-tray-item"
|
|
||||||
(eventbox :cursor "pointer" :class "interactive"
|
|
||||||
(button
|
|
||||||
:class "kbd-layout"
|
|
||||||
:onclick "hyprctl switchxkblayout usb-hid-keyboard next"
|
|
||||||
keyboard-layout
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
(defpoll mediastatus :interval "1s" "./lib/media-status.sh")
|
|
||||||
(defpoll audio-sinks :interval "1s" "pactl -f json list sinks")
|
|
||||||
(defpoll audio-info :initial "{}" :interval "1s" "pactl -f json info")
|
|
||||||
(defpoll volume-level :interval "1s" "./lib/get-volume-level.sh")
|
|
||||||
|
|
||||||
(defwidget media-tray-item []
|
|
||||||
(box :orientation "h" :space-evenly false :halign "end" :class "media-tray-item"
|
|
||||||
(eventbox
|
|
||||||
:cursor "pointer"
|
|
||||||
:class "interactive"
|
|
||||||
:onscroll "./lib/change-volume.sh {}"
|
|
||||||
:onclick "eww open --toggle media-menu"
|
|
||||||
:onmiddleclick "playerctl play-pause"
|
|
||||||
|
|
||||||
(box :class "volume-tray-icon"
|
|
||||||
(label :class "volume-icon" :text {volume-level > 66 ? "" : volume-level > 0 ? "" : ""})
|
|
||||||
(label :text "${volume-level}%")
|
|
||||||
))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(defwidget audio-source-selector []
|
|
||||||
(box :orientation "v" :valign "start" :class "audio-source-selector"
|
|
||||||
(box :class "title"
|
|
||||||
(label :halign "start" :text "output source")
|
|
||||||
)
|
|
||||||
|
|
||||||
(for sink in audio-sinks
|
|
||||||
(eventbox :cursor "pointer"
|
|
||||||
(button
|
|
||||||
:halign "start"
|
|
||||||
:class "audio-source interactive ${sink.name == audio-info.default_sink_name ? "active" : ""}"
|
|
||||||
:onclick "pactl set-default-sink ${sink.index}"
|
|
||||||
" ${sink.description}"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(defwidget media-player []
|
|
||||||
(box :orientation "v" :space-evenly false :class "media-player" :valign "top"
|
|
||||||
(label :class "title" :text "${mediastatus.artist} - ${mediastatus.title}" :show-truncated false)
|
|
||||||
(label :class "album" :text "${mediastatus.album}" :show-truncated false)
|
|
||||||
(box :class "media-cover" :style "background: url('${mediastatus.artUrl}'); background-size: cover;" :height 300)
|
|
||||||
|
|
||||||
(box :class "media-controls" :spacing 12 :space-evenly false :halign "center"
|
|
||||||
(eventbox :cursor "pointer"
|
|
||||||
(button :class "media-button" :class "media-button shuffle ${mediastatus.shuffle == "On" ? "active" : ""}" :onclick "playerctl shuffle toggle" "")
|
|
||||||
)
|
|
||||||
|
|
||||||
(eventbox :cursor "pointer"
|
|
||||||
(button :class "media-button" :onclick "playerctl previous" "")
|
|
||||||
)
|
|
||||||
|
|
||||||
(eventbox :cursor "pointer"
|
|
||||||
(button
|
|
||||||
:class "media-button ${mediastatus.status == "Playing" ? "pause" : "play"}"
|
|
||||||
:onclick "./lib/media-play-pause.sh"
|
|
||||||
"${mediastatus.status == "Playing" ? "" : ""}"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(eventbox :cursor "pointer"
|
|
||||||
(button :class "media-button" :onclick "playerctl next" "")
|
|
||||||
)
|
|
||||||
|
|
||||||
(eventbox :cursor "pointer"
|
|
||||||
(button
|
|
||||||
:class "media-button loop ${mediastatus.loop != "None" ? "active" : ""}"
|
|
||||||
:onclick "playerctl loop ${mediastatus.loop == "Playlist" ? "track" : mediastatus.loop == "Track" ? "none" : "playlist"}"
|
|
||||||
"${mediastatus.loop == "Track" ? "" : ""}"
|
|
||||||
)
|
|
||||||
|
|
||||||
)
|
|
||||||
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(defwindow media-menu
|
|
||||||
:monitor 0
|
|
||||||
:namespace "media-menu"
|
|
||||||
:stacking "overlay"
|
|
||||||
:geometry (geometry :x "8px" :y "8px" :width "400px" :anchor "top right")
|
|
||||||
:wm-ignore false
|
|
||||||
:focusable false
|
|
||||||
(box :class "eww-overlay media-menu" :orientation "v" :space-evenly false
|
|
||||||
(media-player)
|
|
||||||
(audio-source-selector)
|
|
||||||
|
|
||||||
(eventbox :cursor "pointer"
|
|
||||||
(button :class "interactive btn" :halign "start" :onclick "eww open --toggle media-menu & pavucontrol &" " Open PulseAudio control")
|
|
||||||
)
|
|
||||||
|
|
||||||
; TODO: For some reason audio-info is null if I don't invoke it outside the for. Investigate.x
|
|
||||||
(label :class "hidden" :text "Default: ${audio-info.default_sink_name}")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
(defwidget power-tray-item []
|
|
||||||
(eventbox :cursor "pointer"
|
|
||||||
(button :class "power-button-tray-item interactive" :onclick "eww open --toggle power-menu" "")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(defwindow power-menu
|
|
||||||
:namespace "power-menu"
|
|
||||||
:monitor 0
|
|
||||||
:stacking "overlay"
|
|
||||||
:geometry (geometry :x "50%"
|
|
||||||
:y "50%"
|
|
||||||
:width "30%"
|
|
||||||
:height "200px"
|
|
||||||
:anchor "center"
|
|
||||||
)
|
|
||||||
(box :class "power-menu" :orientation "h"
|
|
||||||
(eventbox :cursor "pointer"
|
|
||||||
(button :class "power-menu-item first" :onclick "eww open --toggle power-menu & ./lib/lock.sh" "")
|
|
||||||
)
|
|
||||||
(eventbox :cursor "pointer"
|
|
||||||
(button :class "power-menu-item" :onclick "eww open --toggle power-menu & ./lib/logout.sh" "")
|
|
||||||
)
|
|
||||||
(eventbox :cursor "pointer"
|
|
||||||
(button :class "power-menu-item" :onclick "eww open --toggle power-menu & ./lib/reboot.sh" "")
|
|
||||||
)
|
|
||||||
(eventbox :cursor "pointer"
|
|
||||||
(button :class "power-menu-item" :onclick "eww open --toggle power-menu & ./lib/shutdown.sh" "")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
(defpoll pacman-updates :initial 0 :interval "60s" "checkupdates | wc -l")
|
|
||||||
(defpoll pacman-updates-full :interval "60s" "checkupdates")
|
|
||||||
|
|
||||||
(defwidget pacman-updates-widget []
|
|
||||||
(box :class "pacman-update-widget"
|
|
||||||
(eventbox
|
|
||||||
:class "pacman-update-widget-inner ${pacman-updates > 0 ? 'has-updates' : ''}"
|
|
||||||
:cursor "pointer"
|
|
||||||
:onclick "${pacman-updates > 0 ? 'alacritty -e sudo pacman -Syu &' : ''}"
|
|
||||||
:onmiddleclick "eww open --toggle updates-menu"
|
|
||||||
|
|
||||||
(label :class "update-text" :text " ${pacman-updates}")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(defwindow updates-menu
|
|
||||||
:namespace "updates-menu"
|
|
||||||
:monitor 0
|
|
||||||
:stacking "overlay"
|
|
||||||
:geometry (geometry :x "50%"
|
|
||||||
:y "40%"
|
|
||||||
:width "400px"
|
|
||||||
:height "200px"
|
|
||||||
:anchor "center"
|
|
||||||
)
|
|
||||||
|
|
||||||
(box :class "updates-menu" :orientation "v" :space-evenly true
|
|
||||||
(label :class "pacman-updates-menu-title" :text "Pacman Updates: ${pacman-updates}")
|
|
||||||
(label :text "${pacman-updates-full}")
|
|
||||||
(eventbox :cursor "pointer" :class "interactive"
|
|
||||||
(button :class "btn" :onclick "alacritty -e sudo pacman -Syu &" "Update")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
(deflisten weather :initial "{'temp': 'n/a', 'desc': 'n/a'}" "./lib/weather.py")
|
|
||||||
|
|
||||||
(defwidget weather-tray-item []
|
|
||||||
(box :class "weather-tray-item"
|
|
||||||
:orientation "h"
|
|
||||||
:space-evenly false
|
|
||||||
(eventbox :cursor "pointer" :class "interactive weather" :onclick "xdg-open https://www.sinoptik.bg/sofia-bulgaria-100727011"
|
|
||||||
(box :space-evenly false
|
|
||||||
(label :class "weather-temp" :text "${weather.icon} ${weather.temp}")
|
|
||||||
(label :class "weather-desc" :text "${weather.desc}")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
(deflisten active-workspace :initial "." "./lib/get-active-workspace.sh")
|
|
||||||
|
|
||||||
(defwidget workspaces [?monitor-workspaces]
|
|
||||||
(box :class "workspaces"
|
|
||||||
:orientation "h"
|
|
||||||
:space-evenly true
|
|
||||||
:halign "start"
|
|
||||||
:spacing 8
|
|
||||||
(for workspace in monitor-workspaces
|
|
||||||
(eventbox :cursor "pointer"
|
|
||||||
(button :class "interactive workspace ${active-workspace == workspace ? "active" : ""}" :onclick "hyprctl dispatch workspace ${workspace}" "${workspace}")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
@@ -1,98 +0,0 @@
|
|||||||
$font: "SF Pro Light";
|
|
||||||
$bg: rgba(0, 0, 0, 0.5);
|
|
||||||
$fg: #dedede;
|
|
||||||
$menu-border: rgba(255, 255, 255, 0.1);
|
|
||||||
$bar-gap: 8px;
|
|
||||||
|
|
||||||
* {
|
|
||||||
all: unset;
|
|
||||||
font-family: $font;
|
|
||||||
}
|
|
||||||
|
|
||||||
@import "./styles/media-menu.scss";
|
|
||||||
@import "./styles/power-menu.scss";
|
|
||||||
@import "./styles/updates-menu.scss";
|
|
||||||
@import "./styles/tray.scss";
|
|
||||||
|
|
||||||
.systray menu {
|
|
||||||
font-family: $font;
|
|
||||||
border-radius: 10px;
|
|
||||||
background-color: rgba(30, 30, 30);
|
|
||||||
color: $fg;
|
|
||||||
padding: 5px 0px;
|
|
||||||
|
|
||||||
> menuitem {
|
|
||||||
padding: 5px 10px;
|
|
||||||
|
|
||||||
&:disabled label {
|
|
||||||
color: gray;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: #0e4679;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
separator {
|
|
||||||
background-color: rgb(60, 60, 60);
|
|
||||||
padding-top: 1px;
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
padding: unset;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.eww-overlay {
|
|
||||||
background-color: $bg;
|
|
||||||
border: 3px solid $menu-border;
|
|
||||||
|
|
||||||
border-radius: 8px;
|
|
||||||
padding: 16px 48px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bar-group {
|
|
||||||
background-color: $bg;
|
|
||||||
border-radius: 8px;
|
|
||||||
padding: 0 calc($bar-gap * 1.5);
|
|
||||||
color: $fg;
|
|
||||||
|
|
||||||
> :not(:first-child) {
|
|
||||||
margin-left: $bar-gap;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.interactive {
|
|
||||||
border-radius: 4px;
|
|
||||||
transition: background-color 0.4s ease;
|
|
||||||
|
|
||||||
&.active {
|
|
||||||
background-color: $fg;
|
|
||||||
color: $bg;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:not(.active):hover {
|
|
||||||
background-color: rgba(255, 255, 255, 0.2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn {
|
|
||||||
border-radius: 4px;
|
|
||||||
padding: 10px 15px 10px 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hidden {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.workspace {
|
|
||||||
padding: 0 8px;
|
|
||||||
|
|
||||||
&.active {
|
|
||||||
background-color: $fg;
|
|
||||||
color: $bg;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
(include "./bar/bar.yuck")
|
|
||||||
|
|
||||||
; a hacky solution for moving the windows on my second monitor a bit up so I can see them :D
|
|
||||||
(defwindow monitor-bump [monitor]
|
|
||||||
:monitor monitor
|
|
||||||
:geometry (geometry :x "0" :y "0" :width "100%" :height "120" :anchor "bottom center")
|
|
||||||
:exclusive true
|
|
||||||
:windowtype "dock"
|
|
||||||
:wm-ignore true
|
|
||||||
:focusable false
|
|
||||||
(box " ")
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
; (defvar r_bar_systray false)
|
|
||||||
|
|
||||||
; (defwidget w_bar_tray[] (revealer
|
|
||||||
; :reveal r_bar_systray
|
|
||||||
; :transition "slideleft"
|
|
||||||
; (eventbox :class "tray" :spacing 20 :space-evenly false
|
|
||||||
; (box :class "widget" :spacing 0 :space-evenly false
|
|
||||||
; (systray :icon-size 18)
|
|
||||||
; )
|
|
||||||
; )
|
|
||||||
; )
|
|
||||||
; )
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
secrets.py
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
direction=$1
|
|
||||||
current=$2
|
|
||||||
if [[ $direction == "down" ]]; then
|
|
||||||
target=$(($current+1))
|
|
||||||
if [[ $target == 11 ]]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
hyprctl dispatch workspace $target
|
|
||||||
elif [[ $direction == "up" ]]; then
|
|
||||||
target=$(($current-1))
|
|
||||||
hyprctl dispatch workspace $target
|
|
||||||
else
|
|
||||||
target=$1
|
|
||||||
hyprctl dispatch workspace $target
|
|
||||||
fi
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
up)
|
|
||||||
ddcutil -d 1 setvcp 10 $(($2 + 10))
|
|
||||||
;;
|
|
||||||
down)
|
|
||||||
ddcutil -d 1 setvcp 10 $(($2 - 10))
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
if [[ $1 == "up" ]]; then
|
|
||||||
wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
|
|
||||||
elif [[ $1 == "down" ]]; then
|
|
||||||
wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
|
||||||
else
|
|
||||||
wpctl set-volume @DEFAULT_AUDIO_SINK@ $1
|
|
||||||
fi
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
day=$(date "+%a")
|
|
||||||
date=$(date "+%-d")
|
|
||||||
time=$(date "+%H:%M")
|
|
||||||
|
|
||||||
|
|
||||||
JSON_STRING=$(jq -n \
|
|
||||||
--arg day "$day" \
|
|
||||||
--arg date "$date" \
|
|
||||||
--arg time "$time" \
|
|
||||||
'{day: $day, date: $date, time: $time}')
|
|
||||||
|
|
||||||
echo $JSON_STRING
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
hyprctl activewindow -j | jq --raw-output .title
|
|
||||||
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | stdbuf -o0 awk -F '>>|,' '/^activewindow>>/{print $3}'
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
##!/usr/bin/env sh
|
|
||||||
|
|
||||||
hyprctl monitors -j | jq '.[] | select(.focused) | .activeWorkspace.id'
|
|
||||||
|
|
||||||
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - |
|
|
||||||
stdbuf -o0 awk -F '>>|,' -e '/^workspace>>/ {print $2}' -e '/^focusedmon>>/ {print $3}'
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
##!/usr/bin/env sh
|
|
||||||
|
|
||||||
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | while read -r line; do
|
|
||||||
if [[ $line == "activelayout>>"* ]]; then
|
|
||||||
split=(${line//>>/ })
|
|
||||||
lang=(${split[1]//,/ })
|
|
||||||
language=${lang[1]}
|
|
||||||
lang_code=${language:0:2}
|
|
||||||
lang_code_lower=$(echo $lang_code | tr '[:upper:]' '[:lower:]')
|
|
||||||
|
|
||||||
if [[ $lang_code_lower == "bu" ]]; then
|
|
||||||
lang_code_lower="bg"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo $lang_code_lower
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
volume=$(wpctl get-volume @DEFAULT_AUDIO_SINK@)
|
|
||||||
#todo fix 100% case
|
|
||||||
|
|
||||||
volume_value=$(echo $volume | cut -d':' -f2)
|
|
||||||
|
|
||||||
if [ $volume_value == "0.00" ]; then
|
|
||||||
echo "0"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
if [[ $volume_value =~ ^" 1" ]]; then
|
|
||||||
# starts with a space - trim
|
|
||||||
trimmed=$( echo $volume_value | cut -c1- )
|
|
||||||
|
|
||||||
echo "${trimmed//.}"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
volume_percent=$(echo $volume_value | cut -d'.' -f2)
|
|
||||||
|
|
||||||
echo $volume_percent
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
hyprlock
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
loginctl kill-user $USER
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
if [[ $(playerctl status) == "Playing" ]]; then
|
|
||||||
playerctl pause
|
|
||||||
else
|
|
||||||
playerctl play
|
|
||||||
fi
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
status=$(playerctl status 2>/dev/null)
|
|
||||||
artist=$(playerctl metadata -f "{{artist}}" 2>/dev/null)
|
|
||||||
title=$(playerctl metadata -f "{{title}}" 2>/dev/null)
|
|
||||||
album=$(playerctl metadata -f "{{album}}" 2>/dev/null)
|
|
||||||
artUrl=$(playerctl metadata -f "{{mpris:artUrl}}" 2>/dev/null)
|
|
||||||
length=$(playerctl metadata -f "{{duration(mpris:length)}}" 2>/dev/null)
|
|
||||||
shuffle=$(playerctl shuffle 2>/dev/null)
|
|
||||||
loop=$(playerctl loop 2>/dev/null)
|
|
||||||
|
|
||||||
JSON_STRING=$(jq -n \
|
|
||||||
--arg status "$status" \
|
|
||||||
--arg artist "$artist" \
|
|
||||||
--arg title "$title" \
|
|
||||||
--arg album "$album" \
|
|
||||||
--arg artUrl "$artUrl" \
|
|
||||||
--arg length "$length" \
|
|
||||||
--arg shuffle "$shuffle" \
|
|
||||||
--arg loop "$loop" \
|
|
||||||
'{status: $status, artist: $artist, title: $title, album: $album, artUrl: $artUrl, length: $length, shuffle: $shuffle, loop: $loop}')
|
|
||||||
|
|
||||||
echo $JSON_STRING
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
from hyprsocket import run_on_line
|
|
||||||
|
|
||||||
|
|
||||||
def get_kb_layout(line):
|
|
||||||
print(line)
|
|
||||||
|
|
||||||
|
|
||||||
run_on_line(get_kb_layout)
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
import socket
|
|
||||||
import os, os.path
|
|
||||||
|
|
||||||
|
|
||||||
def get_socket_path():
|
|
||||||
XDG_RUNTIME_DIR = os.getenv("XDG_RUNTIME_DIR")
|
|
||||||
HYPRLAND_INSTANCE_SIGNATURE = os.getenv("HYPRLAND_INSTANCE_SIGNATURE")
|
|
||||||
|
|
||||||
socket_path = os.path.join(
|
|
||||||
XDG_RUNTIME_DIR, "hypr", HYPRLAND_INSTANCE_SIGNATURE, ".socket2.sock"
|
|
||||||
)
|
|
||||||
|
|
||||||
return socket_path
|
|
||||||
|
|
||||||
|
|
||||||
def run_on_line(method):
|
|
||||||
server = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
|
||||||
server.connect(get_socket_path())
|
|
||||||
|
|
||||||
while True:
|
|
||||||
data_chunk = server.recv(4096)
|
|
||||||
if data_chunk:
|
|
||||||
line = data_chunk.decode("utf-8")
|
|
||||||
method(line)
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
|
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
systemctl reboot
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
shutdown now
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
import requests, json, sys, time
|
|
||||||
from secrets import WEATHER_API_TOKEN, WEATHER_CITY
|
|
||||||
|
|
||||||
UNITS = "metric"
|
|
||||||
LANG = "en"
|
|
||||||
|
|
||||||
|
|
||||||
def get_icon(code):
|
|
||||||
icons = {
|
|
||||||
"01d": "",
|
|
||||||
"01n": "",
|
|
||||||
"02d": "",
|
|
||||||
"02n": "",
|
|
||||||
"03d": "",
|
|
||||||
"03n": "",
|
|
||||||
"04d": "",
|
|
||||||
"04n": "",
|
|
||||||
"09d": "",
|
|
||||||
"09n": "",
|
|
||||||
"10d": "",
|
|
||||||
"10n": "",
|
|
||||||
"11d": "",
|
|
||||||
"11n": "",
|
|
||||||
"13d": "",
|
|
||||||
"13n": "",
|
|
||||||
"50d": "",
|
|
||||||
"50n": "",
|
|
||||||
}
|
|
||||||
|
|
||||||
try:
|
|
||||||
return icons[code]
|
|
||||||
except KeyError:
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
response = requests.get(
|
|
||||||
f"https://api.openweathermap.org/data/2.5/weather?q={WEATHER_CITY}&appid={WEATHER_API_TOKEN}&lang={LANG}&units={UNITS}"
|
|
||||||
).json()
|
|
||||||
data = {
|
|
||||||
"icon": get_icon(response["weather"][0]["icon"]),
|
|
||||||
"temp": str(round(response["main"]["temp"])) + "°",
|
|
||||||
"desc": response["weather"][0]["description"].capitalize(),
|
|
||||||
}
|
|
||||||
return data
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
try:
|
|
||||||
while True:
|
|
||||||
try:
|
|
||||||
sys.stdout.write(json.dumps(main()) + "\n")
|
|
||||||
sys.stdout.flush()
|
|
||||||
time.sleep(1800)
|
|
||||||
except requests.exceptions.ConnectionError:
|
|
||||||
print("Connection error! Retrying...")
|
|
||||||
time.sleep(2)
|
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
exit(0)
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
## NOTE: This file is unused currently
|
|
||||||
|
|
||||||
NUMBER_OF_WORKSPACES=6
|
|
||||||
|
|
||||||
window_class() {
|
|
||||||
echo `hyprctl activewindow -j | jq --raw-output .class`
|
|
||||||
}
|
|
||||||
|
|
||||||
window_title() {
|
|
||||||
echo `hyprctl activewindow -j | jq --raw-output .title`
|
|
||||||
}
|
|
||||||
|
|
||||||
workspaces (){
|
|
||||||
WORKSPACE_WINDOWS=$(hyprctl workspaces -j | jq 'map({key: .id | tostring, value: .windows}) | from_entries')
|
|
||||||
seq 1 $NUMBER_OF_WORKSPACES | jq --argjson windows "${WORKSPACE_WINDOWS}" --slurp -Mc 'map(tostring) | map({id: ., windows: ($windows[.]//0)})'
|
|
||||||
}
|
|
||||||
|
|
||||||
if [[ $1 == 'workspaces' ]]; then
|
|
||||||
echo "{ \"workspaces\": $(workspaces), \"active\": 1, \"active_empty\": true }"
|
|
||||||
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | while read -r line; do
|
|
||||||
active=$(eww get workspaces | jq .active)
|
|
||||||
if [[ ${line:0:9} == 'workspace' ]]; then
|
|
||||||
active=${line:11:2}
|
|
||||||
fi
|
|
||||||
|
|
||||||
active_empty='true'
|
|
||||||
let "i = $active - 1"
|
|
||||||
if [[ $(workspaces | jq --raw-output .[$i].windows) -gt 0 ]]; then active_empty='false'; fi
|
|
||||||
|
|
||||||
eww update workspaces="{
|
|
||||||
\"workspaces\": $(workspaces),
|
|
||||||
\"active\": $active,
|
|
||||||
\"active_empty\": $active_empty
|
|
||||||
}"
|
|
||||||
|
|
||||||
eww update dock_reveal="$active_empty"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $1 == 'window' ]]; then
|
|
||||||
window_class
|
|
||||||
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | while read -r line; do
|
|
||||||
window_class
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
|
|
||||||
.media-menu {
|
|
||||||
.audio-source-selector {
|
|
||||||
margin-top: 16px;
|
|
||||||
margin-bottom: 8px;
|
|
||||||
|
|
||||||
.title {
|
|
||||||
border-bottom: 1px solid $fg;
|
|
||||||
padding: 10px;
|
|
||||||
margin-bottom: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.audio-source {
|
|
||||||
padding-left: 10px;
|
|
||||||
padding-right: 15px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.media-player {
|
|
||||||
.title {
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.album {
|
|
||||||
font-size: 13px;
|
|
||||||
color: #aaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.media-cover {
|
|
||||||
margin-top: 12px;
|
|
||||||
border-radius: 16px;
|
|
||||||
border: 2px solid $menu-border;
|
|
||||||
}
|
|
||||||
|
|
||||||
.media-controls {
|
|
||||||
margin-top: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.media-button {
|
|
||||||
padding: 8px 13px;
|
|
||||||
border-radius: 100%;
|
|
||||||
border: 2px solid $menu-border;
|
|
||||||
transition: all 0.4s ease;
|
|
||||||
|
|
||||||
&.shuffle {
|
|
||||||
padding-left: 10px;
|
|
||||||
padding-right: 16px;
|
|
||||||
|
|
||||||
&.active {
|
|
||||||
background-color: $fg;
|
|
||||||
color: $bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.loop {
|
|
||||||
padding-left: 12px;
|
|
||||||
padding-right: 14px;
|
|
||||||
|
|
||||||
&.active {
|
|
||||||
background-color: $fg;
|
|
||||||
color: $bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.pause {
|
|
||||||
background-color: $fg;
|
|
||||||
color: $bg;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: $fg;
|
|
||||||
border-color: $fg;
|
|
||||||
color: $bg;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
.power-menu {
|
|
||||||
background-color: $bg;
|
|
||||||
border: 3px solid $menu-border;
|
|
||||||
border-radius: 32px;
|
|
||||||
|
|
||||||
.power-menu-item {
|
|
||||||
font-size: 44px;
|
|
||||||
background-color: $bg;
|
|
||||||
border-radius: 20px;
|
|
||||||
border: 1px solid $menu-border;
|
|
||||||
margin: 16px 0;
|
|
||||||
margin-right: 16px;
|
|
||||||
padding-right: 4px; /* this makes sure icons from nerd font are centered */
|
|
||||||
transition:
|
|
||||||
background-color 0.4s ease,
|
|
||||||
color 0.4s ease;
|
|
||||||
color: $fg;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: $fg;
|
|
||||||
color: $bg;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.first {
|
|
||||||
margin-left: 16px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
$tray-item-interactive-margin: 6px 0;
|
|
||||||
|
|
||||||
.pacman-update-widget {
|
|
||||||
margin: $tray-item-interactive-margin;
|
|
||||||
|
|
||||||
.pacman-update-widget-inner {
|
|
||||||
border-radius: 4px;
|
|
||||||
|
|
||||||
&.has-updates {
|
|
||||||
background-color: rgb(228, 137, 137);
|
|
||||||
color: #fff;
|
|
||||||
font-weight: bold;
|
|
||||||
transition: background-color 0.4s ease;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: rgb(187, 100, 100);
|
|
||||||
}
|
|
||||||
|
|
||||||
.update-text {
|
|
||||||
padding: 0 8px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.kbd-layout-tray-item {
|
|
||||||
margin: $tray-item-interactive-margin;
|
|
||||||
|
|
||||||
.kbd-layout {
|
|
||||||
padding: 0 8px;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.media-tray-item {
|
|
||||||
margin: $tray-item-interactive-margin;
|
|
||||||
|
|
||||||
.volume-tray-icon {
|
|
||||||
padding-right: 6px;
|
|
||||||
|
|
||||||
.volume-icon {
|
|
||||||
padding-right: 6px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.clock-tray-item {
|
|
||||||
margin-right: 8px;
|
|
||||||
|
|
||||||
.date {
|
|
||||||
border: 1px solid rgba(255, 255, 255, 0.3);
|
|
||||||
border-top: 4px solid rgba(255, 255, 255, 0.6);
|
|
||||||
padding: 0 8px;
|
|
||||||
border-radius: 4px;
|
|
||||||
margin: 8px 0;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.day {
|
|
||||||
margin-left: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.time {
|
|
||||||
margin-left: 4px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.weather-tray-item {
|
|
||||||
margin: $tray-item-interactive-margin;
|
|
||||||
|
|
||||||
.weather-temp {
|
|
||||||
padding-left: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.weather-desc {
|
|
||||||
padding-left: 4px;
|
|
||||||
padding-right: 8px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.power-button-tray-item {
|
|
||||||
margin: $tray-item-interactive-margin;
|
|
||||||
|
|
||||||
padding-right: 8px;
|
|
||||||
padding-left: 8px;
|
|
||||||
margin-left: 4px;
|
|
||||||
font-size: 18px;
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
.updates-menu {
|
|
||||||
background-color: $bg;
|
|
||||||
border: 3px solid $menu-border;
|
|
||||||
border-radius: 32px;
|
|
||||||
padding: 16px 32px;
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
# Compiled source #
|
|
||||||
###################
|
|
||||||
*.class
|
|
||||||
*.dll
|
|
||||||
*.exe
|
|
||||||
*.o
|
|
||||||
*.so
|
|
||||||
*.pyc
|
|
||||||
|
|
||||||
# Editing tools and IDEs #
|
|
||||||
##########################
|
|
||||||
.sw[a-p]
|
|
||||||
[._]*.sw[a-p]
|
|
||||||
*~
|
|
||||||
~*
|
|
||||||
\#*\#
|
|
||||||
\.#*
|
|
||||||
.ipynb_checkpoints/
|
|
||||||
|
|
||||||
# Logs and databases #
|
|
||||||
######################
|
|
||||||
*.log
|
|
||||||
*.sqlite
|
|
||||||
|
|
||||||
# OS generated files #
|
|
||||||
######################
|
|
||||||
.DS_Store
|
|
||||||
.DS_Store?
|
|
||||||
._*
|
|
||||||
.Spotlight-V100
|
|
||||||
.Trashes
|
|
||||||
ehthumbs.db
|
|
||||||
Thumbs.db
|
|
||||||
@@ -1,136 +0,0 @@
|
|||||||
# herdr configuration
|
|
||||||
# Place this file at ~/.config/herdr/config.toml
|
|
||||||
# Apply changes with: herdr server reload-config
|
|
||||||
|
|
||||||
# Show first-run notification setup on startup.
|
|
||||||
# Missing also shows onboarding; set false after you've chosen.
|
|
||||||
onboarding = false
|
|
||||||
|
|
||||||
[theme]
|
|
||||||
# Built-in themes: catppuccin, terminal, tokyo-night, dracula, nord,
|
|
||||||
# gruvbox, one-dark, solarized, kanagawa, rose-pine,
|
|
||||||
# vesper
|
|
||||||
name = "one-dark"
|
|
||||||
|
|
||||||
# Follow host terminal light/dark appearance and switch Herdr UI themes.
|
|
||||||
# Existing manual behavior is unchanged unless this is true.
|
|
||||||
# auto_switch = false
|
|
||||||
# dark_name = "catppuccin"
|
|
||||||
# light_name = "catppuccin-latte"
|
|
||||||
|
|
||||||
# Override individual color tokens on top of the base theme.
|
|
||||||
# Accepts: hex (#rrggbb), named colors, rgb(r,g,b), or panel_bg = "reset"
|
|
||||||
# [theme.custom]
|
|
||||||
# panel_bg = "reset"
|
|
||||||
# accent = "#f5c2e7"
|
|
||||||
# red = "#ff6188"
|
|
||||||
# green = "#a6e3a1"
|
|
||||||
|
|
||||||
[terminal]
|
|
||||||
# Executable used for new interactive panes.
|
|
||||||
# Empty means $SHELL, then /bin/sh.
|
|
||||||
default_shell = "/bin/zsh"
|
|
||||||
|
|
||||||
[update]
|
|
||||||
# Update channel used by background version checks and `herdr update`.
|
|
||||||
# Use "stable" for normal releases or "preview" for opt-in preview builds.
|
|
||||||
channel = "stable"
|
|
||||||
|
|
||||||
|
|
||||||
[keys]
|
|
||||||
prefix = "ctrl+a"
|
|
||||||
|
|
||||||
# Prefix-mode actions
|
|
||||||
help = "prefix+?"
|
|
||||||
settings = "prefix+shift+s" # default prefix+s is used for split_horizontal below
|
|
||||||
# detach = "prefix+q"
|
|
||||||
# reload_config = "prefix+shift+r"
|
|
||||||
# open_notification_target = "prefix+o"
|
|
||||||
# workspace_picker = "prefix+w"
|
|
||||||
# goto = "prefix+g"
|
|
||||||
# new_workspace = "prefix+shift+n"
|
|
||||||
# new_worktree = "prefix+shift+g"
|
|
||||||
# open_worktree = "" # optional, unset by default
|
|
||||||
# remove_worktree = "" # optional, unset by default; opens confirmation
|
|
||||||
# rename_workspace = "prefix+shift+w"
|
|
||||||
# close_workspace = "prefix+shift+d"
|
|
||||||
|
|
||||||
previous_workspace = "prefix+ctrl+k"
|
|
||||||
next_workspace = "prefix+ctrl+j"
|
|
||||||
|
|
||||||
# previous_agent = "" # optional, unset by default
|
|
||||||
# next_agent = "" # optional, unset by default
|
|
||||||
# focus_agent = "" # optional indexed binding, e.g. "prefix+alt+1..9"
|
|
||||||
# remote_image_paste = "ctrl+v" # only active in herdr --remote; empty disables raw-key image paste
|
|
||||||
|
|
||||||
new_tab = "prefix+c"
|
|
||||||
rename_tab = ["prefix+comma", "prefix+shift+t"]
|
|
||||||
previous_tab = ["prefix+p", "prefix+ctrl+h"]
|
|
||||||
next_tab = ["prefix+n", "prefix+ctrl+l"]
|
|
||||||
switch_tab = "prefix+1..9"
|
|
||||||
switch_workspace = "prefix+alt+1..9"
|
|
||||||
close_tab = "prefix+shift+x"
|
|
||||||
rename_pane = ["prefix+shift+p", "prefix+<"] # prefix+shift+comma
|
|
||||||
# edit_scrollback = "prefix+e"
|
|
||||||
focus_pane_left = "prefix+h"
|
|
||||||
focus_pane_down = "prefix+j"
|
|
||||||
focus_pane_up = "prefix+k"
|
|
||||||
focus_pane_right = "prefix+l"
|
|
||||||
# cycle_pane_next = "prefix+tab"
|
|
||||||
# cycle_pane_previous = "prefix+shift+tab"
|
|
||||||
# last_pane = "" # optional, unset by default; bind e.g. "prefix+tab" for global back-and-forth
|
|
||||||
split_vertical = ["prefix+v", "prefix+|"]
|
|
||||||
split_horizontal = ["prefix+s", "prefix+minus"]
|
|
||||||
# close_pane = "prefix+x"
|
|
||||||
# zoom = "prefix+z" # legacy alias: fullscreen
|
|
||||||
resize_mode = "prefix+r"
|
|
||||||
toggle_sidebar = "prefix+b"
|
|
||||||
|
|
||||||
copy_mode = ["prefix+[", "prefix+esc"]
|
|
||||||
|
|
||||||
# [worktrees]
|
|
||||||
# directory = "~/.herdr/worktrees"
|
|
||||||
|
|
||||||
[ui]
|
|
||||||
|
|
||||||
# Ask for a tab name before creating a new tab.
|
|
||||||
prompt_new_tab_name = true
|
|
||||||
|
|
||||||
# Draw borders around split panes.
|
|
||||||
pane_borders = true
|
|
||||||
|
|
||||||
# Keep split panes visually separated instead of sharing divider borders.
|
|
||||||
pane_gaps = true
|
|
||||||
|
|
||||||
# Show detected/reported agent labels in split pane borders when no manual pane name is set.
|
|
||||||
show_agent_labels_on_pane_borders = true
|
|
||||||
|
|
||||||
# Agent panel ordering: "spaces" (grouped by space) or "priority" (attention queue).
|
|
||||||
# "workspaces" is accepted as an alias for "spaces".
|
|
||||||
agent_panel_sort = "spaces"
|
|
||||||
|
|
||||||
# Accent color for highlights, borders, and navigation UI.
|
|
||||||
# Accepts: hex (#89b4fa), named colors (cyan, blue, magenta), or rgb(r,g,b)
|
|
||||||
accent = "cyan"
|
|
||||||
|
|
||||||
[ui.toast]
|
|
||||||
delivery = "herdr"
|
|
||||||
|
|
||||||
[ui.toast.herdr]
|
|
||||||
position = "bottom-right"
|
|
||||||
|
|
||||||
[ui.toast.clipboard]
|
|
||||||
enabled = true
|
|
||||||
position = "bottom-center"
|
|
||||||
|
|
||||||
|
|
||||||
[experimental]
|
|
||||||
# Save recent pane screen history across full server restarts.
|
|
||||||
pane_history = false
|
|
||||||
|
|
||||||
[advanced]
|
|
||||||
scrollback_limit_bytes = 33554432 # 32 MiB ~ 50k lines (tmux history-limit)
|
|
||||||
|
|
||||||
## Differences to tmux
|
|
||||||
# - prefix+n changed meaning: in tmux it was swap-pane -U; in herdr it's next tab. Pane swapping is prefix+shift+h/j/k/l - which was pane resize in your tmux. Resizing is now a mode: prefix+r.
|
|
||||||
# - No equivalents: window reordering (</>), paste buffers (b/p/P), vi mode-keys, base-index, escape-time, focus-events, aggressive-resize. Config reload is herdr server reload-config instead of prefix+r. The status-bar cpu/mem/clock plugins are replaced by herdr's sidebar; tmux-fzf's pickers map to prefix+w (workspace picker) and prefix+g (goto).
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user