mirror of
https://github.com/GeorgeSG/dotfiles.git
synced 2026-09-04 00:18:44 +00:00
Compare commits
157
Commits
master
...
2c124d2bee
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2c124d2bee | ||
|
|
26262f2111 | ||
|
|
38206e6f48 | ||
|
|
d80d9d5462 | ||
|
|
ab3f98f506 | ||
|
|
aac8d2a035 | ||
|
|
71be3eb48b | ||
|
|
5f65e96f8e | ||
|
|
b1fcfbb6d4 | ||
|
|
171bc921a7 | ||
|
|
ffb94b7a62 | ||
|
|
df3bdd3207 | ||
|
|
a01ad11ace | ||
|
|
72e2db0780 | ||
|
|
5b0f04c2b6 | ||
|
|
894f00cc5e | ||
|
|
e26ea8a377 | ||
|
|
966b04322e | ||
|
|
d822494616 | ||
|
|
98d91f20c8 | ||
|
|
5f8c77cdc8 | ||
|
|
b60c5602ca | ||
|
|
e192ef81f4 | ||
|
|
8ab8cc5533 | ||
|
|
2f8e433848 | ||
|
|
ad28dee306 | ||
|
|
b7d6c1f529 | ||
|
|
13befac5e6 | ||
|
|
034ba4bc36 | ||
|
|
6d0daf7535 | ||
|
|
f9367d6fe6 | ||
|
|
7f7c5b3786 | ||
|
|
910b4d3846 | ||
|
|
3b1193b66b | ||
|
|
418e882aa7 | ||
|
|
1bfc8feeff | ||
|
|
cb2930a6e3 | ||
|
|
0e5cd1e276 | ||
|
|
097ee2c214 | ||
|
|
9262b92c3a | ||
|
|
ab7a3c7dc7 | ||
|
|
484665b291 | ||
|
|
9a9edb57ff | ||
|
|
091218ca64 | ||
|
|
ffd0b82e21 | ||
|
|
b1024a5363 | ||
|
|
eee5631613 | ||
|
|
58da740702 | ||
|
|
ea1af03c9b | ||
|
|
adb5c180c4 | ||
|
|
7f76c54c73 | ||
|
|
36daa66605 | ||
|
|
c190054553 | ||
|
|
42f87f7acd | ||
|
|
ac77163995 | ||
|
|
ca0a011536 | ||
|
|
0389f91188 | ||
|
|
1ed9a09f1b | ||
|
|
afc4f70fa7 | ||
|
|
a2d1b6d12a | ||
|
|
5d6445d575 | ||
|
|
16d887ec8d | ||
|
|
f2963d17b7 | ||
|
|
e5ed811055 | ||
|
|
58f0b6cb9a | ||
|
|
74bacf3304 | ||
|
|
34c51ecc9b | ||
|
|
73bf405e02 | ||
|
|
63060c52f4 | ||
|
|
af1dd2c0fc | ||
|
|
a1f4d4cb9c | ||
|
|
74a55a2dba | ||
|
|
36bcdccc21 | ||
|
|
7c84d0c507 | ||
|
|
b820d657ee | ||
|
|
ead8c1df03 | ||
|
|
9c7184fb66 | ||
|
|
8e8f35f5e8 | ||
|
|
278ca68338 | ||
|
|
0cc989bbb7 | ||
|
|
47a432293e | ||
|
|
75d563e018 | ||
|
|
376f6578cb | ||
|
|
706f3846ee | ||
|
|
6d248c04c8 | ||
|
|
577a07285b | ||
|
|
22c8a7159b | ||
|
|
d41f162b61 | ||
|
|
567523d4d4 | ||
|
|
bd5fc63166 | ||
|
|
5899f68be2 | ||
|
|
08bdb7655b | ||
|
|
e43d18baf7 | ||
|
|
503f514783 | ||
|
|
27517b46f5 | ||
|
|
fd94ad783b | ||
|
|
f8adb2fdf0 | ||
|
|
a1a8f36931 | ||
|
|
d5694f106e | ||
|
|
096ffe0f7d | ||
|
|
3e062ad036 | ||
|
|
0d0804a420 | ||
|
|
47af8efcfa | ||
|
|
04625d844e | ||
|
|
a76f5f0563 | ||
|
|
5abece9316 | ||
|
|
ade30406d3 | ||
|
|
91ee9a3087 | ||
|
|
d720aa58c6 | ||
|
|
a1c1e65960 | ||
|
|
7161134798 | ||
|
|
d2f1022b42 | ||
|
|
68d9562369 | ||
|
|
56584b3abe | ||
|
|
ade4e7d527 | ||
|
|
75eec352cb | ||
|
|
a120b8747a | ||
|
|
0763dcb89c | ||
|
|
be0c0a8302 | ||
|
|
41043f38bc | ||
|
|
4d7d433253 | ||
|
|
259e90d98d | ||
|
|
c38a23a408 | ||
|
|
8701166c31 | ||
|
|
fe9397b8e9 | ||
|
|
91bb9c57a6 | ||
|
|
a98422f735 | ||
|
|
494cad38eb | ||
|
|
d9a0518046 | ||
|
|
7f75d9ff8f | ||
|
|
99f55332f8 | ||
|
|
1afcfcc7f2 | ||
|
|
5d2960ba25 | ||
|
|
231fcb3d6e | ||
|
|
23f1285b80 | ||
|
|
e9f42c013b | ||
|
|
6ee241f17e | ||
|
|
57d074b3a2 | ||
|
|
8d30d8f42c | ||
|
|
7a355e626d | ||
|
|
d0d8162af6 | ||
|
|
b72530e8f5 | ||
|
|
fe81ac69a7 | ||
|
|
d91faeb4b4 | ||
|
|
bfc3ad92ef | ||
|
|
74abf09eaa | ||
|
|
78c15fbd28 | ||
|
|
25639710e8 | ||
|
|
c30aaee31c | ||
|
|
a92433ea8e | ||
|
|
6948d245e8 | ||
|
|
1fd685683b | ||
|
|
f29af7c047 | ||
|
|
9d7d4f0b29 | ||
|
|
d4a2c81fe0 | ||
|
|
6274ebc261 | ||
|
|
5436636128 |
@@ -1,61 +0,0 @@
|
||||
##### 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"
|
||||
|
||||
# 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 +0,0 @@
|
||||
source ~/.bashrc
|
||||
-54
@@ -1,54 +0,0 @@
|
||||
|
||||
[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"
|
||||
|
||||
# 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
|
||||
+13
-2
@@ -1,3 +1,14 @@
|
||||
.DS_Store
|
||||
.vim/bundle
|
||||
.vim/undodir
|
||||
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
|
||||
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
[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
|
||||
@@ -0,0 +1,70 @@
|
||||
# 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,28 +0,0 @@
|
||||
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,4 +1,29 @@
|
||||
dotfiles
|
||||
========
|
||||
|
||||
Some of my 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
|
||||
```
|
||||
|
||||
Submodule
+1
Submodule dotbot added at 9cd5d073f2
@@ -0,0 +1,57 @@
|
||||
- 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
|
||||
@@ -0,0 +1,10 @@
|
||||
## TODO:
|
||||
## cask_personal using some variable?
|
||||
|
||||
- shell:
|
||||
- stdin: true
|
||||
stdout: true
|
||||
command: >
|
||||
if [ "$(uname)" = "Darwin" ]; then
|
||||
brew bundle --file ./macos/Caskfile.personal
|
||||
fi
|
||||
@@ -0,0 +1,15 @@
|
||||
- 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
|
||||
Executable
+30
@@ -0,0 +1,30 @@
|
||||
#!/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
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
#!/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
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
[ -n "$PS1" ] && source ~/.config/bash/.bash_profile;
|
||||
|
||||
[ -f ~/.fzf.bash ] && source ~/.fzf.bash
|
||||
@@ -0,0 +1,27 @@
|
||||
[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 }
|
||||
@@ -0,0 +1,34 @@
|
||||
# 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'
|
||||
@@ -0,0 +1,32 @@
|
||||
# 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'
|
||||
@@ -0,0 +1,142 @@
|
||||
##### 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
|
||||
@@ -0,0 +1 @@
|
||||
.bash_profile.local
|
||||
Submodule
+1
Submodule home/config/bash/bash-git-prompt added at 622e337d11
Executable → Regular
+21
-18
@@ -9,6 +9,13 @@ 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
|
||||
|
||||
@@ -37,20 +44,11 @@ HISTCONTROL=ignoreboth
|
||||
# Aliases #
|
||||
######################
|
||||
|
||||
# enable color support of ls and also add handy aliases
|
||||
# enable color support of ls
|
||||
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'
|
||||
|
||||
@@ -67,17 +65,22 @@ export BASH_SILENCE_DEPRECATION_WARNING=1
|
||||
# Sources & exports #
|
||||
######################
|
||||
|
||||
if [ -f ~/.bash_aliases ]; then
|
||||
source ~/.bash_aliases
|
||||
if [ -f ~/.config/.aliases ]; then
|
||||
source ~/.config/.aliases
|
||||
fi
|
||||
|
||||
if [ -f ~/.bashrc_local ]; then
|
||||
source ~/.bashrc_local
|
||||
if [ -f ~/.config/.aliases.local ]; then
|
||||
. ~/.config/.aliases.local
|
||||
fi
|
||||
|
||||
|
||||
if [ -f ~/.config/bash/.bash_profile.local ]; then
|
||||
source ~/.config/bash/.bash_profile.local
|
||||
fi
|
||||
|
||||
# bash-git prompt
|
||||
if [ -f ~/.bash-git-prompt/gitprompt.sh ]; then
|
||||
source ~/.bash-git-prompt/gitprompt.sh
|
||||
if [ -f ~/.config/bash/bash-git-prompt/gitprompt.sh ]; then
|
||||
source ~/.config/bash/bash-git-prompt/gitprompt.sh
|
||||
fi
|
||||
|
||||
# enable programmable completion features (you don't need to enable
|
||||
@@ -88,6 +91,6 @@ if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
|
||||
fi
|
||||
|
||||
# Git completion
|
||||
if [ -f ~/.git-completion.bash ]; then
|
||||
source ~/.git-completion.bash
|
||||
if [ -f ~/.config/bash/git-completion.bash ]; then
|
||||
source ~/.config/bash/git-completion.bash
|
||||
fi
|
||||
@@ -0,0 +1,218 @@
|
||||
#? 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"
|
||||
@@ -0,0 +1,8 @@
|
||||
(deflisten window :initial "..." "./lib/get-active-window.sh")
|
||||
|
||||
(defwidget active-window []
|
||||
(box
|
||||
:halign "center"
|
||||
(label :class "bar-group" :text "${window?: 'none'}")
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,51 @@
|
||||
; (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)
|
||||
)
|
||||
@@ -0,0 +1,9 @@
|
||||
; 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)}")
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,30 @@
|
||||
(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)
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,17 @@
|
||||
(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
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,99 @@
|
||||
(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}")
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,31 @@
|
||||
(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" "")
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,35 @@
|
||||
(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")
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,14 @@
|
||||
(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}")
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,15 @@
|
||||
(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}")
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,98 @@
|
||||
$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;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
(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)
|
||||
; )
|
||||
; )
|
||||
; )
|
||||
; )
|
||||
@@ -0,0 +1 @@
|
||||
secrets.py
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
#!/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
|
||||
Executable
+10
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
case $1 in
|
||||
up)
|
||||
ddcutil -d 1 setvcp 10 $(($2 + 10))
|
||||
;;
|
||||
down)
|
||||
ddcutil -d 1 setvcp 10 $(($2 - 10))
|
||||
;;
|
||||
esac
|
||||
Executable
+9
@@ -0,0 +1,9 @@
|
||||
#!/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
|
||||
Executable
+14
@@ -0,0 +1,14 @@
|
||||
#!/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
|
||||
Executable
+4
@@ -0,0 +1,4 @@
|
||||
#!/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}'
|
||||
Executable
+6
@@ -0,0 +1,6 @@
|
||||
##!/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}'
|
||||
Executable
+17
@@ -0,0 +1,17 @@
|
||||
##!/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
|
||||
Executable
+24
@@ -0,0 +1,24 @@
|
||||
#!/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
|
||||
Executable
+3
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
hyprlock
|
||||
Executable
+3
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
loginctl kill-user $USER
|
||||
Executable
+7
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
if [[ $(playerctl status) == "Playing" ]]; then
|
||||
playerctl pause
|
||||
else
|
||||
playerctl play
|
||||
fi
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
#!/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
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
from hyprsocket import run_on_line
|
||||
|
||||
|
||||
def get_kb_layout(line):
|
||||
print(line)
|
||||
|
||||
|
||||
run_on_line(get_kb_layout)
|
||||
@@ -0,0 +1,24 @@
|
||||
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)
|
||||
Executable
+4
@@ -0,0 +1,4 @@
|
||||
|
||||
#!/usr/bin/env sh
|
||||
|
||||
systemctl reboot
|
||||
Executable
+3
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
shutdown now
|
||||
Executable
+62
@@ -0,0 +1,62 @@
|
||||
#!/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)
|
||||
Executable
+46
@@ -0,0 +1,46 @@
|
||||
#!/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
|
||||
@@ -0,0 +1,78 @@
|
||||
|
||||
.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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
.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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
$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;
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
.updates-menu {
|
||||
background-color: $bg;
|
||||
border: 3px solid $menu-border;
|
||||
border-radius: 32px;
|
||||
padding: 16px 32px;
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
# 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
|
||||
@@ -0,0 +1,136 @@
|
||||
# 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).
|
||||
@@ -0,0 +1,13 @@
|
||||
#################
|
||||
### 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 &
|
||||
@@ -0,0 +1,129 @@
|
||||
####################
|
||||
### KEYBINDINGSS ###
|
||||
####################
|
||||
|
||||
$mainMod = SUPER
|
||||
|
||||
$terminal = alacritty
|
||||
$fileManager = nautilus
|
||||
$menu = rofi -show combi -combi-modes "window,run,ssh" -modes combi
|
||||
$emojiMenu = rofi -modi emoji -show emoji
|
||||
|
||||
bind = $mainMod, R, exec, ~/.config/hypr/scripts/run-eww.sh
|
||||
|
||||
bind = $mainMod, E, exec, $fileManager # E - file manager
|
||||
bind = $mainMod, F, fullscreen # F - fullscreen
|
||||
bind = $mainMod, D, togglesplit, # D - toggle split
|
||||
bind = $mainMod, M, exit # M - exit
|
||||
bind = $mainMod, Q, killactive # Q - kill active window
|
||||
bind = alt, Q, killactive # alt + Q - kill active window
|
||||
bind = $mainMod, S, swapactiveworkspaces, 0 1 # S - swap monitor workspaces
|
||||
bind = $mainMod, T, exec, $terminal # T - terminal
|
||||
bind = $mainMod, V, togglefloating # V - toggle floatin
|
||||
|
||||
bind = $mainMod shift, L, exec, hyprlock # super + {shift + L - lock screen
|
||||
|
||||
bind = $mainMod, F1, exec, ~/.config/hypr/scripts/game-mode.sh # F1 - game mode
|
||||
bind = $mainMod, F2, exec, eww open --toggle monitor-bump # F2 - monitor bump
|
||||
|
||||
# rudimentary Alt+Tab and Alt+Shift+Tab
|
||||
bind = alt, tab, cyclenext
|
||||
bind = alt shift, tab, cyclenext, prev
|
||||
|
||||
# rcmd emulation
|
||||
$rcmd = SUPER ALT
|
||||
bind = $rcmd, f, focuswindow, firefox
|
||||
bind = $rcmd, c, focuswindow, class:Code
|
||||
bind = $rcmd, a, focuswindow, class:Alacritty
|
||||
bind = $rcmd, t, focuswindow, telegram
|
||||
bind = $rcmd, d, focuswindow, class:Todoist
|
||||
|
||||
bind = alt, space, exec, $menu # alt+space - rofi a la spotlight
|
||||
bind = alt super shift, e, exec, $emojiMenu # alt+super+shift+e - emoji menu
|
||||
bind = $mainMod, code:49, focuscurrentorlast
|
||||
|
||||
bind = ctrl shift super, N, exec, swaync-client --toggle-panel # N - toggle swaync panel
|
||||
|
||||
# eww
|
||||
bind = ctrl shift super, Q, exec, eww open --toggle power-menu
|
||||
bind = ctrl shift super, M, exec, eww open --toggle media-menu
|
||||
bind = ctrl shift super, R, exec, ~/.config/hypr/scripts/run-apps.sh
|
||||
bind = ctrl shift super, W, exec, ~/Scripts/wallpaper # change wallpapers
|
||||
|
||||
# screenshots
|
||||
# TODO: consider switching away to different shortcuts
|
||||
bind = alt shift, 3, exec, ~/.config/hypr/scripts/screenshots/capture-screen.sh
|
||||
bind = ctrl alt shift, 3, exec, ~/.config/hypr/scripts/screenshots/copy-screen.sh
|
||||
bind = alt shift, 4, exec, ~/.config/hypr/scripts/screenshots/capture-area.sh
|
||||
bind = ctrl alt shift, 4, exec, ~/.config/hypr/scripts/screenshots/copy-area.sh
|
||||
|
||||
|
||||
### Window Management
|
||||
|
||||
# Move focus with mainMod + hjkl
|
||||
bind = $mainMod, h, movefocus, l
|
||||
bind = $mainMod, l, movefocus, r
|
||||
bind = $mainMod, k, movefocus, u
|
||||
bind = $mainMod, j, movefocus, d
|
||||
|
||||
# move to prev / next monitor
|
||||
bind = ctrl alt super, left, movewindow, mon:+1
|
||||
bind = ctrl alt super, right, movewindow, mon:-1
|
||||
|
||||
# resize with ctrl super shift hjkl
|
||||
bind = $mainMod ctrl shift, L, resizeactive, 30 0
|
||||
bind = $mainMod ctrl shift, H, resizeactive, -30 0
|
||||
bind = $mainMod ctrl shift, K, resizeactive, 0 30
|
||||
bind = $mainMod ctrl shift, J, resizeactive, 0 -30
|
||||
|
||||
# move with ctrl super hjkl
|
||||
bind = ctrl super, H, movewindow, l
|
||||
bind = ctrl super, L, movewindow, r
|
||||
bind = ctrl super, K, movewindow, u
|
||||
bind = ctrl super, J, movewindow, d
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
bind = $mainMod, 1, workspace, 1
|
||||
bind = $mainMod, 2, workspace, 2
|
||||
bind = $mainMod, 3, workspace, 3
|
||||
bind = $mainMod, 4, workspace, 4
|
||||
bind = $mainMod, 5, workspace, 5
|
||||
bind = $mainMod, 6, workspace, 6
|
||||
bind = $mainMod, 7, workspace, 7
|
||||
bind = $mainMod, 8, workspace, 8
|
||||
bind = $mainMod, 9, workspace, 9
|
||||
bind = $mainMod, 0, workspace, 10
|
||||
|
||||
# TODO: disabled due to incompatibility with screenshots
|
||||
# Move active window to a workspace with ctrl + shift + alt + [0-9]
|
||||
# bind = ctrl shift alt, 1, movetoworkspace, 1
|
||||
# bind = ctrl shift alt, 2, movetoworkspace, 2
|
||||
# bind = ctrl shift alt, 3, movetoworkspace, 3
|
||||
# bind = ctrl shift alt, 4, movetoworkspace, 4
|
||||
# bind = ctrl shift alt, 5, movetoworkspace, 5
|
||||
# bind = ctrl shift alt, 6, movetoworkspace, 6
|
||||
# bind = ctrl shift alt, 7, movetoworkspace, 7
|
||||
# bind = ctrl shift alt, 8, movetoworkspace, 8
|
||||
# bind = ctrl shift alt, 9, movetoworkspace, 9
|
||||
# bind = ctrl shift alt, 0, movetoworkspace, 10
|
||||
|
||||
# go to next/prev workspace with ctrl alt hj
|
||||
bind = ctrl alt, H, workspace, -1
|
||||
bind = ctrl alt, L, workspace, +1
|
||||
|
||||
# move to next/prev workspace with ctrl alt shift hj
|
||||
bind = ctrl alt shift, H, movetoworkspace, -1
|
||||
bind = ctrl alt shift, L, movetoworkspace, +1
|
||||
|
||||
# Example special workspace (scratchpad)
|
||||
# bind = $mainMod, S, togglespecialworkspace, magic
|
||||
# bind = $mainMod shift, S, movetoworkspace, special:magic
|
||||
|
||||
### Mouse
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
bind = $mainMod, mouse_down, workspace, e+1
|
||||
bind = $mainMod, mouse_up, workspace, e-1
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = $mainMod, mouse:272, movewindow
|
||||
bindm = $mainMod, mouse:273, resizewindow
|
||||
@@ -0,0 +1,26 @@
|
||||
#############################
|
||||
### ENVIRONMENT VARIABLES ###
|
||||
#############################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Environment-variables/
|
||||
|
||||
env = XCURSOR_SIZE,24
|
||||
env = HYPRCURSOR_SIZE,24
|
||||
|
||||
env = GBM_BACKEND,nvidia-drm
|
||||
env = GDK_BACKEND,wayland,x11
|
||||
env = GDK_SCALE, 1
|
||||
env = LIBVA_DRIVER_NAME,nvidia
|
||||
env = QT_AUTO_SCREEN_SCALE_FACTOR, 1
|
||||
env = QT_QPA_PLATFORM,wayland;xcb
|
||||
env = QT_QPA_PLATFORMTHEME,qt5ct
|
||||
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
|
||||
env = XDG_CURRENT_DESKTOP,Hyprland
|
||||
env = XDG_SESSION_DESKTOP,Hyprland
|
||||
env = XDG_SESSION_TYPE,wayland
|
||||
env = __GLX_VENDOR_LIBRARY_NAME,nvidia
|
||||
|
||||
exec = gsettings set org.gnome.desktop.interface gtk-theme 'adw-gtk3-dark'
|
||||
exec = gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' # for GTK4 apps
|
||||
|
||||
env = QT_QPA_PLATFORMTHEME,qt6ct # for Qt apps
|
||||
@@ -0,0 +1,16 @@
|
||||
# See: https://github.com/jacobrreed/dotfiles/blob/master/.config/hypr/hypridle.conf
|
||||
|
||||
general {
|
||||
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
|
||||
before_sleep_cmd = loginctl lock-session # lock before suspend.
|
||||
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
|
||||
unlock_cmd = notify-send "unlock!" # same as above, but unlock
|
||||
|
||||
# ignore_dbus_inhibit = false # whether to ignore dbus-sent idle-inhibit requests (used by e.g. firefox or steam)
|
||||
# ignore_systemd_inhibit = false # whether to ignore systemd-inhibit --what=idle inhibitors
|
||||
}
|
||||
|
||||
listener {
|
||||
timeout = 300 # 5 min
|
||||
on-timeout = loginctl lock-session # lock screen when timeout has passed
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
### MONITORS
|
||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
monitor=DP-1, 3840x1600@144, 0x0, 1, vrr, 1
|
||||
monitor=DP-2, 2560x1440@144, 0x-1440, 1
|
||||
|
||||
workspace = 1, monitor:DP-1
|
||||
workspace = 2, monitor:DP-1
|
||||
workspace = 3, monitor:DP-2
|
||||
workspace = 4, monitor:DP-2
|
||||
|
||||
|
||||
source = ~/.config/hypr/autorun.conf
|
||||
source = ~/.config/hypr/env.conf
|
||||
source = ~/.config/hypr/style.conf
|
||||
source = ~/.config/hypr/input.conf
|
||||
source = ~/.config/hypr/binds.conf
|
||||
source = ~/.config/hypr/rules.conf
|
||||
@@ -0,0 +1,87 @@
|
||||
|
||||
background {
|
||||
monitor = DP-2
|
||||
path = $HOME/Pictures/lock-4.png # only png supported for now
|
||||
blur_passes = 3
|
||||
blur_size = 2
|
||||
brightness = 0.8
|
||||
}
|
||||
|
||||
background {
|
||||
monitor = DP-1
|
||||
path = $HOME/Pictures/lock-3.png # only png supported for now
|
||||
blur_passes = 3
|
||||
blur_size = 2
|
||||
brightness = 0.8
|
||||
}
|
||||
|
||||
input-field {
|
||||
monitor =
|
||||
size = 200, 50
|
||||
outline_thickness = 3
|
||||
dots_size = 0.15 # Scale of input-field height, 0.2 - 0.8
|
||||
dots_spacing = 0.35 # Scale of dots' absolute size, 0.0 - 1.0
|
||||
dots_center = true
|
||||
dots_rounding = -1 # -1 default circle, -2 follow input-field rounding
|
||||
outer_color = rgb(cccccc)
|
||||
inner_color = rgb(FFFFFF)
|
||||
font_color = rgb(10, 10, 10)
|
||||
fade_on_empty = true
|
||||
fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered.
|
||||
placeholder_text = enter password # Text rendered in the input box when it's empty.
|
||||
hide_input = false
|
||||
rounding = -1 # -1 means complete rounding (circle/oval)
|
||||
check_color = rgb(204, 136, 34)
|
||||
fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color
|
||||
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i> # can be set to empty
|
||||
fail_transition = 300 # transition time in ms between normal outer_color and fail_color
|
||||
capslock_color = -1
|
||||
numlock_color = -1
|
||||
bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above)
|
||||
invert_numlock = false # change color if numlock is off
|
||||
swap_font_color = false # see below
|
||||
position = 0, -180
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
label {
|
||||
monitor =
|
||||
#clock
|
||||
text = cmd[update:1000] echo "$TIME"
|
||||
color = rgba(200, 200, 200, 1.0)
|
||||
font_size = 55
|
||||
font_family = CaskaydiaCode Nerd Font Bold
|
||||
position = -100, -40
|
||||
halign = right
|
||||
valign = bottom
|
||||
shadow_passes = 5
|
||||
shadow_size = 10
|
||||
}
|
||||
|
||||
label {
|
||||
monitor =
|
||||
text = $USER
|
||||
color = rgba(200, 200, 200, 1.0)
|
||||
font_size = 20
|
||||
font_family = FiraCode Nerd Font Bold
|
||||
position = -100, 160
|
||||
halign = right
|
||||
valign = bottom
|
||||
shadow_passes = 5
|
||||
shadow_size = 10
|
||||
}
|
||||
|
||||
image {
|
||||
monitor =
|
||||
path = $HOME/Pictures/avatar/avatar-sq-800.png
|
||||
size = 200 # lesser side if not 1:1 ratio
|
||||
rounding = -1 # negative values mean circle
|
||||
border_size = 4
|
||||
border_color = rgb(221, 221, 221)
|
||||
rotate = 0 # degrees, counter-clockwise
|
||||
reload_time = -1 # seconds between reloading, 0 to reload with SIGUSR2
|
||||
position = 0, 0
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
#############
|
||||
### INPUT ###
|
||||
#############
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#input
|
||||
input {
|
||||
kb_layout = us,bg
|
||||
kb_variant = ,phonetic
|
||||
kb_model =
|
||||
kb_options = caps:escape,grp:ctrl_space_toggle
|
||||
kb_rules =
|
||||
|
||||
follow_mouse = 1
|
||||
|
||||
sensitivity = 0.2 # -1.0 - 1.0, 0 means no modification.
|
||||
accel_profile = flat
|
||||
|
||||
touchpad {
|
||||
natural_scroll = false
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
||||
gestures {
|
||||
workspace_swipe = false
|
||||
}
|
||||
|
||||
cursor {
|
||||
no_hardware_cursors = true
|
||||
default_monitor = DP-1
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
### Window rules
|
||||
|
||||
windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.
|
||||
|
||||
windowrulev2 = workspace 1, class:(firefox)
|
||||
windowrulev2 = workspace 3, class:(org.telegram.desktop)
|
||||
windowrulev2 = workspace 3, class:(Todoist)
|
||||
windowrulev2 = workspace 3, class:(discord)
|
||||
windowrulev2 = workspace 2, class:(steam)
|
||||
windowrulev2 = float, class:(steam), title:(Friends List)
|
||||
windowrulev2 = float, class:(steam), title:(Steam Settings)
|
||||
|
||||
# blur eww windows
|
||||
layerrule = blur, eww-overlay
|
||||
layerrule = ignorezero, eww-overlay
|
||||
layerrule = blur, power-menu
|
||||
layerrule = ignorezero, power-menu
|
||||
layerrule = blur, media-menu
|
||||
layerrule = ignorezero, media-menu
|
||||
layerrule = blur, updates-menu
|
||||
layerrule = ignorezero, updates-menu
|
||||
Executable
+15
@@ -0,0 +1,15 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}')
|
||||
if [ "$HYPRGAMEMODE" = 1 ] ; then
|
||||
hyprctl --batch "\
|
||||
keyword animations:enabled 0;\
|
||||
keyword decoration:drop_shadow 0;\
|
||||
keyword decoration:blur:enabled 0;\
|
||||
keyword general:gaps_in 0;\
|
||||
keyword general:gaps_out 0;\
|
||||
keyword general:border_size 1;\
|
||||
keyword decoration:rounding 0"
|
||||
exit
|
||||
fi
|
||||
hyprctl reload
|
||||
Executable
+8
@@ -0,0 +1,8 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
hyprctl dispatch -- exec '[workspace 1]' firefox &
|
||||
hyprctl dispatch -- exec '[workspace 3 silent]' telegram-desktop &
|
||||
sleep 1
|
||||
hyprctl dispatch -- exec '[workspace 3 silent]' todoist &
|
||||
sleep 1
|
||||
hyprctl dispatch -- exec '[workspace 3 silent]' alacritty -e btop &
|
||||
Executable
+37
@@ -0,0 +1,37 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
function reload_eww() {
|
||||
monitor_count=$(hyprctl monitors -j | jq length)
|
||||
monitor_names_str=$(hyprctl monitors -j | jq -r '.[].name')
|
||||
monitor_names=(${monitor_names_str// / })
|
||||
|
||||
eww close-all
|
||||
sleep 1
|
||||
|
||||
if [[ $monitor_count == 2 ]]; then
|
||||
if [[ ${monitor_names[0]} == "DP-1" ]]; then
|
||||
eww open bar --id bar1 --arg monitor=0 --arg monitor-workspaces="[1,2]"
|
||||
eww open bar --id bar2 --arg monitor=1 --arg monitor-workspaces="[3,4]"
|
||||
eww open monitor-bump --arg monitor=1
|
||||
elif [[ ${monitor_names[0]} == "DP-2" ]]; then
|
||||
eww open bar --id bar2 --arg monitor=0 --arg monitor-workspaces="[3,4]"
|
||||
eww open bar --id bar1 --arg monitor=1 --arg monitor-workspaces="[1,2]"
|
||||
eww open monitor-bump --arg monitor=0
|
||||
fi
|
||||
|
||||
elif [[ ${monitor_names[0]} == "DP-1" ]]; then
|
||||
eww open bar --id bar1 --arg monitor=0 --arg monitor-workspaces="[1,2,3,4]"
|
||||
elif [[ ${monitor_names[0]} == "DP-2" ]]; then
|
||||
eww open bar --id bar1 --arg monitor=0 --arg monitor-workspaces="[1,2,3,4]"
|
||||
eww open monitor-bump --arg monitor=0
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
reload_eww
|
||||
|
||||
socat -u UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock - | while read -r line; do
|
||||
if [[ $line =~ "monitorremoved" || $line =~ "monitoradded" ]]; then
|
||||
reload_eww
|
||||
fi
|
||||
done
|
||||
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
grim -g "$(slurp -d)" "$HOME/Pictures/Screenshots/$(date).png"
|
||||
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
grim -g "$(slurp -o)" "$HOME/Pictures/Screenshots/$(date).png"
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
grim -g "$(slurp -d)" - | wl-copy
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
grim -g "$(slurp -o)" - | wl-copy
|
||||
@@ -0,0 +1,71 @@
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#general
|
||||
general {
|
||||
gaps_in = 4
|
||||
gaps_out = 4
|
||||
|
||||
border_size = 2
|
||||
|
||||
col.active_border = rgba(ca9ee6ff) rgba(f2d5cfff) 45deg
|
||||
col.inactive_border = rgba(b4befecc) rgba(6c7086cc) 45deg
|
||||
|
||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = true
|
||||
|
||||
allow_tearing = false
|
||||
layout = dwindle
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
||||
decoration {
|
||||
rounding = 10
|
||||
|
||||
# Change transparency of focused and unfocused windows
|
||||
active_opacity = 1.0
|
||||
inactive_opacity = 1.0
|
||||
|
||||
drop_shadow = false
|
||||
# shadow_range = 4
|
||||
# shadow_render_power = 3
|
||||
# col.shadow = rgba(1a1a1aee)
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#blur
|
||||
blur {
|
||||
enabled = yes
|
||||
size = 6
|
||||
passes = 3
|
||||
new_optimizations = on
|
||||
ignore_opacity = on
|
||||
xray = false
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#animations
|
||||
animations {
|
||||
enabled = true
|
||||
|
||||
# Default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||
|
||||
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
|
||||
|
||||
animation = windows, 1, 7, myBezier
|
||||
animation = windowsOut, 1, 7, default, popin 80%
|
||||
animation = border, 1, 10, default
|
||||
animation = borderangle, 1, 8, default
|
||||
animation = fade, 1, 7, default
|
||||
animation = workspaces, 1, 6, default
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Dwindle-Layout/
|
||||
dwindle {
|
||||
pseudotile = true
|
||||
preserve_split = true
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||
misc {
|
||||
force_default_wallpaper = 0
|
||||
disable_hyprland_logo = true
|
||||
animate_manual_resizes = true
|
||||
mouse_move_focuses_monitor = true
|
||||
}
|
||||
@@ -0,0 +1,219 @@
|
||||
configuration {
|
||||
font: "Fira Code 10";
|
||||
show-icons: true;
|
||||
display-combi: "";
|
||||
dpi: 120;
|
||||
hover-select: true;
|
||||
/* drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";*/
|
||||
/* modes: "window,drun,run,ssh"; */
|
||||
/* location: 0;*/
|
||||
/* yoffset: 0;*/
|
||||
/* xoffset: 0;*/
|
||||
/* fixed-num-lines: true;*/
|
||||
/* terminal: "rofi-sensible-terminal";*/
|
||||
/* ssh-client: "ssh";*/
|
||||
/* ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]";*/
|
||||
/* run-command: "{cmd}";*/
|
||||
/* run-list-command: "";*/
|
||||
/* run-shell-command: "{terminal} -e {cmd}";*/
|
||||
/* window-command: "wmctrl -i -R {window}";*/
|
||||
/* window-match-fields: "all";*/
|
||||
/* icon-theme: ;*/
|
||||
/* drun-match-fields: "name,generic,exec,categories,keywords";*/
|
||||
/* drun-categories: ;*/
|
||||
/* drun-show-actions: false;*/
|
||||
/* drun-url-launcher: "xdg-open";*/
|
||||
/* disable-history: false;*/
|
||||
/* ignored-prefixes: "";*/
|
||||
/* sort: false;*/
|
||||
/* sorting-method: "normal";*/
|
||||
/* case-sensitive: false;*/
|
||||
/* cycle: true;*/
|
||||
/* sidebar-mode: false;*/
|
||||
/* eh: 1;*/
|
||||
/* auto-select: false;*/
|
||||
/* parse-hosts: false;*/
|
||||
/* parse-known-hosts: true;*/
|
||||
/* combi-modes: "window,run";*/
|
||||
/* matching: "normal";*/
|
||||
/* tokenize: true;*/
|
||||
/* m: "-5";*/
|
||||
/* filter: ;*/
|
||||
/* dpi: -1;*/
|
||||
/* threads: 0;*/
|
||||
/* scroll-method: 0;*/
|
||||
/* window-format: "{w} {c} {t}";*/
|
||||
/* click-to-exit: true;*/
|
||||
/* global-kb: false;*/
|
||||
/* max-history-size: 25;*/
|
||||
/* combi-hide-mode-prefix: false;*/
|
||||
/* combi-display-format: "{mode} {text}";*/
|
||||
/* matching-negate-char: '-' /* unsupported */;*/
|
||||
/* cache-dir: ;*/
|
||||
/* window-thumbnail: false;*/
|
||||
/* drun-use-desktop-cache: false;*/
|
||||
/* drun-reload-desktop-cache: false;*/
|
||||
/* normalize-match: false;*/
|
||||
/* steal-focus: false;*/
|
||||
/* application-fallback-icon: ;*/
|
||||
/* refilter-timeout-limit: 300;*/
|
||||
/* xserver-i300-workaround: false;*/
|
||||
/* completer-mode: "recursivebrowser";*/
|
||||
/* pid: "/run/user/1000/rofi.pid";*/
|
||||
/* display-window: ;*/
|
||||
/* display-run: ;*/
|
||||
/* display-ssh: ;*/
|
||||
/* display-drun: ;*/
|
||||
/* display-combi: ;*/
|
||||
/* display-keys: ;*/
|
||||
/* display-filebrowser: ;*/
|
||||
/* display-recursivebrowser: ;*/
|
||||
/* kb-primary-paste: "Control+V,Shift+Insert";*/
|
||||
/* kb-secondary-paste: "Control+v,Insert";*/
|
||||
/* kb-secondary-copy: "Control+c";*/
|
||||
/* kb-clear-line: "Control+w";*/
|
||||
/* kb-move-front: "Control+a";*/
|
||||
/* kb-move-end: "Control+e";*/
|
||||
/* kb-move-word-back: "Alt+b,Control+Left";*/
|
||||
/* kb-move-word-forward: "Alt+f,Control+Right";*/
|
||||
/* kb-move-char-back: "Left,Control+b";*/
|
||||
/* kb-move-char-forward: "Right,Control+f";*/
|
||||
/* kb-remove-word-back: "Control+Alt+h,Control+BackSpace";*/
|
||||
/* kb-remove-word-forward: "Control+Alt+d";*/
|
||||
/* kb-remove-char-forward: "Delete,Control+d";*/
|
||||
/* kb-remove-char-back: "BackSpace,Shift+BackSpace,Control+h";*/
|
||||
/* kb-remove-to-eol: "Control+k";*/
|
||||
/* kb-remove-to-sol: "Control+u";*/
|
||||
/* kb-accept-entry: "Control+j,Control+m,Return,KP_Enter";*/
|
||||
/* kb-accept-custom: "Control+Return";*/
|
||||
/* kb-accept-custom-alt: "Control+Shift+Return";*/
|
||||
/* kb-accept-alt: "Shift+Return";*/
|
||||
/* kb-delete-entry: "Shift+Delete";*/
|
||||
/* kb-mode-next: "Shift+Right,Control+Tab";*/
|
||||
/* kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";*/
|
||||
/* kb-mode-complete: "Control+l";*/
|
||||
/* kb-row-left: "Control+Page_Up";*/
|
||||
/* kb-row-right: "Control+Page_Down";*/
|
||||
/* kb-row-up: "Up,Control+p";*/
|
||||
/* kb-row-down: "Down,Control+n";*/
|
||||
/* kb-row-tab: "";*/
|
||||
/* kb-element-next: "Tab";*/
|
||||
/* kb-element-prev: "ISO_Left_Tab";*/
|
||||
/* kb-page-prev: "Page_Up";*/
|
||||
/* kb-page-next: "Page_Down";*/
|
||||
/* kb-row-first: "Home,KP_Home";*/
|
||||
/* kb-row-last: "End,KP_End";*/
|
||||
/* kb-row-select: "Control+space";*/
|
||||
/* kb-screenshot: "Alt+S";*/
|
||||
/* kb-ellipsize: "Alt+period";*/
|
||||
/* kb-toggle-case-sensitivity: "grave,dead_grave";*/
|
||||
/* kb-toggle-sort: "Alt+grave";*/
|
||||
/* kb-cancel: "Escape,Control+g,Control+bracketleft";*/
|
||||
/* kb-custom-1: "Alt+1";*/
|
||||
/* kb-custom-2: "Alt+2";*/
|
||||
/* kb-custom-3: "Alt+3";*/
|
||||
/* kb-custom-4: "Alt+4";*/
|
||||
/* kb-custom-5: "Alt+5";*/
|
||||
/* kb-custom-6: "Alt+6";*/
|
||||
/* kb-custom-7: "Alt+7";*/
|
||||
/* kb-custom-8: "Alt+8";*/
|
||||
/* kb-custom-9: "Alt+9";*/
|
||||
/* kb-custom-10: "Alt+0";*/
|
||||
/* kb-custom-11: "Alt+exclam";*/
|
||||
/* kb-custom-12: "Alt+at";*/
|
||||
/* kb-custom-13: "Alt+numbersign";*/
|
||||
/* kb-custom-14: "Alt+dollar";*/
|
||||
/* kb-custom-15: "Alt+percent";*/
|
||||
/* kb-custom-16: "Alt+dead_circumflex";*/
|
||||
/* kb-custom-17: "Alt+ampersand";*/
|
||||
/* kb-custom-18: "Alt+asterisk";*/
|
||||
/* kb-custom-19: "Alt+parenleft";*/
|
||||
kb-select-1: "Ctrl+Alt+1";
|
||||
kb-select-2: "Ctrl+Alt+2";
|
||||
kb-select-3: "Ctrl+Alt+3";
|
||||
kb-select-4: "Ctrl+Alt+4";
|
||||
kb-select-5: "Ctrl+Alt+5";
|
||||
kb-select-6: "Ctrl+Alt+6";
|
||||
kb-select-7: "Ctrl+Alt+7";
|
||||
kb-select-8: "Ctrl+Alt+8";
|
||||
kb-select-9: "Ctrl+Alt+9";
|
||||
kb-select-10: "Ctrl+Alt+0";
|
||||
/* kb-entry-history-up: "Control+Up";*/
|
||||
/* kb-entry-history-down: "Control+Down";*/
|
||||
/* ml-row-left: "ScrollLeft";*/
|
||||
/* ml-row-right: "ScrollRight";*/
|
||||
/* ml-row-up: "ScrollUp";*/
|
||||
/* ml-row-down: "ScrollDown";*/
|
||||
/* me-select-entry: "MousePrimary";*/
|
||||
/* me-accept-entry: "MouseDPrimary";*/
|
||||
/* me-accept-custom: "Control+MouseDPrimary";*/
|
||||
timeout {
|
||||
action: "kb-cancel";
|
||||
delay: 0;
|
||||
}
|
||||
filebrowser {
|
||||
directories-first: true;
|
||||
sorting-method: "name";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
* {
|
||||
selected-normal-foreground: rgba ( 249, 249, 249, 100 % );
|
||||
foreground: rgba ( 196, 203, 212, 100 % );
|
||||
normal-foreground: @foreground;
|
||||
alternate-normal-background: @background;
|
||||
red: rgba ( 220, 50, 47, 100 % );
|
||||
selected-urgent-foreground: rgba ( 249, 249, 249, 100 % );
|
||||
blue: rgba ( 38, 139, 210, 100 % );
|
||||
urgent-foreground: rgba ( 204, 102, 102, 100 % );
|
||||
alternate-urgent-background: rgba ( 75, 81, 96, 90 % );
|
||||
active-foreground: rgba ( 101, 172, 255, 100 % );
|
||||
lightbg: rgba ( 238, 232, 213, 100 % );
|
||||
selected-active-foreground: rgba ( 249, 249, 249, 100 % );
|
||||
alternate-active-background: rgba ( 75, 81, 96, 89 % );
|
||||
background: rgba ( 45, 48, 59, 95 % );
|
||||
alternate-normal-foreground: @foreground;
|
||||
normal-background: @background;
|
||||
lightfg: rgba ( 88, 104, 117, 100 % );
|
||||
selected-normal-background: rgba ( 64, 132, 214, 100 % );
|
||||
border-color: rgba ( 124, 131, 137, 100 % );
|
||||
spacing: 2;
|
||||
separatorcolor: rgba ( 0, 0, 0, 0 % );
|
||||
urgent-background: rgba ( 29, 31, 33, 17 % );
|
||||
selected-urgent-background: rgba ( 165, 66, 66, 100 % );
|
||||
alternate-urgent-foreground: @urgent-foreground;
|
||||
background-color: rgba ( 0, 0, 0, 0 % );
|
||||
alternate-active-foreground: @active-foreground;
|
||||
active-background: rgba ( 29, 31, 33, 17 % );
|
||||
selected-active-background: rgba ( 68, 145, 237, 100 % );
|
||||
}
|
||||
window {
|
||||
width: 25%;
|
||||
border-radius: 8;
|
||||
background-color: @background;
|
||||
border: 1;
|
||||
padding: 16;
|
||||
}
|
||||
|
||||
|
||||
textbox-prompt-colon {
|
||||
display: none;
|
||||
str: "";
|
||||
}
|
||||
|
||||
mainbox {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
listview {
|
||||
padding: 16px 0;
|
||||
}
|
||||
|
||||
element {
|
||||
padding: 12px;
|
||||
}
|
||||
|
||||
element-icon {
|
||||
padding: 0 12px 0 0;
|
||||
}
|
||||
@@ -0,0 +1,177 @@
|
||||
/**
|
||||
* rofi -dump-theme output.
|
||||
* Rofi version: 1.7.5+wayland3
|
||||
**/
|
||||
* {
|
||||
red: rgba ( 220, 50, 47, 100 % );
|
||||
selected-active-foreground: rgba ( 249, 249, 249, 100 % );
|
||||
lightfg: rgba ( 88, 104, 117, 100 % );
|
||||
separatorcolor: rgba ( 29, 31, 33, 100 % );
|
||||
urgent-foreground: rgba ( 204, 102, 102, 100 % );
|
||||
alternate-urgent-background: rgba ( 75, 81, 96, 90 % );
|
||||
lightbg: rgba ( 238, 232, 213, 100 % );
|
||||
background-color: transparent;
|
||||
border-color: rgba ( 124, 131, 137, 100 % );
|
||||
normal-background: var(background);
|
||||
selected-urgent-background: rgba ( 165, 66, 66, 100 % );
|
||||
alternate-active-background: rgba ( 75, 81, 96, 89 % );
|
||||
spacing: 2;
|
||||
blue: rgba ( 38, 139, 210, 100 % );
|
||||
alternate-normal-foreground: var(foreground);
|
||||
urgent-background: rgba ( 29, 31, 33, 17 % );
|
||||
selected-normal-foreground: rgba ( 249, 249, 249, 100 % );
|
||||
active-foreground: rgba ( 101, 172, 255, 100 % );
|
||||
background: rgba ( 45, 48, 59, 95 % );
|
||||
selected-active-background: rgba ( 68, 145, 237, 100 % );
|
||||
active-background: rgba ( 29, 31, 33, 17 % );
|
||||
selected-normal-background: rgba ( 64, 132, 214, 100 % );
|
||||
alternate-normal-background: rgba ( 64, 69, 82, 59 % );
|
||||
foreground: rgba ( 196, 203, 212, 100 % );
|
||||
selected-urgent-foreground: rgba ( 249, 249, 249, 100 % );
|
||||
normal-foreground: var(foreground);
|
||||
alternate-urgent-foreground: var(urgent-foreground);
|
||||
alternate-active-foreground: var(active-foreground);
|
||||
}
|
||||
element {
|
||||
padding: 1px ;
|
||||
cursor: pointer;
|
||||
spacing: 5px ;
|
||||
border: 0;
|
||||
}
|
||||
element normal.normal {
|
||||
background-color: var(normal-background);
|
||||
text-color: var(normal-foreground);
|
||||
}
|
||||
element normal.urgent {
|
||||
background-color: var(urgent-background);
|
||||
text-color: var(urgent-foreground);
|
||||
}
|
||||
element normal.active {
|
||||
background-color: var(active-background);
|
||||
text-color: var(active-foreground);
|
||||
}
|
||||
element selected.normal {
|
||||
background-color: var(selected-normal-background);
|
||||
text-color: var(selected-normal-foreground);
|
||||
}
|
||||
element selected.urgent {
|
||||
background-color: var(selected-urgent-background);
|
||||
text-color: var(selected-urgent-foreground);
|
||||
}
|
||||
element selected.active {
|
||||
background-color: var(selected-active-background);
|
||||
text-color: var(selected-active-foreground);
|
||||
}
|
||||
element alternate.normal {
|
||||
background-color: var(alternate-normal-background);
|
||||
text-color: var(alternate-normal-foreground);
|
||||
}
|
||||
element alternate.urgent {
|
||||
background-color: var(alternate-urgent-background);
|
||||
text-color: var(alternate-urgent-foreground);
|
||||
}
|
||||
element alternate.active {
|
||||
background-color: var(alternate-active-background);
|
||||
text-color: var(alternate-active-foreground);
|
||||
}
|
||||
element-text {
|
||||
background-color: inherit;
|
||||
cursor: inherit;
|
||||
highlight: inherit;
|
||||
text-color: inherit;
|
||||
}
|
||||
element-icon {
|
||||
background-color: transparent;
|
||||
size: 1.0000em ;
|
||||
cursor: inherit;
|
||||
text-color: inherit;
|
||||
}
|
||||
window {
|
||||
padding: 5;
|
||||
background-color: var(background);
|
||||
border: 1;
|
||||
}
|
||||
mainbox {
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
message {
|
||||
padding: 1px ;
|
||||
border-color: var(separatorcolor);
|
||||
border: 2px 0px 0px ;
|
||||
}
|
||||
textbox {
|
||||
text-color: var(foreground);
|
||||
}
|
||||
listview {
|
||||
padding: 2px 0px 0px ;
|
||||
scrollbar: true;
|
||||
border-color: var(separatorcolor);
|
||||
spacing: 2px ;
|
||||
fixed-height: 0;
|
||||
border: 2px 0px 0px ;
|
||||
}
|
||||
scrollbar {
|
||||
width: 4px ;
|
||||
padding: 0;
|
||||
handle-width: 8px ;
|
||||
border: 0;
|
||||
handle-color: var(normal-foreground);
|
||||
}
|
||||
sidebar {
|
||||
border-color: var(separatorcolor);
|
||||
border: 2px dash 0px 0px ;
|
||||
}
|
||||
button {
|
||||
cursor: pointer;
|
||||
spacing: 0;
|
||||
text-color: var(normal-foreground);
|
||||
}
|
||||
button selected {
|
||||
background-color: var(selected-normal-background);
|
||||
text-color: var(selected-normal-foreground);
|
||||
}
|
||||
num-filtered-rows {
|
||||
expand: false;
|
||||
text-color: Gray;
|
||||
}
|
||||
num-rows {
|
||||
expand: false;
|
||||
text-color: Gray;
|
||||
}
|
||||
textbox-num-sep {
|
||||
expand: false;
|
||||
str: "/";
|
||||
text-color: Gray;
|
||||
}
|
||||
inputbar {
|
||||
padding: 1px ;
|
||||
spacing: 0;
|
||||
text-color: var(normal-foreground);
|
||||
children: [ "prompt","textbox-prompt-colon","entry","case-indicator" ];
|
||||
}
|
||||
case-indicator {
|
||||
spacing: 0;
|
||||
text-color: var(normal-foreground);
|
||||
}
|
||||
entry {
|
||||
text-color: var(normal-foreground);
|
||||
cursor: text;
|
||||
spacing: 0;
|
||||
placeholder-color: Gray;
|
||||
placeholder: "Type to filter";
|
||||
}
|
||||
prompt {
|
||||
spacing: 0;
|
||||
text-color: var(normal-foreground);
|
||||
}
|
||||
textbox-prompt-colon {
|
||||
margin: 0px 0.3000em 0.0000em 0.0000em ;
|
||||
expand: false;
|
||||
str: ":";
|
||||
text-color: var(normal-foreground);
|
||||
}
|
||||
mode-switcher {
|
||||
border-color: var(separatorcolor);
|
||||
border: 2px 0px 0px ;
|
||||
}
|
||||
Submodule
+1
Submodule home/config/tmux/plugins/tpm added at 99469c4a9b
@@ -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
|
||||
@@ -0,0 +1,3 @@
|
||||
.zcompdump
|
||||
.zsh_history
|
||||
plugins/bd
|
||||
@@ -0,0 +1,28 @@
|
||||
GIT_PROMPT_EXECUTABLE="shell"
|
||||
source $ZDOTDIR/plugins/zsh-git-prompt/zshrc.sh
|
||||
|
||||
function git_email_prompt() {
|
||||
GIT_USER=$(git config user.email)
|
||||
echo $GIT_USER
|
||||
}
|
||||
|
||||
PROMPT='%B%U%F{cyan}% %m%u%F{green} %~$(git_super_status)%f %{%G%}%b '
|
||||
RPROMPT='%B%F{42}% $(git_email_prompt)%f %F{cyan}%*%b'
|
||||
|
||||
# No right padding on RPROMPT
|
||||
ZLE_RPROMPT_INDENT=0
|
||||
|
||||
ZSH_THEME_GIT_PROMPT_PREFIX=" %B%F{cyan}% ("
|
||||
ZSH_THEME_GIT_PROMPT_SUFFIX="%B%F{cyan}% )"
|
||||
ZSH_THEME_GIT_PROMPT_SEPARATOR="%B%F{cyan}% |"
|
||||
ZSH_THEME_GIT_PROMPT_BRANCH=""
|
||||
ZSH_THEME_GIT_PROMPT_STAGED="%F{green}% %{●%G%}"
|
||||
ZSH_THEME_GIT_PROMPT_CONFLICTS="%B%F{red}% %{✖%G%}"
|
||||
ZSH_THEME_GIT_PROMPT_CHANGED="%B%F{red}% %{✚%G%}"
|
||||
ZSH_THEME_GIT_PROMPT_STASHED="%B%F{251}% %{⚑%G%}"
|
||||
ZSH_THEME_GIT_PROMPT_BEHIND="%B%F{magenta}% %{↓%G%}"
|
||||
ZSH_THEME_GIT_PROMPT_AHEAD="%B%F{yellow}% %{↑%G%}"
|
||||
ZSH_THEME_GIT_PROMPT_UNTRACKED="%B%F{42}% %{…%G%}"
|
||||
ZSH_THEME_GIT_PROMPT_CLEAN="%B%F{cyan}% %{✔%G%}"
|
||||
|
||||
ZSH_THEME_GIT_PROMPT_LOCAL=" %B%F{42}% L"
|
||||
@@ -0,0 +1,90 @@
|
||||
|
||||
setopt auto_cd
|
||||
setopt no_case_glob
|
||||
setopt glob_complete
|
||||
|
||||
# setopt correct
|
||||
# setopt correct_all
|
||||
|
||||
setopt completeinword # not just at the end
|
||||
|
||||
# --------
|
||||
# Comp init
|
||||
# --------
|
||||
|
||||
# The following lines were added by compinstall
|
||||
zstyle ':completion:*' completer _complete _ignored _correct _approximate
|
||||
zstyle :compinstall filename '~/.config/zsh/.zshrc'
|
||||
|
||||
autoload -Uz compinit
|
||||
compinit
|
||||
# End of lines added by compinstall
|
||||
|
||||
# Load bashcompinit for some old bash completions
|
||||
autoload bashcompinit && bashcompinit
|
||||
|
||||
|
||||
# --------
|
||||
# History
|
||||
# --------
|
||||
|
||||
HISTFILE=${ZDOTDIR:-~}/.zsh_history
|
||||
SAVEHIST=50000
|
||||
HISTSIZE=10000
|
||||
HISTORY_IGNORE="(ls|cd|pwd|zsh|exit|cd ..)"
|
||||
|
||||
setopt extended_history # record start time and elapsed time in history file
|
||||
setopt share_history # share history across multiple zsh sessions
|
||||
setopt append_history # append to history
|
||||
setopt inc_append_history # adds commands as they are typed, not at shell exit
|
||||
setopt hist_ignore_dups # do not store duplications
|
||||
setopt hist_reduce_blanks # removes blank lines from history
|
||||
setopt hist_verify # show !! before executing
|
||||
setopt hist_ignore_space # remove command lines beginning with a space from history
|
||||
|
||||
setopt no_beep # Don't beep on command input error
|
||||
|
||||
# --------
|
||||
# Source & include
|
||||
# --------
|
||||
|
||||
# Include functions
|
||||
fpath+=~/Git/dotfiles/functions
|
||||
autoload extract
|
||||
autoload set_alias_with_backup
|
||||
|
||||
[ -f $ZDOTDIR/.zshrc.local ] && source $ZDOTDIR/.zshrc.local
|
||||
[ -f ~/.config/.aliases ] && source ~/.config/.aliases
|
||||
[ -f ~/.config/.aliases.local ] && source ~/.config/.aliases.local
|
||||
|
||||
# --------
|
||||
# Plugins
|
||||
# --------
|
||||
if type brew >/dev/null 2>&1; then
|
||||
source $(brew --prefix)/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||
fi
|
||||
|
||||
source "$ZDOTDIR/plugins/zsh-vim-mode/zsh-vim-mode.plugin.zsh"
|
||||
|
||||
# https://github.com/arzzen/calc.plugin.zsh
|
||||
source "$ZDOTDIR/plugins/calc.plugin.zsh/calc.plugin.zsh"
|
||||
|
||||
# https://github.com/lukechilds/zsh-better-npm-completion
|
||||
source "$ZDOTDIR/plugins/zsh-better-npm-completion/zsh-better-npm-completion.plugin.zsh"
|
||||
|
||||
# https://github.com/sunlei/zsh-ssh
|
||||
source "$ZDOTDIR/plugins/zsh-ssh/zsh-ssh.zsh"
|
||||
|
||||
# https://github.com/Tarrasch/zsh-bd
|
||||
source "$ZDOTDIR/plugins/bd/bd.zsh"
|
||||
|
||||
|
||||
|
||||
# Prompt
|
||||
source $ZDOTDIR/.zprompt
|
||||
|
||||
eval $(thefuck --alias)
|
||||
eval "$(zoxide init zsh --cmd cd)"
|
||||
|
||||
|
||||
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh
|
||||
Submodule
+1
Submodule home/config/zsh/plugins/calc.plugin.zsh added at 5b4c85977b
+1
Submodule home/config/zsh/plugins/zsh-better-npm-completion added at 02ca404a9b
Submodule
+1
Submodule home/config/zsh/plugins/zsh-git-prompt added at 2701e8ac31
Submodule
+1
Submodule home/config/zsh/plugins/zsh-ssh added at f73b78bc8f
Submodule
+1
Submodule home/config/zsh/plugins/zsh-vim-mode added at 1f9953b7d6
@@ -0,0 +1,91 @@
|
||||
# local user config, usernames, etc
|
||||
[include]
|
||||
path=~/.config/.gitconfig.local
|
||||
|
||||
### git-delta
|
||||
[core]
|
||||
pager = delta
|
||||
excludesfile = ~/.config/.gitignore_global
|
||||
editor = code --wait
|
||||
[interactive]
|
||||
diffFilter = delta --color-only
|
||||
[delta]
|
||||
navigate = true # use n and N to move between diff sections
|
||||
true-color = always
|
||||
hyperlinks = true
|
||||
hyperlinks-file-link-format = "vscode://file/{path}:{line}"
|
||||
# side-by-side = true # alterantively use git -c delta.side-by-side=true diff
|
||||
[delta "side-by-side"]
|
||||
side-by-side = true
|
||||
[merge]
|
||||
conflictstyle = diff3
|
||||
[diff]
|
||||
colorMoved = default
|
||||
### end git-delta
|
||||
|
||||
[color]
|
||||
diff = auto
|
||||
status = auto
|
||||
branch = auto
|
||||
interactive = auto
|
||||
ui = auto
|
||||
[help]
|
||||
autocorrect = 1 # Automatically correct and execute mistyped commands.
|
||||
[branch]
|
||||
sort = -committerdate # Show most recently changed branches first.
|
||||
[push]
|
||||
default = simple
|
||||
autoSetupRemote = true
|
||||
[filter "media"]
|
||||
clean = git media clean %f
|
||||
smudge = git media smudge %f
|
||||
required = true
|
||||
[alias]
|
||||
b = branch
|
||||
c = commit
|
||||
sw = switch
|
||||
swm = switch master
|
||||
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
|
||||
|
||||
# fzf commands
|
||||
cf="!checkout_fzf() { git branch | fzf-tmux -p -h 25% --header 'git checkout' | xargs git checkout; }; checkout_fzf"
|
||||
sf="!switch_fzf() { git branch | fzf-tmux -p -h 25% --header 'git switch' | xargs git switch; }; switch_fzf"
|
||||
af = "!add_files() { git status -s | awk '{print $2}' | fzf-tmux -m --header 'git add' | xargs git add; }; add_files"
|
||||
afc = "!add_files_and_commit() { git status -s | awk '{print $2}' | fzf-tmux -m --header 'git add and commit' | xargs git add && git commit --verbose; }; add_files_and_commit"
|
||||
mf = "!merge() { git branch | fzf-tmux -p -h 25% --header 'git merge' | xargs git merge; }; merge"
|
||||
|
||||
# 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
|
||||
|
||||
# List contributors with number of commits.
|
||||
contributors = shortlog --summary --numbered
|
||||
|
||||
# Show the user email for the current repository.
|
||||
whoami = config user.email
|
||||
|
||||
# used for dotbot only
|
||||
cleanall = clean -fdx # this is dangerous, so it's intentionally long to type
|
||||
|
||||
update-submodules = submodule update --init --recursive
|
||||
upgrade-submodules = submodule update --init --remote
|
||||
@@ -2,30 +2,38 @@
|
||||
# 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 ~/.tmux/themes/tomorrow-night.tmux
|
||||
source-file ~/.config/tmux/themes/tomorrow-night.tmux
|
||||
|
||||
# Theme Variables
|
||||
|
||||
@@ -41,7 +49,8 @@ TMUX_USERNAME_FG="#000000"
|
||||
TMUX_STATUS_AQUA="#8abeb7"
|
||||
|
||||
# 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_RED="#[fg=$TMUX_NAMESPACE_FG,bg=$TMUX_STATUS_RED,bold]"
|
||||
STYLE_AQUA="#[fg=$TMUX_USERNAME_FG,bg=$TMUX_STATUS_AQUA,bold]"
|
||||
@@ -49,6 +58,9 @@ 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
|
||||
|
||||
@@ -76,7 +88,6 @@ 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
|
||||
|
||||
@@ -101,7 +112,7 @@ unbind C-Left
|
||||
unbind C-Right
|
||||
|
||||
# Source this file
|
||||
bind r source-file ~/.tmux.conf \; display "Config file reloaded!"
|
||||
bind r source-file $HOME/.tmux.conf \; display "Config file reloaded!"
|
||||
|
||||
# split current window horizontally
|
||||
bind v split-window -h
|
||||
@@ -145,10 +156,12 @@ 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 '~/.tmux/plugins/tpm/tpm'
|
||||
run -b '~/.config/tmux/plugins/tpm/tpm'
|
||||
Submodule
+1
Submodule home/vim/bundle/Vundle.vim added at 5548a1a937
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user