2 Commits
Author SHA1 Message Date
GeorgeSG 7c052872cc Change prompt to lambda 2023-11-14 09:26:21 +02:00
GeorgeSG f1e56ce98a Change bash prompt hostname to red 2023-11-14 09:26:21 +02:00
172 changed files with 232 additions and 3736 deletions
+63
View File
@@ -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
+1
View File
@@ -0,0 +1 @@
source ~/.bashrc
+21 -24
View File
@@ -1,7 +1,7 @@
# Set prompt
IFS='.' read -ra split_hostname <<<$(hostname | tr '[:upper:]' '[:lower:]')
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
shopt -s cdspell
@@ -9,13 +9,6 @@ shopt -s cdspell
# update the values of LINES and COLUMNS.
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
stty -ctlecho
@@ -44,18 +37,27 @@ HISTCONTROL=ignoreboth
# Aliases #
######################
# enable color support of ls
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
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
# some more ls aliases
alias ls='ls -hG'
alias ll='ls -alhFG'
alias la='ls -AG'
alias l='ls -CFG'
# Editor
export EDITOR='code -w'
# bash-git-prompt
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_END="\[\e[1;m\] \[\e[1;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\]"
# Disable deprecation warning on mac
@@ -65,22 +67,17 @@ export BASH_SILENCE_DEPRECATION_WARNING=1
# Sources & exports #
######################
if [ -f ~/.config/.aliases ]; then
source ~/.config/.aliases
if [ -f ~/.bash_aliases ]; then
source ~/.bash_aliases
fi
if [ -f ~/.config/.aliases.local ]; then
. ~/.config/.aliases.local
fi
if [ -f ~/.config/bash/.bash_profile.local ]; then
source ~/.config/bash/.bash_profile.local
if [ -f ~/.bashrc_local ]; then
source ~/.bashrc_local
fi
# bash-git prompt
if [ -f ~/.config/bash/bash-git-prompt/gitprompt.sh ]; then
source ~/.config/bash/bash-git-prompt/gitprompt.sh
if [ -f ~/.bash-git-prompt/gitprompt.sh ]; then
source ~/.bash-git-prompt/gitprompt.sh
fi
# enable programmable completion features (you don't need to enable
@@ -91,6 +88,6 @@ if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
fi
# Git completion
if [ -f ~/.config/bash/git-completion.bash ]; then
source ~/.config/bash/git-completion.bash
if [ -f ~/.git-completion.bash ]; then
source ~/.git-completion.bash
fi
+55
View File
@@ -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
View File
@@ -1,14 +1,3 @@
.DS_Store
home/.vim/bundle
home/.vim/undodir
home/.config/bash/bash-git-prompt
Brewfile.lock.json
Caskfile.lock.json
home/.config/alacritty/themes
__pycache__
*.pyc
*.local
*.log
.vim/bundle
.vim/undodir
-28
View File
@@ -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
+9 -22
View File
@@ -2,38 +2,30 @@
# General Settings
# ------------------
set-option -g default-shell "/bin/zsh"
# See: https://github.com/gpakosz/.tmux/blob/master/.tmux.conf
# Set Custom Prefix
set -g prefix C-a
unbind C-b
# Start in newer bash
set-option -g default-command "/usr/local/bin/bash --login"
# Disable delay
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
setw -g pane-base-index 1 # make pane numbering consistent with windows
set -q -g status-utf8 on # expect UTF-8 (tmux < 2.2)
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
# -------------------
set -g default-terminal "screen-256color"
source-file ~/.config/tmux/themes/tomorrow-night.tmux
source-file ~/.tmux/themes/tomorrow-night.tmux
# Theme Variables
@@ -49,8 +41,7 @@ TMUX_USERNAME_FG="#000000"
TMUX_STATUS_AQUA="#8abeb7"
# Styles
# STYLE_DEFAULT="fg=white,bg=$TMUX_STATUS_BG"
STYLE_DEFAULT="fg=white"
STYLE_DEFAULT="fg=white,bg=$TMUX_STATUS_BG"
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_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
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
set -g status-style $STYLE_DEFAULT
@@ -88,6 +76,7 @@ set -g @prefix_highlight_bg $TMUX_ACTIVE_COLOR
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'"
setw -g mode-keys vi
bind C-a send-prefix
@@ -112,7 +101,7 @@ unbind C-Left
unbind C-Right
# 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
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
# install prefix I
# update prefix U
# update prefix 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/tmux-cpu'
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"
## highlight active window
# setw -g window-style 'bg=#282a2e'
# setw -g window-active-style 'bg=#1d1f21'
setw -g window-style 'bg=#282a2e'
setw -g window-active-style 'bg=#1d1f21'
setw -g pane-active-border-style ''
## highlight activity in status bar
View File
View File
-70
View File
@@ -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/` |
-1
View File
@@ -1 +0,0 @@
@AGENTS.md
+28
View File
@@ -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 -26
View File
@@ -1,29 +1,4 @@
dotfiles
========
Personal dotfiles for macOS and Linux, managed with [dotbot](https://github.com/anishathalye/dotbot).
## 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
```
Some of my dotfiles
Submodule dotbot deleted from 9cd5d073f2
-55
View File
@@ -1,55 +0,0 @@
- defaults:
link:
relink: true
- clean: ['~']
- create:
- ~/.config
- ~/.config/bash
- ~/.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
# 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
-10
View File
@@ -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
-15
View File
@@ -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
-30
View File
@@ -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
}
-50
View File
@@ -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
}
-3
View File
@@ -1,3 +0,0 @@
[ -n "$PS1" ] && source ~/.config/bash/.bash_profile;
[ -f ~/.fzf.bash ] && source ~/.fzf.bash
-26
View File
@@ -1,26 +0,0 @@
[general]
import = [
"~/.config/alacritty/tomorrow-night-gardev.toml"
]
[window]
padding = { x = 16, y = 8 }
dynamic_title = true
[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'
-32
View File
@@ -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'
-142
View File
@@ -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
View File
@@ -1 +0,0 @@
.bash_profile.local
-218
View File
@@ -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"
-8
View File
@@ -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'}")
)
)
-51
View File
@@ -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)
)
-9
View File
@@ -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)}")
)
)
-30
View File
@@ -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)
)
)
-17
View File
@@ -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
)
)
)
)
-99
View File
@@ -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}")
)
)
-31
View File
@@ -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" "")
)
)
)
-35
View File
@@ -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")
)
)
)
-14
View File
@@ -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}")
)
)
)
)
-15
View File
@@ -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}")
)
)
)
)
-98
View File
@@ -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;
}
}
-26
View File
@@ -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
View File
@@ -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
-10
View File
@@ -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
-9
View File
@@ -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
-14
View File
@@ -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
-4
View File
@@ -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}'
-17
View File
@@ -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
-24
View File
@@ -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
-3
View File
@@ -1,3 +0,0 @@
#!/usr/bin/env sh
hyprlock
-3
View File
@@ -1,3 +0,0 @@
#!/usr/bin/env sh
loginctl kill-user $USER
-7
View File
@@ -1,7 +0,0 @@
#!/usr/bin/env sh
if [[ $(playerctl status) == "Playing" ]]; then
playerctl pause
else
playerctl play
fi
-23
View File
@@ -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
-10
View File
@@ -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)
-4
View File
@@ -1,4 +0,0 @@
#!/usr/bin/env sh
systemctl reboot
-3
View File
@@ -1,3 +0,0 @@
#!/usr/bin/env sh
shutdown now
-62
View File
@@ -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)
-46
View File
@@ -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
-78
View File
@@ -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;
}
}
}
}
-28
View File
@@ -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;
}
}
}
-88
View File
@@ -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;
}
-6
View File
@@ -1,6 +0,0 @@
.updates-menu {
background-color: $bg;
border: 3px solid $menu-border;
border-radius: 32px;
padding: 16px 32px;
}
-33
View File
@@ -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
-13
View File
@@ -1,13 +0,0 @@
#################
### AUTOSTART ###
#################
exec-once = eww d
exec-once = ~/.config/hypr/scripts/run-eww.sh
exec-once = swww-daemon --format xrgb &
exec-once = swaync &
exec-once = hypridle &
exec-once = blueman-applet & blueman-tray & nm-applet &

Some files were not shown because too many files have changed in this diff Show More