Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
73fe6b87a9
|
||
|
|
340b955bc5
|
@@ -0,0 +1,15 @@
|
|||||||
|
encryption = "age"
|
||||||
|
|
||||||
|
[age]
|
||||||
|
identity = "~/.config/chezmoi/key"
|
||||||
|
recipient = "age1pq1q8zvperhkgayvaeyppanuwml6l54a2ehp8au3z96qzsympcjxhsvzdk9exks48fufdr3xaq8n65tque5xmfe5q6gjelsv55y6wa38fxxnurujk8dzup9zl9j3343mvdndnl0y20uejscwe3lfzn382ftspcespwdkpy063nz2ne4jalf5amuk9uuhyq7gezyg0ryhps2vwrsesckqe3md9nt50szym5zwmc9n3mq4faxahrlvystfcs4wq9ccjv9552v5x34vjs5zn83qy4skktkgvppdga95kt9jjx2fc3jvtqrusrf8rr3qlpckz0nqxndcqkstxlte3n8tjmuahnj8ph4prfhn899ze9wnxyznregyu6nnj365rry86rdagj53fwg0x6n9zhx62e2x7jshzyydahzp264efhakf9llacfvlwx6efe2sppk5zfsp0m8vgeyv3fvrxqrv3y4zj6cgj29kdlc6mvtpeqrcxkkd0xcka44p2287nphx6shwk426jl3v8qedtg5n6rcq68r454dfhxffr356gj6x3sc7a6890pkn55qa63s74nju4ytakmzescsrxamd6psgx8vjrcyvxfqlapywd74z5456dr2h3s49yud9ekzly7gcl04jss9kg8zelgfnqatslz6qtv6tzrgcqzm2rqc3asjylh2vhe9ze3qvtnucnqkddzygqtkr99apg67r23ur6ey2dznw5j546qq3uxnf4vydj8wv9cxd0xzs8xvn9cxu93xt5kxnr8j3ry2al7rszczu5faf24wqqh835uevdwn2r5szjvjdrtg7fw4zgkcpft2fgqm35fafavvulezhj44d5jy6yly4zmckeh4xpfh82zkwkegav373t65upepvykqfgcnwvtsatewmska82ud76ak37gw0x94xycwszq8sm29q4gpq9f8f2eyk6dj8aqhmdurr7hh87scqf4sjt669w95fsyrkr7eynltw8u3fcaur2yq44yk6sgr38wlnrxlcxzmv4st5d5c0zwjprds3kn26j5d6arx7gxw8nrgs57cetjnx586h25ltv2hh5c27xvdj20l2cpd7434mkscfe0jp395mphsyrl0hfh69vvxvh3yyq7a2eeqvc03fcnkfju5lksvexg3nr43qtgk5wqcw36h4z4jy772qdusu6x8wsnh23c9v48cfvm5q3r6x79ptr63sdrejd9gpun9wwckp5r0qusp7g9qysyt8yz9235e0reungjlaz2pnvaqksuaxjy2fpyn8f4uvg82rtlhq8f3373np259sq3fl39d32whyk62a5dukf7se6qkaykwwxgcprp0patv5prfukyjdtpx3ym40nnye9a8m9snk4g2xyenwh6wcldt230c6zvanp3vyfmtvc6tsdgmsvu62n5jkw2cfc9yzxyv9st72ampfns3e96ymack4fvz49p6c7vq0xf84380axzs9ajx9ssdwwra4auczj3f4uutpwh4rypmdxs3y2qvutzh0am08yq5w6wjwgv6yad2aex3s2s2gmzwllw2tpnlzv2vejnm3t24zrlkyfhcuqu0a5ppfex3r2ekrwsy4lz9w045wen4tms7pg638zu3wwg7fjrf6ctjtsjh8yuxf58gcwpy50ym8xg30n2gr09kmp9dyaeqsespdfvz9m4085pk25jdtdhprr8dh9m44wyndc8zhsz4gwx26kkyscq7kctd3lxpl8jwszkjyk9tmqrxyvjxe29c7w8g0qcqulnc326xwpt9nrgqssww0wnya3w42392dwpukthq79zvzlw60qruh6vnnxe6w849ajxe3lss8e0rthnq6gpfm0f0q754nvn9f05xvz3ptj5kch6d5hpzgwdkrjuw7rrwxhs7gdn3gkk6puvs62yge6zrg7jalyx"
|
||||||
|
|
||||||
|
[data]
|
||||||
|
{{ $system := promptStringOnce . "system" "Which system class is this machine?" "desktop" }}
|
||||||
|
system = {{ $system | quote }}
|
||||||
|
|
||||||
|
{{ $email := promptStringOnce . "email" "What is your email address (git)" }}
|
||||||
|
email = {{ $email | quote }}
|
||||||
|
|
||||||
|
{{ $name := promptStringOnce . "name" "What is your name (git)" }}
|
||||||
|
name = {{ $name | quote }}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
assets/
|
||||||
|
README.md
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
roles/z
|
|
||||||
roles/test
|
|
||||||
error.log
|
error.log
|
||||||
callback_plugins/__pycache__
|
.callback_plugins/__pycache__
|
||||||
|
# chezmoi local state — never committed
|
||||||
|
.chezmoi/
|
||||||
|
*.chezmoi.state
|
||||||
@@ -1,46 +1,64 @@
|
|||||||
# Installation
|
# Dotfiles (chezmoi)
|
||||||
Clone the repo and execute the `install.sh` script.<br/>
|
|
||||||
Or use this command:
|
Dotfiles managed by [chezmoi](https://www.chezmoi.io/). The repo works on
|
||||||
|
Arch and Ubuntu (not complete) and has three machine classes: **server**, **desktop**, and **laptop**.
|
||||||
|
|
||||||
|
|
||||||
|
## First-time install on a new machine
|
||||||
|
|
||||||
|
### 1. Install prerequisites
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
bash -c "$(curl -fsSL https://gitea.keuledrive.de/Keule2/Dotfiles/raw/branch/main/install.sh)"
|
# Arch
|
||||||
```
|
sudo pacman -S git curl age jq chezmoi
|
||||||
Or this command to use arguments:
|
|
||||||
```bash
|
# Ubuntu
|
||||||
curl -fsSL "https://gitea.keuledrive.de/Keule2/Dotfiles/raw/branch/main/install.sh" | bash -s -- -e "system=server"
|
sudo apt-get install -y git curl age jq
|
||||||
|
# chezmoi: see https://www.chezmoi.io/install/
|
||||||
```
|
```
|
||||||
|
|
||||||
# Update
|
### 2. Provision the age key
|
||||||
Just execute the `install.sh` script again.
|
|
||||||
|
|
||||||
# Usage
|
The age key needs to be placed at `~/.config/chezmoi/key`
|
||||||
All additional parameters are passed to the ansible playbook. This means that you can skip tags or only execute desired tags.<br/>
|
With following permissions
|
||||||
Example: Skip alacritty
|
|
||||||
```bash
|
```bash
|
||||||
./install.sh --skip-tags alacritty
|
chmod 600 ~/.config/chezmoi/key
|
||||||
```
|
|
||||||
Example: Only execute alacritty and fish
|
|
||||||
```bash
|
|
||||||
./install.sh -t alacritty,fish
|
|
||||||
```
|
```
|
||||||
|
|
||||||
# Settings
|
### 3. Bootstrap
|
||||||
There are two ways to set settings/values.
|
|
||||||
1. Create/Edit: `$HOME/.config/dotfiles/values.yml`
|
|
||||||
2. Edit: `$HOME/.dotfiles/group_vars/all`
|
|
||||||
|
|
||||||
## Ansible Vault
|
```bash
|
||||||
Vault password file: `$HOME/.config/dotfiles/vault-password.txt`
|
chezmoi init --apply git@gitea.keuledrive.de:Keule2/Dotfiles.git
|
||||||
|
```
|
||||||
|
|
||||||
## Settings
|
Will ask:
|
||||||
### System
|
|
||||||
|Value |Desc |Default|
|
|
||||||
|------------|-------------------------------------------------------|-------|
|
|
||||||
|server |Minimal installation (CMD tools) | |
|
|
||||||
|desktop |Install WM and desktop applications |x |
|
|
||||||
|desktop_full|Install additional packages for the desktop (e.g. wine)| |
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
# TODO
|
- **Which system class is this machine?** — pick `server`, `desktop`, or `laptop`.
|
||||||
- AGS: Bar, AppLauncher, PowerMenu, Notifications, Calculator, Emoji-Picker, ...
|
- **EMAIL** — for git config.
|
||||||
- Ubuntu/Debian Support
|
|
||||||
- ...
|
## Usage
|
||||||
|
|
||||||
|
| Command | Effect |
|
||||||
|
|---|---|
|
||||||
|
| `chezmoi apply` | apply any local changes to dotfiles and run-once scripts |
|
||||||
|
| `chezmoi update` | `git pull` + `apply` |
|
||||||
|
| `chezmoi edit <file>` | open a tracked file in `$EDITOR` |
|
||||||
|
| `chezmoi cd` | shell into the source dir |
|
||||||
|
| `chezmoi diff` | show pending changes against your home |
|
||||||
|
| `chezmoi managed` | list files chezmoi manages |
|
||||||
|
|
||||||
|
## Changing the system class
|
||||||
|
|
||||||
|
Two ways:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Option A: re-prompt
|
||||||
|
chezmoi init --apply --force --prompt
|
||||||
|
|
||||||
|
# Option B: edit the cached value
|
||||||
|
$EDITOR ~/.config/chezmoi/chezmoi.toml # change [data].system
|
||||||
|
chezmoi apply
|
||||||
|
```
|
||||||
|
|
||||||
|
## TODO
|
||||||
|
- Check packages e.g. gaming Steam/Lutris
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
[defaults]
|
|
||||||
stdout_callback = beautiful_output
|
|
||||||
# Use the stdout_callback when running ad-hoc commands.
|
|
||||||
bin_ansible_callbacks = True
|
|
||||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 822 KiB After Width: | Height: | Size: 822 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 549 B After Width: | Height: | Size: 549 B |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 529 B After Width: | Height: | Size: 529 B |
|
Before Width: | Height: | Size: 515 B After Width: | Height: | Size: 515 B |
|
Before Width: | Height: | Size: 1012 B After Width: | Height: | Size: 1012 B |
|
Before Width: | Height: | Size: 515 B After Width: | Height: | Size: 515 B |
|
Before Width: | Height: | Size: 508 B After Width: | Height: | Size: 508 B |
|
Before Width: | Height: | Size: 540 B After Width: | Height: | Size: 540 B |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 552 B After Width: | Height: | Size: 552 B |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 529 B After Width: | Height: | Size: 529 B |
|
Before Width: | Height: | Size: 513 B After Width: | Height: | Size: 513 B |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 515 B After Width: | Height: | Size: 515 B |
|
Before Width: | Height: | Size: 508 B After Width: | Height: | Size: 508 B |
|
Before Width: | Height: | Size: 535 B After Width: | Height: | Size: 535 B |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 547 B After Width: | Height: | Size: 547 B |
|
Before Width: | Height: | Size: 553 B After Width: | Height: | Size: 553 B |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 553 B After Width: | Height: | Size: 553 B |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 546 B After Width: | Height: | Size: 546 B |
@@ -23,20 +23,22 @@ function ya() {
|
|||||||
|
|
||||||
## Aliases
|
## Aliases
|
||||||
# Replace ls with eza
|
# Replace ls with eza
|
||||||
alias ls='eza -al --color=always --group-directories-first' # preferred listing
|
if [ -f /usr/bin/eza ]; then
|
||||||
alias la='eza -a --color=always --group-directories-first' # all files and dirs
|
alias ls='eza -al --color=always --group-directories-first --icons=auto' # preferred listing
|
||||||
alias ll='eza -l --color=always --group-directories-first' # long format
|
alias la='eza -a --color=always --group-directories-first --icons=auto' # all files and dirs
|
||||||
alias lt='eza -aT --color=always --group-directories-first' # tree listing
|
alias ll='eza -l --color=always --group-directories-first --icons=auto' # long format
|
||||||
alias l.='eza -ald --color=always --group-directories-first .*' # show only dotfiles
|
alias lt='eza -aT --color=always --group-directories-first --icons=auto' # tree listing
|
||||||
|
alias l.='eza -ald --color=always --group-directories-first --icons=auto .*' # show only dotfiles
|
||||||
|
fi
|
||||||
|
|
||||||
# Replace cat with bat
|
# Replace cat with bat
|
||||||
if [ -f /usr/bin/bat ]; then
|
if [ -f /usr/bin/bat ]; then
|
||||||
alias cat='bat --style header --style snip --style changes --style header'
|
alias cat='bat --style header --style snip --style changes --style header'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Replace yay with paru
|
# Replace paru with yay
|
||||||
if [ -f /usr/bin/paru ]; then
|
if [ -f /usr/bin/yay ]; then
|
||||||
alias yay='paru'
|
alias paru='yay'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Aliases
|
# Aliases
|
||||||
@@ -56,12 +58,14 @@ alias rmpkg="sudo pacman -Rdd"
|
|||||||
alias tarnow='tar -acf '
|
alias tarnow='tar -acf '
|
||||||
alias untar='tar -zxvf '
|
alias untar='tar -zxvf '
|
||||||
alias wget='wget -c '
|
alias wget='wget -c '
|
||||||
|
|
||||||
# Cleanup orphaned packages
|
# Cleanup orphaned packages
|
||||||
alias cleanup='sudo pacman -Rns `pacman -Qtdq`'
|
alias cleanup='sudo pacman -Rns `pacman -Qtdq`'
|
||||||
|
|
||||||
# Get the error messages from journalctl
|
# Get the error messages from journalctl
|
||||||
alias jctl="journalctl -p 3 -xb"
|
alias jctl="journalctl -p 3 -xb"
|
||||||
|
|
||||||
# Recent installed packages
|
# Recent installed packages
|
||||||
alias rip="expac --timefmt='%Y-%m-%d %T' '%l\t%n %v' | sort | tail -200 | nl"
|
alias ripp="expac --timefmt='%Y-%m-%d %T' '%l\t%n %v' | sort | tail -200 | nl"
|
||||||
|
|
||||||
|
|
||||||
|
if [ -f /usr/bin/fastfetch ]; then
|
||||||
|
fastfetch
|
||||||
|
fi
|
||||||
@@ -21,11 +21,14 @@ if test -d ~/.local/bin
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
## Plugin configuration
|
# Add ~/go to PATH
|
||||||
# Set settings for https://github.com/franciscolourenco/done
|
if test -d ~/go/bin
|
||||||
set -U __done_min_cmd_duration 10000
|
if not contains -- ~/go/bin $PATH
|
||||||
set -U __done_notification_urgency_level low
|
set -p PATH ~/go/bin
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
## Plugin configuration
|
||||||
# Starship prompt
|
# Starship prompt
|
||||||
if type -q starship && status --is-interactive
|
if type -q starship && status --is-interactive
|
||||||
starship init fish | source
|
starship init fish | source
|
||||||
@@ -39,7 +42,7 @@ end
|
|||||||
## Functions
|
## Functions
|
||||||
# Fish command history
|
# Fish command history
|
||||||
function history
|
function history
|
||||||
builtin history --show-time='%F %T '
|
builtin history --reverse --show-time='%F %T '
|
||||||
end
|
end
|
||||||
|
|
||||||
function ba --argument filename
|
function ba --argument filename
|
||||||
@@ -54,7 +57,7 @@ function cp_bar
|
|||||||
kill $cpid &> /dev/null
|
kill $cpid &> /dev/null
|
||||||
end
|
end
|
||||||
|
|
||||||
function unzip -a input_file
|
function unzipc -a input_file
|
||||||
if test -z "$input_file"
|
if test -z "$input_file"
|
||||||
echo "Usage: unzip <filename.zip>"
|
echo "Usage: unzip <filename.zip>"
|
||||||
return 1
|
return 1
|
||||||
@@ -70,7 +73,7 @@ function unzip -a input_file
|
|||||||
command unzip "$input_file" -d "$folder_name" && echo "File '$input_file' successfully extracted to '$folder_name/'"
|
command unzip "$input_file" -d "$folder_name" && echo "File '$input_file' successfully extracted to '$folder_name/'"
|
||||||
end
|
end
|
||||||
|
|
||||||
function untar -a input_file
|
function untarc -a input_file
|
||||||
if test -z "$input_file"
|
if test -z "$input_file"
|
||||||
echo "Usage: untar <filename.zip>"
|
echo "Usage: untar <filename.zip>"
|
||||||
return 1
|
return 1
|
||||||
@@ -114,23 +117,31 @@ function mvn-run -a mainClass -d "Run your current maven project"
|
|||||||
end
|
end
|
||||||
|
|
||||||
# Yazi wrapper
|
# Yazi wrapper
|
||||||
function ya
|
function y
|
||||||
set tmp (mktemp -t "yazi-cwd.XXXXX")
|
set tmp (mktemp -t "yazi-cwd.XXXXXX")
|
||||||
yazi $argv --cwd-file="$tmp"
|
yazi $argv --cwd-file="$tmp"
|
||||||
if set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
|
if read -z cwd < "$tmp"; and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
|
||||||
cd "$cwd"
|
builtin cd -- "$cwd"
|
||||||
|
end
|
||||||
|
rm -f -- "$tmp"
|
||||||
|
end
|
||||||
|
|
||||||
|
# Convert webm to opus
|
||||||
|
function w2o
|
||||||
|
for f in *.webm
|
||||||
|
ffmpeg -i "$f" -map 0:a:0 -c:a copy (path change-extension opus "$f")
|
||||||
|
and rm "$f"
|
||||||
end
|
end
|
||||||
rm -f -- "$tmp"
|
|
||||||
end
|
end
|
||||||
|
|
||||||
## Aliases
|
## Aliases
|
||||||
# Replace ls with eza
|
# Replace ls with eza
|
||||||
if type -q eza
|
if type -q eza
|
||||||
alias ls='eza -al --color=always --group-directories-first --icons' # preferred listing
|
alias ls='eza -al --color=always --group-directories-first --icons=auto' # preferred listing
|
||||||
alias la='eza -a --color=always --group-directories-first --icons' # all files and dirs
|
alias la='eza -a --color=always --group-directories-first --icons=auto' # all files and dirs
|
||||||
alias ll='eza -l --color=always --group-directories-first --icons' # long format
|
alias ll='eza -l --color=always --group-directories-first --icons=auto' # long format
|
||||||
alias lt='eza -aT --color=always --group-directories-first --icons' # tree listing
|
alias lt='eza -aT --color=always --group-directories-first --icons=auto' # tree listing
|
||||||
alias l.='eza -ald --color=always --group-directories-first --icons .*' # show only dotfiles
|
alias l.='eza -ald --color=always --group-directories-first --icons=auto .*' # show only dotfiles
|
||||||
end
|
end
|
||||||
|
|
||||||
# Replace cat with bat
|
# Replace cat with bat
|
||||||
@@ -155,7 +166,7 @@ alias nano=nvim
|
|||||||
alias cls='clear'
|
alias cls='clear'
|
||||||
alias please='sudo'
|
alias please='sudo'
|
||||||
alias ip='ip -color'
|
alias ip='ip -color'
|
||||||
alias wip=curl https://ipinfo.io/ip
|
alias wip='curl https://ipinfo.io/ip'
|
||||||
alias mkdirs='mkdir --parents'
|
alias mkdirs='mkdir --parents'
|
||||||
alias grubup="sudo update-grub"
|
alias grubup="sudo update-grub"
|
||||||
alias fixpacman="sudo rm /var/lib/pacman/db.lck"
|
alias fixpacman="sudo rm /var/lib/pacman/db.lck"
|
||||||
@@ -178,8 +189,10 @@ alias bigpkg="expac -H M '%m\t%n' | sort -h | nl" # Sort installed packages ac
|
|||||||
alias gitpkg='pacman -Q | grep -i "\-git" | wc -l' # List amount of -git packages
|
alias gitpkg='pacman -Q | grep -i "\-git" | wc -l' # List amount of -git packages
|
||||||
alias cleanup='sudo pacman -Rns (pacman -Qtdq)' # Cleanup orphaned packages
|
alias cleanup='sudo pacman -Rns (pacman -Qtdq)' # Cleanup orphaned packages
|
||||||
alias jctl="journalctl -p 3 -xb" # Get the error messages from journalctl
|
alias jctl="journalctl -p 3 -xb" # Get the error messages from journalctl
|
||||||
alias rip="expac --timefmt='%Y-%m-%d %T' '%l\t%n %v' | sort | tail -200 | nl" # Recent installed packages
|
alias ripp="expac --timefmt='%Y-%m-%d %T' '%l\t%n %v' | sort | tail -200 | nl" # Recent installed packages
|
||||||
alias h="cliphist list | fzf | cliphist decode | wl-copy"
|
alias ch="cliphist list | fzf | cliphist decode | wl-copy"
|
||||||
|
alias dirsize="du -h --max-depth=1"
|
||||||
|
|
||||||
|
|
||||||
# Get fastest mirrors
|
# Get fastest mirrors
|
||||||
alias mirror="sudo reflector -f 30 -l 30 --number 10 --verbose --save /etc/pacman.d/mirrorlist"
|
alias mirror="sudo reflector -f 30 -l 30 --number 10 --verbose --save /etc/pacman.d/mirrorlist"
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
-- DMS user keybind overrides (edit via Control Center or dms; do not remove this header)
|
||||||
|
|
||||||
|
hl.unbind("CTRL + SHIFT + Escape")
|
||||||
|
hl.bind("CTRL + SHIFT + Escape", hl.dsp.exec_cmd("dms ipc call processlist focusOrToggle"), { description = "dms ipc call processlist focusOrToggle" })
|
||||||
|
hl.unbind("SUPER + CTRL + S")
|
||||||
|
hl.bind("SUPER + CTRL + S", hl.dsp.exec_cmd("dms ipc call quickCapture screenshot window edit"), { description = "screenshot window" })
|
||||||
|
hl.unbind("SUPER + I")
|
||||||
|
hl.bind("SUPER + I", hl.dsp.exec_cmd("dms ipc notifications toggle"), { description = "notification toggle" })
|
||||||
|
hl.unbind("SUPER + N")
|
||||||
|
hl.bind("SUPER + N", hl.dsp.exec_cmd("dms ipc call notepad toggle"), { description = "dms ipc call notepad toggle" })
|
||||||
|
hl.unbind("SUPER + O")
|
||||||
|
hl.bind("SUPER + O", hl.dsp.exec_cmd("dms ipc call lock lock"), { description = "dms ipc call lock lock" })
|
||||||
|
hl.unbind("SUPER + SHIFT + B")
|
||||||
|
hl.bind("SUPER + SHIFT + B", hl.dsp.exec_cmd("dms ipc call mpris previous"), { locked = true, description = "dms ipc call mpris previous" })
|
||||||
|
hl.unbind("SUPER + SHIFT + N")
|
||||||
|
hl.bind("SUPER + SHIFT + N", hl.dsp.exec_cmd("dms ipc call mpris next"), { locked = true, description = "dms ipc call mpris next" })
|
||||||
|
hl.unbind("SUPER + SHIFT + P")
|
||||||
|
hl.bind("SUPER + SHIFT + P", hl.dsp.exec_cmd("dms ipc call mpris playPause"), { locked = true, description = "dms ipc call mpris playPause" })
|
||||||
|
hl.unbind("SUPER + SHIFT + S")
|
||||||
|
hl.bind("SUPER + SHIFT + S", hl.dsp.exec_cmd("dms ipc call quickCapture screenshot region edit"), { description = "screenshot region" })
|
||||||
|
hl.unbind("SUPER + SHIFT + T")
|
||||||
|
hl.bind("SUPER + SHIFT + T", hl.dsp.exec_cmd("dms ipc call timer toggle"), { description = "timer toggle" })
|
||||||
|
hl.unbind("SUPER + B")
|
||||||
|
hl.bind("SUPER + B", hl.dsp.exec_cmd("brave"))
|
||||||
|
hl.unbind("SUPER + E")
|
||||||
|
hl.bind("SUPER + E", hl.dsp.exec_cmd("thunar"))
|
||||||
|
hl.unbind("SUPER + SHIFT + O")
|
||||||
|
hl.bind("SUPER + SHIFT + O", hl.dsp.dpms({ action = "toggle" }), { description = "dpms toggle" })
|
||||||
|
hl.unbind("CTRL + ALT + Delete")
|
||||||
|
hl.unbind("CTRL + SHIFT + T")
|
||||||
|
hl.unbind("SUPER + C")
|
||||||
|
hl.bind("SUPER + C", hl.dsp.window.close(), { description = "Close window" })
|
||||||
|
hl.unbind("SUPER + CTRL + F")
|
||||||
|
hl.unbind("SUPER + F")
|
||||||
|
hl.bind("SUPER + F", hl.dsp.window.float({ action = "toggle" }), { description = "Float/unfloat window" })
|
||||||
|
hl.unbind("SUPER + M")
|
||||||
|
hl.bind("SUPER + M", hl.dsp.window.fullscreen({ mode = "maximized", action = "toggle" }), { description = "Toggle maximization" })
|
||||||
|
hl.unbind("SUPER + Q")
|
||||||
@@ -0,0 +1,171 @@
|
|||||||
|
-- DMS default keybinds (Hyprland 0.55+ Lua)
|
||||||
|
|
||||||
|
-- === Application Launchers ===
|
||||||
|
hl.bind("SUPER + T", hl.dsp.exec_cmd("ghostty"))
|
||||||
|
hl.bind("SUPER + space", hl.dsp.exec_cmd("dms ipc call spotlight toggle"))
|
||||||
|
hl.bind("ALT + space", hl.dsp.exec_cmd("dms ipc call spotlight-bar toggle"))
|
||||||
|
hl.bind("SUPER + V", hl.dsp.exec_cmd("dms ipc call clipboard toggle"))
|
||||||
|
hl.bind("SUPER + M", hl.dsp.exec_cmd("dms ipc call processlist focusOrToggle"))
|
||||||
|
hl.bind("SUPER + comma", hl.dsp.exec_cmd("dms ipc call settings focusOrToggle"))
|
||||||
|
hl.bind("SUPER + N", hl.dsp.exec_cmd("dms ipc call notifications toggle"))
|
||||||
|
hl.bind("SUPER + SHIFT + N", hl.dsp.exec_cmd("dms ipc call notepad toggle"))
|
||||||
|
hl.bind("SUPER + Y", hl.dsp.exec_cmd("dms ipc call dash toggle wallpaper"))
|
||||||
|
hl.bind("SUPER + TAB", hl.dsp.exec_cmd("dms ipc call hypr toggleOverview"))
|
||||||
|
hl.bind("SUPER + O", hl.dsp.exec_cmd("dms ipc call hypr toggleOverview"))
|
||||||
|
hl.bind("SUPER + X", hl.dsp.exec_cmd("dms ipc call powermenu toggle"))
|
||||||
|
|
||||||
|
-- === Cheat sheet
|
||||||
|
hl.bind("SUPER + SHIFT + Slash", hl.dsp.exec_cmd("dms ipc call keybinds toggle hyprland"))
|
||||||
|
|
||||||
|
-- === Security ===
|
||||||
|
hl.bind("SUPER + ALT + L", hl.dsp.exec_cmd("dms ipc call lock lock"))
|
||||||
|
hl.bind("SUPER + SHIFT + E", hl.dsp.exit())
|
||||||
|
hl.bind("CTRL + ALT + Delete", hl.dsp.exec_cmd("dms ipc call processlist focusOrToggle"))
|
||||||
|
|
||||||
|
-- === Audio Controls ===
|
||||||
|
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("dms ipc call audio increment 3"), { locked = true, repeating = true })
|
||||||
|
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("dms ipc call audio decrement 3"), { locked = true, repeating = true })
|
||||||
|
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("dms ipc call audio mute"), { locked = true })
|
||||||
|
hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("dms ipc call audio micmute"), { locked = true })
|
||||||
|
hl.bind("XF86AudioPause", hl.dsp.exec_cmd("dms ipc call mpris playPause"), { locked = true })
|
||||||
|
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("dms ipc call mpris playPause"), { locked = true })
|
||||||
|
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("dms ipc call mpris previous"), { locked = true })
|
||||||
|
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("dms ipc call mpris next"), { locked = true })
|
||||||
|
hl.bind("CTRL + XF86AudioRaiseVolume", hl.dsp.exec_cmd("dms ipc call mpris increment 3"), { locked = true, repeating = true })
|
||||||
|
hl.bind("CTRL + XF86AudioLowerVolume", hl.dsp.exec_cmd("dms ipc call mpris decrement 3"), { locked = true, repeating = true })
|
||||||
|
|
||||||
|
-- === Brightness Controls ===
|
||||||
|
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd([[dms ipc call brightness increment 5 ""]]), { locked = true, repeating = true })
|
||||||
|
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd([[dms ipc call brightness decrement 5 ""]]), { locked = true, repeating = true })
|
||||||
|
|
||||||
|
-- === Window Management ===
|
||||||
|
hl.bind("SUPER + Q", hl.dsp.window.close())
|
||||||
|
hl.bind("SUPER + F", hl.dsp.window.fullscreen({ mode = "maximized", action = "toggle" }))
|
||||||
|
hl.bind("SUPER + SHIFT + F", hl.dsp.window.fullscreen({ mode = "fullscreen", action = "toggle" }))
|
||||||
|
hl.bind("SUPER + SHIFT + T", hl.dsp.window.float({ action = "toggle" }))
|
||||||
|
hl.bind("SUPER + W", hl.dsp.group.toggle())
|
||||||
|
hl.bind("SUPER + SHIFT + W", hl.dsp.exec_cmd("dms ipc call window-rules toggle"))
|
||||||
|
|
||||||
|
-- === Focus Navigation ===
|
||||||
|
hl.bind("SUPER + left", hl.dsp.focus({ direction = "l" }))
|
||||||
|
hl.bind("SUPER + down", hl.dsp.focus({ direction = "d" }))
|
||||||
|
hl.bind("SUPER + up", hl.dsp.focus({ direction = "u" }))
|
||||||
|
hl.bind("SUPER + right", hl.dsp.focus({ direction = "r" }))
|
||||||
|
hl.bind("SUPER + H", hl.dsp.focus({ direction = "l" }))
|
||||||
|
hl.bind("SUPER + J", hl.dsp.focus({ direction = "d" }))
|
||||||
|
hl.bind("SUPER + K", hl.dsp.focus({ direction = "u" }))
|
||||||
|
hl.bind("SUPER + L", hl.dsp.focus({ direction = "r" }))
|
||||||
|
|
||||||
|
-- === Window Movement ===
|
||||||
|
hl.bind("SUPER + SHIFT + left", hl.dsp.window.move({ direction = "l" }))
|
||||||
|
hl.bind("SUPER + SHIFT + down", hl.dsp.window.move({ direction = "d" }))
|
||||||
|
hl.bind("SUPER + SHIFT + up", hl.dsp.window.move({ direction = "u" }))
|
||||||
|
hl.bind("SUPER + SHIFT + right", hl.dsp.window.move({ direction = "r" }))
|
||||||
|
hl.bind("SUPER + SHIFT + H", hl.dsp.window.move({ direction = "l" }))
|
||||||
|
hl.bind("SUPER + SHIFT + J", hl.dsp.window.move({ direction = "d" }))
|
||||||
|
hl.bind("SUPER + SHIFT + K", hl.dsp.window.move({ direction = "u" }))
|
||||||
|
hl.bind("SUPER + SHIFT + L", hl.dsp.window.move({ direction = "r" }))
|
||||||
|
|
||||||
|
-- === Column Navigation ===
|
||||||
|
hl.bind("SUPER + Home", hl.dsp.focus({ window = "first" }))
|
||||||
|
hl.bind("SUPER + End", hl.dsp.focus({ window = "last" }))
|
||||||
|
|
||||||
|
-- === Monitor Navigation ===
|
||||||
|
hl.bind("SUPER + CTRL + left", hl.dsp.focus({ monitor = "l" }))
|
||||||
|
hl.bind("SUPER + CTRL + right", hl.dsp.focus({ monitor = "r" }))
|
||||||
|
hl.bind("SUPER + CTRL + H", hl.dsp.focus({ monitor = "l" }))
|
||||||
|
hl.bind("SUPER + CTRL + J", hl.dsp.focus({ monitor = "d" }))
|
||||||
|
hl.bind("SUPER + CTRL + K", hl.dsp.focus({ monitor = "u" }))
|
||||||
|
hl.bind("SUPER + CTRL + L", hl.dsp.focus({ monitor = "r" }))
|
||||||
|
|
||||||
|
-- === Move to Monitor ===
|
||||||
|
hl.bind("SUPER + SHIFT + CTRL + left", hl.dsp.window.move({ monitor = "l" }))
|
||||||
|
hl.bind("SUPER + SHIFT + CTRL + down", hl.dsp.window.move({ monitor = "d" }))
|
||||||
|
hl.bind("SUPER + SHIFT + CTRL + up", hl.dsp.window.move({ monitor = "u" }))
|
||||||
|
hl.bind("SUPER + SHIFT + CTRL + right", hl.dsp.window.move({ monitor = "r" }))
|
||||||
|
hl.bind("SUPER + SHIFT + CTRL + H", hl.dsp.window.move({ monitor = "l" }))
|
||||||
|
hl.bind("SUPER + SHIFT + CTRL + J", hl.dsp.window.move({ monitor = "d" }))
|
||||||
|
hl.bind("SUPER + SHIFT + CTRL + K", hl.dsp.window.move({ monitor = "u" }))
|
||||||
|
hl.bind("SUPER + SHIFT + CTRL + L", hl.dsp.window.move({ monitor = "r" }))
|
||||||
|
|
||||||
|
-- === Workspace Navigation ===
|
||||||
|
hl.bind("SUPER + Page_Down", hl.dsp.focus({ workspace = "e+1" }))
|
||||||
|
hl.bind("SUPER + Page_Up", hl.dsp.focus({ workspace = "e-1" }))
|
||||||
|
hl.bind("SUPER + U", hl.dsp.focus({ workspace = "e+1" }))
|
||||||
|
hl.bind("SUPER + I", hl.dsp.focus({ workspace = "e-1" }))
|
||||||
|
hl.bind("SUPER + CTRL + down", hl.dsp.window.move({ workspace = "e+1" }))
|
||||||
|
hl.bind("SUPER + CTRL + up", hl.dsp.window.move({ workspace = "e-1" }))
|
||||||
|
hl.bind("SUPER + CTRL + U", hl.dsp.window.move({ workspace = "e+1" }))
|
||||||
|
hl.bind("SUPER + CTRL + I", hl.dsp.window.move({ workspace = "e-1" }))
|
||||||
|
|
||||||
|
-- === Workspace Management ===
|
||||||
|
hl.bind("CTRL + SHIFT + R", hl.dsp.exec_cmd("dms ipc call workspace-rename open"))
|
||||||
|
|
||||||
|
-- === Move Workspaces ===
|
||||||
|
hl.bind("SUPER + SHIFT + Page_Down", hl.dsp.window.move({ workspace = "e+1" }))
|
||||||
|
hl.bind("SUPER + SHIFT + Page_Up", hl.dsp.window.move({ workspace = "e-1" }))
|
||||||
|
hl.bind("SUPER + SHIFT + U", hl.dsp.window.move({ workspace = "e+1" }))
|
||||||
|
hl.bind("SUPER + SHIFT + I", hl.dsp.window.move({ workspace = "e-1" }))
|
||||||
|
|
||||||
|
-- === Mouse Wheel Navigation ===
|
||||||
|
hl.bind("SUPER + mouse_down", hl.dsp.focus({ workspace = "e+1" }))
|
||||||
|
hl.bind("SUPER + mouse_up", hl.dsp.focus({ workspace = "e-1" }))
|
||||||
|
hl.bind("SUPER + CTRL + mouse_down", hl.dsp.window.move({ workspace = "e+1" }))
|
||||||
|
hl.bind("SUPER + CTRL + mouse_up", hl.dsp.window.move({ workspace = "e-1" }))
|
||||||
|
|
||||||
|
-- === Touchpad Gestures ===
|
||||||
|
hl.gesture({ fingers = 3, direction = "horizontal", action = "workspace" })
|
||||||
|
|
||||||
|
-- === Numbered Workspaces ===
|
||||||
|
hl.bind("SUPER + 1", hl.dsp.focus({ workspace = "1" }))
|
||||||
|
hl.bind("SUPER + 2", hl.dsp.focus({ workspace = "2" }))
|
||||||
|
hl.bind("SUPER + 3", hl.dsp.focus({ workspace = "3" }))
|
||||||
|
hl.bind("SUPER + 4", hl.dsp.focus({ workspace = "4" }))
|
||||||
|
hl.bind("SUPER + 5", hl.dsp.focus({ workspace = "5" }))
|
||||||
|
hl.bind("SUPER + 6", hl.dsp.focus({ workspace = "6" }))
|
||||||
|
hl.bind("SUPER + 7", hl.dsp.focus({ workspace = "7" }))
|
||||||
|
hl.bind("SUPER + 8", hl.dsp.focus({ workspace = "8" }))
|
||||||
|
hl.bind("SUPER + 9", hl.dsp.focus({ workspace = "9" }))
|
||||||
|
|
||||||
|
-- === Move to Numbered Workspaces ===
|
||||||
|
hl.bind("SUPER + SHIFT + 1", hl.dsp.window.move({ workspace = "1" }))
|
||||||
|
hl.bind("SUPER + SHIFT + 2", hl.dsp.window.move({ workspace = "2" }))
|
||||||
|
hl.bind("SUPER + SHIFT + 3", hl.dsp.window.move({ workspace = "3" }))
|
||||||
|
hl.bind("SUPER + SHIFT + 4", hl.dsp.window.move({ workspace = "4" }))
|
||||||
|
hl.bind("SUPER + SHIFT + 5", hl.dsp.window.move({ workspace = "5" }))
|
||||||
|
hl.bind("SUPER + SHIFT + 6", hl.dsp.window.move({ workspace = "6" }))
|
||||||
|
hl.bind("SUPER + SHIFT + 7", hl.dsp.window.move({ workspace = "7" }))
|
||||||
|
hl.bind("SUPER + SHIFT + 8", hl.dsp.window.move({ workspace = "8" }))
|
||||||
|
hl.bind("SUPER + SHIFT + 9", hl.dsp.window.move({ workspace = "9" }))
|
||||||
|
|
||||||
|
-- === Column Management ===
|
||||||
|
hl.bind("SUPER + bracketleft", hl.dsp.layout("preselect l"))
|
||||||
|
hl.bind("SUPER + bracketright", hl.dsp.layout("preselect r"))
|
||||||
|
|
||||||
|
-- === Sizing & Layout ===
|
||||||
|
hl.bind("SUPER + R", hl.dsp.layout("togglesplit"))
|
||||||
|
hl.bind("SUPER + CTRL + F", hl.dsp.window.fullscreen({ mode = "maximized", action = "set" }))
|
||||||
|
|
||||||
|
-- === Move/resize windows with mainMod + LMB/RMB and dragging ===
|
||||||
|
hl.bind("SUPER + mouse:272", hl.dsp.window.drag(), { mouse = true, description = "Move window" })
|
||||||
|
hl.bind("SUPER + mouse:273", hl.dsp.window.resize(), { mouse = true, description = "Resize window" })
|
||||||
|
|
||||||
|
hl.bind("SUPER + code:20", hl.dsp.window.resize({ x = -100, y = 0, relative = true }), { description = "Expand window left" })
|
||||||
|
hl.bind("SUPER + code:21", hl.dsp.window.resize({ x = 100, y = 0, relative = true }), { description = "Shrink window left" })
|
||||||
|
|
||||||
|
-- === Manual Sizing ===
|
||||||
|
hl.bind("SUPER + minus", hl.dsp.window.resize({ x = -100, y = 0, relative = true }), { repeating = true })
|
||||||
|
hl.bind("SUPER + equal", hl.dsp.window.resize({ x = 100, y = 0, relative = true }), { repeating = true })
|
||||||
|
hl.bind("SUPER + SHIFT + minus", hl.dsp.window.resize({ x = 0, y = -100, relative = true }), { repeating = true })
|
||||||
|
hl.bind("SUPER + SHIFT + equal", hl.dsp.window.resize({ x = 0, y = 100, relative = true }), { repeating = true })
|
||||||
|
|
||||||
|
-- === Screenshots ===
|
||||||
|
hl.bind("Print", hl.dsp.exec_cmd("dms screenshot"))
|
||||||
|
hl.bind("CTRL + Print", hl.dsp.exec_cmd("dms screenshot full"))
|
||||||
|
hl.bind("ALT + Print", hl.dsp.exec_cmd("dms screenshot window"))
|
||||||
|
|
||||||
|
-- === Display Profiles ===
|
||||||
|
hl.bind("SUPER + P", hl.dsp.exec_cmd("dms ipc outputs cycleProfile"))
|
||||||
|
|
||||||
|
-- === System Controls ===
|
||||||
|
hl.bind("SUPER + SHIFT + P", hl.dsp.dpms({ action = "toggle" }))
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
-- Auto-generated by DMS Matugen hook — do not edit manually.
|
||||||
|
-- Remove require("dms.colors") from hyprland.lua to override.
|
||||||
|
|
||||||
|
hl.config({
|
||||||
|
general = {
|
||||||
|
col = {
|
||||||
|
active_border = "rgb(9fd49b)",
|
||||||
|
inactive_border = "rgb(8c9388)",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
group = {
|
||||||
|
col = {
|
||||||
|
border_active = "rgb(9fd49b)",
|
||||||
|
border_inactive = "rgb(8c9388)",
|
||||||
|
border_locked_active = "rgb(ffb4ab)",
|
||||||
|
border_locked_inactive = "rgb(8c9388)",
|
||||||
|
},
|
||||||
|
groupbar = {
|
||||||
|
col = {
|
||||||
|
active = "rgb(9fd49b)",
|
||||||
|
inactive = "rgb(8c9388)",
|
||||||
|
locked_active = "rgb(ffb4ab)",
|
||||||
|
locked_inactive = "rgb(8c9388)",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
-- Auto-generated by DMS — do not edit manually
|
||||||
|
|
||||||
|
hl.env("HYPRCURSOR_THEME", "breeze_cursors")
|
||||||
|
hl.env("XCURSOR_THEME", "breeze_cursors")
|
||||||
|
hl.env("HYPRCURSOR_SIZE", "24")
|
||||||
|
hl.env("XCURSOR_SIZE", "24")
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
-- Auto-generated by DMS — do not edit manually
|
||||||
|
|
||||||
|
hl.config({
|
||||||
|
general = {
|
||||||
|
gaps_in = 4,
|
||||||
|
gaps_out = 4,
|
||||||
|
border_size = 1,
|
||||||
|
resize_on_border = false,
|
||||||
|
},
|
||||||
|
decoration = {
|
||||||
|
rounding = 12,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.layer_rule({
|
||||||
|
match = { namespace = "^dms:bar$" },
|
||||||
|
xray = true,
|
||||||
|
})
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
-- Auto-generated by DMS — do not edit manually
|
||||||
|
-- Templated by chezmoi: per-system monitor configuration.
|
||||||
|
|
||||||
|
{{ if eq .system "desktop" }}
|
||||||
|
hl.monitor({ output = "", mode = "preferred", position = "0x0", scale = 1 })
|
||||||
|
hl.monitor({ output = "HDMI-A-2", mode = "1920x1080@60.000", position = "6400x1080", scale = 1, vrr = 0 })
|
||||||
|
hl.monitor({ output = "DP-2", mode = "3840x2160@120.000", position = "2560x0", scale = 1, vrr = 0 })
|
||||||
|
hl.monitor({ output = "HDMI-A-1", mode = "2560x1440@119.998", position = "0x0", scale = 1, vrr = 0 })
|
||||||
|
{{ else if eq .system "laptop" }}
|
||||||
|
hl.monitor({ output = "", mode = "preferred", position = "0x0", scale = 1 })
|
||||||
|
hl.monitor({ output = "eDP-1", mode = "preferred", position = "0x0", scale = 1 })
|
||||||
|
{{ else }}
|
||||||
|
-- server has no GUI; no monitors defined
|
||||||
|
{{ end }}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
-- DMS Window Rules — managed by DankMaterialShell
|
||||||
|
-- Do not edit manually; changes may be overwritten
|
||||||
|
|
||||||
|
-- DMS-RULE: id=wr_1785350111586245435, name=feishin
|
||||||
|
hl.window_rule({ match = { class = "^feishin$" }, workspace = "2" })
|
||||||
|
|
||||||
|
-- DMS-RULE: id=wr_1785350520619777540, name=vesktop
|
||||||
|
hl.window_rule({ match = { class = "^vesktop$" }, workspace = "6" })
|
||||||
@@ -0,0 +1,112 @@
|
|||||||
|
-- Hyprland configuration (Lua) — https://wiki.hypr.land/Configuring/Start/
|
||||||
|
-- Templated by chezmoi: per-system autostart, touchpad, and workspace rules.
|
||||||
|
hl.config({ autogenerated = false })
|
||||||
|
|
||||||
|
hl.on("hyprland.start", function()
|
||||||
|
-- DMS_STARTUP_BEGIN
|
||||||
|
hl.exec_cmd("dbus-update-activation-environment --systemd --all")
|
||||||
|
hl.exec_cmd("systemctl --user start hyprland-session.target")
|
||||||
|
-- DMS_STARTUP_END
|
||||||
|
|
||||||
|
-- Auto Start Applications
|
||||||
|
{{ if eq .system "desktop" }}
|
||||||
|
hl.exec_cmd("kdeconnectd")
|
||||||
|
hl.exec_cmd("feishin")
|
||||||
|
hl.exec_cmd("vesktop")
|
||||||
|
{{ else if eq .system "laptop" }}
|
||||||
|
hl.exec_cmd("kdeconnectd")
|
||||||
|
{{ else }}
|
||||||
|
-- server has no GUI; nothing to autostart
|
||||||
|
{{ end }}
|
||||||
|
end)
|
||||||
|
|
||||||
|
hl.config({
|
||||||
|
input = {
|
||||||
|
kb_layout = "us",
|
||||||
|
numlock_by_default = true,
|
||||||
|
follow_mouse = 1,
|
||||||
|
repeat_delay = 300,
|
||||||
|
touchpad = {
|
||||||
|
tap_to_click = true,
|
||||||
|
natural_scroll = true,
|
||||||
|
{{ if eq .system "laptop" }}
|
||||||
|
disable_while_typing = true,
|
||||||
|
{{ end }}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
general = {
|
||||||
|
gaps_in = 4,
|
||||||
|
gaps_out = 4,
|
||||||
|
border_size = 1,
|
||||||
|
layout = "dwindle",
|
||||||
|
},
|
||||||
|
decoration = {
|
||||||
|
rounding = 12,
|
||||||
|
active_opacity = 1.0,
|
||||||
|
inactive_opacity = 0.97,
|
||||||
|
dim_inactive = true,
|
||||||
|
dim_strength = 0.1,
|
||||||
|
shadow = {
|
||||||
|
enabled = true,
|
||||||
|
range = 30,
|
||||||
|
render_power = 5,
|
||||||
|
offset = "0 5",
|
||||||
|
color = "rgba(00000070)",
|
||||||
|
},
|
||||||
|
blur = {
|
||||||
|
enabled = true,
|
||||||
|
size = 8,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
dwindle = {
|
||||||
|
preserve_split = true,
|
||||||
|
},
|
||||||
|
master = {
|
||||||
|
mfact = 0.5,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.animation({ leaf = "windowsIn", enabled = true, speed = 3, bezier = "default" })
|
||||||
|
hl.animation({ leaf = "windowsOut", enabled = true, speed = 3, bezier = "default" })
|
||||||
|
hl.animation({ leaf = "workspaces", enabled = true, speed = 5, bezier = "default" })
|
||||||
|
hl.animation({ leaf = "windowsMove", enabled = true, speed = 4, bezier = "default" })
|
||||||
|
hl.animation({ leaf = "fade", enabled = true, speed = 3, bezier = "default" })
|
||||||
|
hl.animation({ leaf = "border", enabled = true, speed = 3, bezier = "default" })
|
||||||
|
hl.layer_rule({ match = { namespace = "^(quickshell)$" }, no_anim = true })
|
||||||
|
hl.layer_rule({ match = { namespace = "^dms:.*" }, no_anim = true })
|
||||||
|
|
||||||
|
-- Workspaces rules
|
||||||
|
{{ if eq .system "desktop" }}
|
||||||
|
hl.workspace_rule({ workspace = "1", monitor = "HDMI-A-1" })
|
||||||
|
hl.workspace_rule({ workspace = "2", monitor = "HDMI-A-1" })
|
||||||
|
|
||||||
|
hl.workspace_rule({ workspace = "3", monitor = "DP-2" })
|
||||||
|
hl.workspace_rule({ workspace = "4", monitor = "DP-2" })
|
||||||
|
hl.workspace_rule({ workspace = "5", monitor = "DP-2" })
|
||||||
|
|
||||||
|
hl.workspace_rule({ workspace = "6", monitor = "HDMI-A-2" })
|
||||||
|
hl.workspace_rule({ workspace = "7", monitor = "HDMI-A-2" })
|
||||||
|
{{ else if eq .system "laptop" }}
|
||||||
|
hl.workspace_rule({ workspace = "1", monitor = "eDP-1" })
|
||||||
|
hl.workspace_rule({ workspace = "2", monitor = "eDP-1" })
|
||||||
|
hl.workspace_rule({ workspace = "3", monitor = "eDP-1" })
|
||||||
|
hl.workspace_rule({ workspace = "4", monitor = "eDP-1" })
|
||||||
|
hl.workspace_rule({ workspace = "5", monitor = "eDP-1" })
|
||||||
|
{{ else }}
|
||||||
|
-- server has no GUI; no workspace rules
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
-- Env vars
|
||||||
|
hl.env("XDG_MENU_PREFIX", "plasma-")
|
||||||
|
hl.env("QT_QPA_PLATFORM", "wayland")
|
||||||
|
hl.env("QT_QPA_PLATFORMTHEME", "gtk3")
|
||||||
|
hl.env("ELECTRON_OZONE_PLATFORM_HINT", "auto")
|
||||||
|
|
||||||
|
-- Dank Material Shell
|
||||||
|
require("dms.colors")
|
||||||
|
require("dms.outputs")
|
||||||
|
require("dms.layout")
|
||||||
|
require("dms.cursor")
|
||||||
|
require("dms.binds")
|
||||||
|
require("dms.binds-user")
|
||||||
|
require("dms.windowrules")
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
general {
|
||||||
|
col.active_border = rgba(8c938877)
|
||||||
|
col.inactive_border = rgba(42494055)
|
||||||
|
}
|
||||||
|
|
||||||
|
misc {
|
||||||
|
background_color = rgba(10140fFF)
|
||||||
|
}
|
||||||
|
|
||||||
|
plugin {
|
||||||
|
hyprbars {
|
||||||
|
# Honestly idk if it works like css, but well, why not
|
||||||
|
bar_text_font = Google Sans Flex Medium, Rubik, Geist, AR One Sans, Reddit Sans, Inter, Roboto, Ubuntu, Noto Sans, sans-serif
|
||||||
|
bar_height = 30
|
||||||
|
bar_padding = 10
|
||||||
|
bar_button_padding = 5
|
||||||
|
bar_precedence_over_border = true
|
||||||
|
bar_part_of_window = true
|
||||||
|
|
||||||
|
bar_color = rgba(10140fFF)
|
||||||
|
col.text = rgba(e0e4dbFF)
|
||||||
|
|
||||||
|
|
||||||
|
# example buttons (R -> L)
|
||||||
|
# hyprbars-button = color, size, on-click
|
||||||
|
hyprbars-button = rgb(e0e4db), 13, , hyprctl dispatch killactive
|
||||||
|
hyprbars-button = rgb(e0e4db), 13, , hyprctl dispatch fullscreen 1
|
||||||
|
hyprbars-button = rgb(e0e4db), 13, , hyprctl dispatch movetoworkspacesilent special
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
windowrule = border_color rgba(9fd49bAA) rgba(9fd49b77), match:pin 1
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# This configuration is generated by matugen
|
||||||
|
# Changing these variables with matugen still enabled will overwrite them.
|
||||||
|
|
||||||
|
$text_color = rgba(bbf0b6FF)
|
||||||
|
$entry_background_color = rgba(00210511)
|
||||||
|
$entry_border_color = rgba(8c938855)
|
||||||
|
$entry_color = rgba(bbf0b6FF)
|
||||||
|
$font_family = Google Sans Flex Medium
|
||||||
|
$font_family_clock = Google Sans Flex Medium
|
||||||
|
$font_material_symbols = Material Symbols Rounded
|
||||||
|
|
||||||
|
$background_image = /home/keule/Pictures/wallpapers/background.jpg
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
# AstroNvim Template
|
||||||
|
|
||||||
|
**NOTE:** This is for AstroNvim v6+
|
||||||
|
|
||||||
|
A template for getting started with [AstroNvim](https://github.com/AstroNvim/AstroNvim)
|
||||||
|
|
||||||
|
## 🛠️ Installation
|
||||||
|
|
||||||
|
#### Make a backup of your current nvim and shared folder
|
||||||
|
|
||||||
|
```shell
|
||||||
|
mv ~/.config/nvim ~/.config/nvim.bak
|
||||||
|
mv ~/.local/share/nvim ~/.local/share/nvim.bak
|
||||||
|
mv ~/.local/state/nvim ~/.local/state/nvim.bak
|
||||||
|
mv ~/.cache/nvim ~/.cache/nvim.bak
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Create a new user repository from this template
|
||||||
|
|
||||||
|
Press the "Use this template" button above to create a new repository to store your user configuration.
|
||||||
|
|
||||||
|
You can also just clone this repository directly if you do not want to track your user configuration in GitHub.
|
||||||
|
|
||||||
|
#### Clone the repository
|
||||||
|
|
||||||
|
```shell
|
||||||
|
git clone https://github.com/<your_user>/<your_repository> ~/.config/nvim
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Start Neovim
|
||||||
|
|
||||||
|
```shell
|
||||||
|
nvim
|
||||||
|
```
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
-- This file simply bootstraps the installation of Lazy.nvim and then calls other files for execution
|
||||||
|
-- This file doesn't necessarily need to be touched, BE CAUTIOUS editing this file and proceed at your own risk.
|
||||||
|
local lazypath = vim.env.LAZY or vim.fn.stdpath "data" .. "/lazy/lazy.nvim"
|
||||||
|
|
||||||
|
if not (vim.env.LAZY or (vim.uv or vim.loop).fs_stat(lazypath)) then
|
||||||
|
-- stylua: ignore
|
||||||
|
local result = vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath })
|
||||||
|
if vim.v.shell_error ~= 0 then
|
||||||
|
-- stylua: ignore
|
||||||
|
vim.api.nvim_echo({ { ("Error cloning lazy.nvim:\n%s\n"):format(result), "ErrorMsg" }, { "Press any key to exit...", "MoreMsg" } }, true, {})
|
||||||
|
vim.fn.getchar()
|
||||||
|
vim.cmd.quit()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
|
-- validate that lazy is available
|
||||||
|
if not pcall(require, "lazy") then
|
||||||
|
-- stylua: ignore
|
||||||
|
vim.api.nvim_echo({ { ("Unable to load lazy from: %s\n"):format(lazypath), "ErrorMsg" }, { "Press any key to exit...", "MoreMsg" } }, true, {})
|
||||||
|
vim.fn.getchar()
|
||||||
|
vim.cmd.quit()
|
||||||
|
end
|
||||||
|
|
||||||
|
require "lazy_setup"
|
||||||
|
require "polish"
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
-- if true then return {} end
|
||||||
|
|
||||||
|
-- AstroCommunity: import any community modules here
|
||||||
|
-- We import this file in `lazy_setup.lua` before the `plugins/` folder.
|
||||||
|
-- This guarantees that the specs are processed before any user plugins.
|
||||||
|
|
||||||
|
---@type LazySpec
|
||||||
|
return {
|
||||||
|
"AstroNvim/astrocommunity",
|
||||||
|
{ import = "astrocommunity.pack.lua" },
|
||||||
|
{ import = "astrocommunity.media.vim-wakatime" },
|
||||||
|
{ import = "astrocommunity.search.grug-far-nvim" },
|
||||||
|
{ import = "astrocommunity.lsp.nvim-java" },
|
||||||
|
{ import = "astrocommunity.pack.vue" },
|
||||||
|
{ import = "astrocommunity.git.diffview-nvim" },
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
require("lazy").setup({
|
||||||
|
{
|
||||||
|
"AstroNvim/AstroNvim",
|
||||||
|
version = "^6", -- Remove version tracking to elect for nightly AstroNvim
|
||||||
|
import = "astronvim.plugins",
|
||||||
|
opts = { -- AstroNvim options must be set here with the `import` key
|
||||||
|
mapleader = " ", -- This ensures the leader key must be configured before Lazy is set up
|
||||||
|
maplocalleader = ",", -- This ensures the localleader key must be configured before Lazy is set up
|
||||||
|
icons_enabled = true, -- Set to false to disable icons (if no Nerd Font is available)
|
||||||
|
pin_plugins = nil, -- Default will pin plugins when tracking `version` of AstroNvim, set to true/false to override
|
||||||
|
update_notifications = true, -- Enable/disable notification about running `:Lazy update` twice to update pinned plugins
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{ import = "community" },
|
||||||
|
{ import = "plugins" },
|
||||||
|
} --[[@as LazySpec]], {
|
||||||
|
-- Configure any other `lazy.nvim` configuration options here
|
||||||
|
install = { colorscheme = { "astrotheme", "habamax" } },
|
||||||
|
ui = { backdrop = 100 },
|
||||||
|
performance = {
|
||||||
|
rtp = {
|
||||||
|
-- disable some rtp plugins, add more to your liking
|
||||||
|
disabled_plugins = {
|
||||||
|
"gzip",
|
||||||
|
"netrwPlugin",
|
||||||
|
"tarPlugin",
|
||||||
|
"tohtml",
|
||||||
|
"zipPlugin",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
} --[[@as LazyConfig]])
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
|
||||||
|
|
||||||
|
-- AstroCore provides a central place to modify mappings, vim options, autocommands, and more!
|
||||||
|
-- Configuration documentation can be found with `:h astrocore`
|
||||||
|
-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
|
||||||
|
-- as this provides autocomplete and documentation while editing
|
||||||
|
|
||||||
|
---@type LazySpec
|
||||||
|
return {
|
||||||
|
"AstroNvim/astrocore",
|
||||||
|
---@type AstroCoreOpts
|
||||||
|
opts = {
|
||||||
|
-- Configure core features of AstroNvim
|
||||||
|
features = {
|
||||||
|
large_buf = { size = 1024 * 256, lines = 10000 }, -- set global limits for large files for disabling features like treesitter
|
||||||
|
autopairs = true, -- enable autopairs at start
|
||||||
|
cmp = true, -- enable completion at start
|
||||||
|
diagnostics = { virtual_text = true, virtual_lines = false }, -- diagnostic settings on startup
|
||||||
|
highlighturl = true, -- highlight URLs at start
|
||||||
|
notifications = true, -- enable notifications at start
|
||||||
|
},
|
||||||
|
-- Diagnostics configuration (for vim.diagnostics.config({...})) when diagnostics are on
|
||||||
|
diagnostics = {
|
||||||
|
virtual_text = true,
|
||||||
|
underline = true,
|
||||||
|
},
|
||||||
|
-- passed to `vim.filetype.add`
|
||||||
|
filetypes = {
|
||||||
|
-- see `:h vim.filetype.add` for usage
|
||||||
|
extension = {
|
||||||
|
foo = "fooscript",
|
||||||
|
},
|
||||||
|
filename = {
|
||||||
|
[".foorc"] = "fooscript",
|
||||||
|
},
|
||||||
|
pattern = {
|
||||||
|
[".*/etc/foo/.*"] = "fooscript",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- vim options can be configured here
|
||||||
|
options = {
|
||||||
|
opt = { -- vim.opt.<key>
|
||||||
|
relativenumber = true, -- sets vim.opt.relativenumber
|
||||||
|
number = true, -- sets vim.opt.number
|
||||||
|
spell = false, -- sets vim.opt.spell
|
||||||
|
signcolumn = "yes", -- sets vim.opt.signcolumn to yes
|
||||||
|
wrap = false, -- sets vim.opt.wrap
|
||||||
|
},
|
||||||
|
g = { -- vim.g.<key>
|
||||||
|
-- configure global vim variables (vim.g)
|
||||||
|
-- NOTE: `mapleader` and `maplocalleader` must be set in the AstroNvim opts or before `lazy.setup`
|
||||||
|
-- This can be found in the `lua/lazy_setup.lua` file
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- Mappings can be configured through AstroCore as well.
|
||||||
|
-- NOTE: keycodes follow the casing in the vimdocs. For example, `<Leader>` must be capitalized
|
||||||
|
mappings = {
|
||||||
|
-- first key is the mode
|
||||||
|
n = {
|
||||||
|
-- second key is the lefthand side of the map
|
||||||
|
|
||||||
|
-- navigate buffer tabs
|
||||||
|
["]b"] = { function() require("astrocore.buffer").nav(vim.v.count1) end, desc = "Next buffer" },
|
||||||
|
["[b"] = { function() require("astrocore.buffer").nav(-vim.v.count1) end, desc = "Previous buffer" },
|
||||||
|
|
||||||
|
-- mappings seen under group name "Buffer"
|
||||||
|
["<Leader>bd"] = {
|
||||||
|
function()
|
||||||
|
require("astroui.status.heirline").buffer_picker(
|
||||||
|
function(bufnr) require("astrocore.buffer").close(bufnr) end
|
||||||
|
)
|
||||||
|
end,
|
||||||
|
desc = "Close buffer from tabline",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- tables with just a `desc` key will be registered with which-key if it's installed
|
||||||
|
-- this is useful for naming menus
|
||||||
|
-- ["<Leader>b"] = { desc = "Buffers" },
|
||||||
|
|
||||||
|
-- setting a mapping to false will disable it
|
||||||
|
-- ["<C-S>"] = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,110 @@
|
|||||||
|
-- if true then return {} end
|
||||||
|
|
||||||
|
-- AstroLSP allows you to customize the features in AstroNvim's LSP configuration engine
|
||||||
|
-- Configuration documentation can be found with `:h astrolsp`
|
||||||
|
-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
|
||||||
|
-- as this provides autocomplete and documentation while editing
|
||||||
|
|
||||||
|
---@type LazySpec
|
||||||
|
return {
|
||||||
|
"AstroNvim/astrolsp",
|
||||||
|
---@type AstroLSPOpts
|
||||||
|
opts = {
|
||||||
|
-- Configuration table of features provided by AstroLSP
|
||||||
|
features = {
|
||||||
|
codelens = true, -- enable/disable codelens refresh on start
|
||||||
|
inlay_hints = false, -- enable/disable inlay hints on start
|
||||||
|
semantic_tokens = true, -- enable/disable semantic token highlighting
|
||||||
|
},
|
||||||
|
-- customize lsp formatting options
|
||||||
|
formatting = {
|
||||||
|
-- control auto formatting on save
|
||||||
|
format_on_save = {
|
||||||
|
enabled = true, -- enable or disable format on save globally
|
||||||
|
allow_filetypes = { -- enable format on save for specified filetypes only
|
||||||
|
-- "go",
|
||||||
|
},
|
||||||
|
ignore_filetypes = { -- disable format on save for specified filetypes
|
||||||
|
-- "python",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
disabled = { -- disable formatting capabilities for the listed language servers
|
||||||
|
-- disable lua_ls formatting capability if you want to use StyLua to format your lua code
|
||||||
|
-- "lua_ls",
|
||||||
|
},
|
||||||
|
timeout_ms = 1000, -- default format timeout
|
||||||
|
-- filter = function(client) -- fully override the default formatting function
|
||||||
|
-- return true
|
||||||
|
-- end
|
||||||
|
},
|
||||||
|
-- enable servers that you already have installed without mason
|
||||||
|
servers = {
|
||||||
|
"ccls",
|
||||||
|
},
|
||||||
|
-- customize language server configuration passed to `vim.lsp.config`
|
||||||
|
-- client specific configuration can also go in `lsp/` in your configuration root (see `:h lsp-config`)
|
||||||
|
config = {
|
||||||
|
clangd = {
|
||||||
|
enabled = false,
|
||||||
|
},
|
||||||
|
ccls = {
|
||||||
|
cmd = { "ccls" },
|
||||||
|
filetypes = { "cpp", "c" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- customize how language servers are attached
|
||||||
|
handlers = {
|
||||||
|
-- a function with the key `*` modifies the default handler, functions takes the server name as the parameter
|
||||||
|
-- ["*"] = function(server) vim.lsp.enable(server) end
|
||||||
|
|
||||||
|
-- the key is the server that is being setup with `vim.lsp.config`
|
||||||
|
-- rust_analyzer = false, -- setting a handler to false will disable the set up of that language server
|
||||||
|
},
|
||||||
|
-- Configure buffer local auto commands to add when attaching a language server
|
||||||
|
autocmds = {
|
||||||
|
-- first key is the `augroup` to add the auto commands to (:h augroup)
|
||||||
|
lsp_codelens_refresh = {
|
||||||
|
-- Optional condition to create/delete auto command group
|
||||||
|
-- can either be a string of a client capability or a function of `fun(client, bufnr): boolean`
|
||||||
|
-- condition will be resolved for each client on each execution and if it ever fails for all clients,
|
||||||
|
-- the auto commands will be deleted for that buffer
|
||||||
|
cond = "textDocument/codeLens",
|
||||||
|
-- cond = function(client, bufnr) return client.name == "lua_ls" end,
|
||||||
|
-- list of auto commands to set
|
||||||
|
{
|
||||||
|
-- events to trigger
|
||||||
|
event = { "InsertLeave", "BufEnter" },
|
||||||
|
-- the rest of the autocmd options (:h nvim_create_autocmd)
|
||||||
|
desc = "Refresh codelens (buffer)",
|
||||||
|
callback = function(args)
|
||||||
|
if require("astrolsp").config.features.codelens then vim.lsp.codelens.enable(true, { bufnr = args.buf }) end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- mappings to be set up on attaching of a language server
|
||||||
|
mappings = {
|
||||||
|
n = {
|
||||||
|
-- a `cond` key can provided as the string of a server capability to be required to attach, or a function with `client` and `bufnr` parameters from the `on_attach` that returns a boolean
|
||||||
|
gD = {
|
||||||
|
function() vim.lsp.buf.declaration() end,
|
||||||
|
desc = "Declaration of current symbol",
|
||||||
|
cond = "textDocument/declaration",
|
||||||
|
},
|
||||||
|
["<Leader>uY"] = {
|
||||||
|
function() require("astrolsp.toggles").buffer_semantic_tokens() end,
|
||||||
|
desc = "Toggle LSP semantic highlight (buffer)",
|
||||||
|
cond = function(client)
|
||||||
|
return client:supports_method "textDocument/semanticTokens/full" and vim.lsp.semantic_tokens ~= nil
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- A custom `on_attach` function to be run after the default `on_attach` function
|
||||||
|
-- takes two parameters `client` and `bufnr` (`:h lsp-attach`)
|
||||||
|
on_attach = function(client, bufnr)
|
||||||
|
-- this would disable semanticTokensProvider for all clients
|
||||||
|
-- client.server_capabilities.semanticTokensProvider = nil
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
|
||||||
|
|
||||||
|
-- AstroUI provides the basis for configuring the AstroNvim User Interface
|
||||||
|
-- Configuration documentation can be found with `:h astroui`
|
||||||
|
-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
|
||||||
|
-- as this provides autocomplete and documentation while editing
|
||||||
|
|
||||||
|
---@type LazySpec
|
||||||
|
return {
|
||||||
|
"AstroNvim/astroui",
|
||||||
|
---@type AstroUIOpts
|
||||||
|
opts = {
|
||||||
|
-- change colorscheme
|
||||||
|
colorscheme = "astrodark",
|
||||||
|
-- AstroUI allows you to easily modify highlight groups easily for any and all colorschemes
|
||||||
|
highlights = {
|
||||||
|
init = { -- this table overrides highlights in all themes
|
||||||
|
-- Normal = { bg = "#000000" },
|
||||||
|
},
|
||||||
|
astrodark = { -- a table of overrides/changes when applying the astrotheme theme
|
||||||
|
-- Normal = { bg = "#000000" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- Icons can be configured throughout the interface
|
||||||
|
icons = {
|
||||||
|
-- configure the loading of the lsp in the status line
|
||||||
|
LSPLoading1 = "⠋",
|
||||||
|
LSPLoading2 = "⠙",
|
||||||
|
LSPLoading3 = "⠹",
|
||||||
|
LSPLoading4 = "⠸",
|
||||||
|
LSPLoading5 = "⠼",
|
||||||
|
LSPLoading6 = "⠴",
|
||||||
|
LSPLoading7 = "⠦",
|
||||||
|
LSPLoading8 = "⠧",
|
||||||
|
LSPLoading9 = "⠇",
|
||||||
|
LSPLoading10 = "⠏",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"AstroNvim/astrocore",
|
||||||
|
---@type AstroCoreOpts
|
||||||
|
opts = {
|
||||||
|
mappings = {
|
||||||
|
n = {
|
||||||
|
["<Leader><space>"] = {
|
||||||
|
function() require("snacks").picker.buffers() end,
|
||||||
|
desc = "Find buffers",
|
||||||
|
},
|
||||||
|
["<Leader>F"] = {
|
||||||
|
function()
|
||||||
|
require("snacks").picker.files {
|
||||||
|
hidden = true,
|
||||||
|
ignored = true,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
desc = "Find buffers",
|
||||||
|
},
|
||||||
|
["<Leader>ss"] = {
|
||||||
|
function()
|
||||||
|
local aerial_avail, aerial = pcall(require, "aerial")
|
||||||
|
if aerial_avail and aerial.snacks_picker then
|
||||||
|
aerial.snacks_picker()
|
||||||
|
else
|
||||||
|
require("snacks").picker.lsp_symbols()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
desc = "Search symbols",
|
||||||
|
},
|
||||||
|
["<Leader>fj"] = {
|
||||||
|
"<cmd>%!jq .<CR>",
|
||||||
|
desc = "Format Json",
|
||||||
|
},
|
||||||
|
["<Leader>w"] = {
|
||||||
|
"<cmd>:noautocmd w<CR>",
|
||||||
|
desc = "Save Fileeee",
|
||||||
|
},
|
||||||
|
-- quick save
|
||||||
|
-- ["<C-s>"] = { ":w!<cr>", desc = "Save File" },
|
||||||
|
-- Git
|
||||||
|
["<Leader>vd"] = {
|
||||||
|
"<cmd>DiffviewOpen<CR>",
|
||||||
|
desc = "Diffview",
|
||||||
|
},
|
||||||
|
["<Leader>vD"] = {
|
||||||
|
"<cmd>DiffviewOpen HEAD^!<CR>",
|
||||||
|
desc = "Diffview Last Commit",
|
||||||
|
},
|
||||||
|
["<Leader>vl"] = {
|
||||||
|
function()
|
||||||
|
require("snacks").picker.git_log {
|
||||||
|
confirm = function(picker, item)
|
||||||
|
picker:close()
|
||||||
|
vim.cmd("DiffviewOpen " .. item.commit .. "^!")
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
silent = true,
|
||||||
|
desc = "Diff Commit",
|
||||||
|
},
|
||||||
|
["<Leader>vh"] = {
|
||||||
|
"<cmd>DiffviewFileHistory %<CR>",
|
||||||
|
desc = "File History",
|
||||||
|
},
|
||||||
|
["<Leader>vH"] = {
|
||||||
|
"<cmd>DiffviewFileHistory<CR>",
|
||||||
|
desc = "Repo History",
|
||||||
|
},
|
||||||
|
["<Leader>vr"] = {
|
||||||
|
"<cmd>DiffviewRefresh<CR>",
|
||||||
|
desc = "Diffview Refresh",
|
||||||
|
},
|
||||||
|
["<Leader>vc"] = {
|
||||||
|
"<cmd>DiffviewClose<CR>",
|
||||||
|
desc = "Diffview Close",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
-- if true then return {} end
|
||||||
|
|
||||||
|
-- Customize Mason
|
||||||
|
|
||||||
|
---@type LazySpec
|
||||||
|
return {
|
||||||
|
-- use mason-tool-installer for automatically installing Mason packages
|
||||||
|
{
|
||||||
|
"WhoIsSethDaniel/mason-tool-installer.nvim",
|
||||||
|
-- overrides `require("mason-tool-installer").setup(...)`
|
||||||
|
opts = {
|
||||||
|
-- Make sure to use the names found in `:Mason`
|
||||||
|
ensure_installed = {
|
||||||
|
-- install language servers
|
||||||
|
"lua-language-server",
|
||||||
|
"angular-language-server",
|
||||||
|
"typescript-language-server",
|
||||||
|
"gopls",
|
||||||
|
"html-lsp",
|
||||||
|
"css-lsp",
|
||||||
|
"c3-lsp",
|
||||||
|
"json-lsp",
|
||||||
|
"shellcheck",
|
||||||
|
-- "clangd",
|
||||||
|
-- "cmake-language-server",
|
||||||
|
"csharp-language-server",
|
||||||
|
"dockerfile-language-server",
|
||||||
|
-- "docker-compose-language-service",
|
||||||
|
"kotlin-language-server",
|
||||||
|
"postgres-language-server",
|
||||||
|
"python-lsp-server",
|
||||||
|
"rust-analyzer",
|
||||||
|
|
||||||
|
-- install formatters
|
||||||
|
"stylua",
|
||||||
|
|
||||||
|
-- install debuggers
|
||||||
|
"debugpy",
|
||||||
|
|
||||||
|
-- install any other package
|
||||||
|
"tree-sitter-cli",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
return {
|
||||||
|
"nvim-neo-tree/neo-tree.nvim",
|
||||||
|
opts = {
|
||||||
|
filesystem = {
|
||||||
|
filtered_items = {
|
||||||
|
hide_dotfiles = false,
|
||||||
|
hide_gitignored = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
|
||||||
|
|
||||||
|
-- Customize None-ls sources
|
||||||
|
|
||||||
|
---@type LazySpec
|
||||||
|
return {
|
||||||
|
"nvimtools/none-ls.nvim",
|
||||||
|
opts = function(_, opts)
|
||||||
|
-- opts variable is the default configuration table for the setup function call
|
||||||
|
-- local null_ls = require "null-ls"
|
||||||
|
|
||||||
|
-- Check supported formatters and linters
|
||||||
|
-- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/formatting
|
||||||
|
-- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
|
||||||
|
|
||||||
|
-- Only insert new sources, do not replace the existing ones
|
||||||
|
-- (If you wish to replace, use `opts.sources = {}` instead of the `list_insert_unique` function)
|
||||||
|
opts.sources = require("astrocore").list_insert_unique(opts.sources, {
|
||||||
|
-- Set a formatter
|
||||||
|
-- null_ls.builtins.formatting.stylua,
|
||||||
|
-- null_ls.builtins.formatting.prettier,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
-- if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
|
||||||
|
|
||||||
|
-- Customize Treesitter
|
||||||
|
-- --------------------
|
||||||
|
-- Treesitter customizations are handled with AstroCore
|
||||||
|
-- as nvim-treesitter simply provides a download utility for parsers
|
||||||
|
-- :TSInstall all
|
||||||
|
|
||||||
|
---@type LazySpec
|
||||||
|
return {
|
||||||
|
"AstroNvim/astrocore",
|
||||||
|
---@type AstroCoreOpts
|
||||||
|
opts = {
|
||||||
|
treesitter = {
|
||||||
|
highlight = true, -- enable/disable treesitter based highlighting
|
||||||
|
indent = true, -- enable/disable treesitter based indentation
|
||||||
|
auto_install = true, -- enable/disable automatic installation of detected languages
|
||||||
|
ensure_installed = {
|
||||||
|
"asm",
|
||||||
|
"angular",
|
||||||
|
"arduino",
|
||||||
|
"bash",
|
||||||
|
"c",
|
||||||
|
"c3",
|
||||||
|
"c_sharp",
|
||||||
|
"cmake",
|
||||||
|
"cpp",
|
||||||
|
"css",
|
||||||
|
"csv",
|
||||||
|
"dart",
|
||||||
|
"dockerfile",
|
||||||
|
"fish",
|
||||||
|
"gitignore",
|
||||||
|
"go",
|
||||||
|
"graphql",
|
||||||
|
"html",
|
||||||
|
"hyprlang",
|
||||||
|
"java",
|
||||||
|
"javadoc",
|
||||||
|
"javascript",
|
||||||
|
"jq",
|
||||||
|
"json",
|
||||||
|
"kitty",
|
||||||
|
"kotlin",
|
||||||
|
"latex",
|
||||||
|
"linkerscript",
|
||||||
|
"llvm",
|
||||||
|
"lua",
|
||||||
|
"luadoc",
|
||||||
|
"make",
|
||||||
|
"markdown",
|
||||||
|
"markdown_inline",
|
||||||
|
"nasm",
|
||||||
|
"nginx",
|
||||||
|
"ninja",
|
||||||
|
"nix",
|
||||||
|
"odin",
|
||||||
|
"pascal",
|
||||||
|
"perl",
|
||||||
|
"php",
|
||||||
|
"pioasm",
|
||||||
|
"vim",
|
||||||
|
"vimdoc",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
if true then return {} end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
|
||||||
|
|
||||||
|
-- You can also add or configure plugins by creating files in this `plugins/` folder
|
||||||
|
-- PLEASE REMOVE THE EXAMPLES YOU HAVE NO INTEREST IN BEFORE ENABLING THIS FILE
|
||||||
|
-- Here are some examples:
|
||||||
|
|
||||||
|
---@type LazySpec
|
||||||
|
return {
|
||||||
|
|
||||||
|
-- == Examples of Adding Plugins ==
|
||||||
|
|
||||||
|
"andweeb/presence.nvim",
|
||||||
|
{
|
||||||
|
"ray-x/lsp_signature.nvim",
|
||||||
|
event = "BufRead",
|
||||||
|
config = function() require("lsp_signature").setup() end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- == Examples of Overriding Plugins ==
|
||||||
|
|
||||||
|
-- customize dashboard options
|
||||||
|
{
|
||||||
|
"folke/snacks.nvim",
|
||||||
|
opts = {
|
||||||
|
dashboard = {
|
||||||
|
preset = {
|
||||||
|
header = table.concat({
|
||||||
|
" █████ ███████ ████████ ██████ ██████ ",
|
||||||
|
"██ ██ ██ ██ ██ ██ ██ ██",
|
||||||
|
"███████ ███████ ██ ██████ ██ ██",
|
||||||
|
"██ ██ ██ ██ ██ ██ ██ ██",
|
||||||
|
"██ ██ ███████ ██ ██ ██ ██████ ",
|
||||||
|
"",
|
||||||
|
"███ ██ ██ ██ ██ ███ ███",
|
||||||
|
"████ ██ ██ ██ ██ ████ ████",
|
||||||
|
"██ ██ ██ ██ ██ ██ ██ ████ ██",
|
||||||
|
"██ ██ ██ ██ ██ ██ ██ ██ ██",
|
||||||
|
"██ ████ ████ ██ ██ ██",
|
||||||
|
}, "\n"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- You can disable default plugins as follows:
|
||||||
|
{ "max397574/better-escape.nvim", enabled = false },
|
||||||
|
|
||||||
|
-- You can also easily customize additional setup of plugins that is outside of the plugin's setup call
|
||||||
|
{
|
||||||
|
"L3MON4D3/LuaSnip",
|
||||||
|
config = function(plugin, opts)
|
||||||
|
-- add more custom luasnip configuration such as filetype extend or custom snippets
|
||||||
|
local luasnip = require "luasnip"
|
||||||
|
luasnip.filetype_extend("javascript", { "javascriptreact" })
|
||||||
|
|
||||||
|
-- include the default astronvim config that calls the setup call
|
||||||
|
require "astronvim.plugins.configs.luasnip"(plugin, opts)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"windwp/nvim-autopairs",
|
||||||
|
config = function(plugin, opts)
|
||||||
|
require "astronvim.plugins.configs.nvim-autopairs"(plugin, opts) -- include the default astronvim config that calls the setup call
|
||||||
|
-- add more custom autopairs configuration such as custom rules
|
||||||
|
local npairs = require "nvim-autopairs"
|
||||||
|
local Rule = require "nvim-autopairs.rule"
|
||||||
|
local cond = require "nvim-autopairs.conds"
|
||||||
|
npairs.add_rules(
|
||||||
|
{
|
||||||
|
Rule("$", "$", { "tex", "latex" })
|
||||||
|
-- don't add a pair if the next character is %
|
||||||
|
:with_pair(cond.not_after_regex "%%")
|
||||||
|
-- don't add a pair if the previous character is xxx
|
||||||
|
:with_pair(
|
||||||
|
cond.not_before_regex("xxx", 3)
|
||||||
|
)
|
||||||
|
-- don't move right when repeat character
|
||||||
|
:with_move(cond.none())
|
||||||
|
-- don't delete if the next character is xx
|
||||||
|
:with_del(cond.not_after_regex "xx")
|
||||||
|
-- disable adding a newline when you press <cr>
|
||||||
|
:with_cr(cond.none()),
|
||||||
|
},
|
||||||
|
-- disable for .vim files, but it work for another filetypes
|
||||||
|
Rule("a", "a", "-vim")
|
||||||
|
)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
if true then return end -- WARN: REMOVE THIS LINE TO ACTIVATE THIS FILE
|
||||||
|
|
||||||
|
-- This will run last in the setup process.
|
||||||
|
-- This is just pure lua so anything that doesn't
|
||||||
|
-- fit in the normal config locations above can go here
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
base: lua51
|
||||||
|
|
||||||
|
globals:
|
||||||
|
vim:
|
||||||
|
any: true
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
std = "neovim"
|
||||||
|
|
||||||
|
[rules]
|
||||||
|
global_usage = "allow"
|
||||||
|
if_same_then_else = "allow"
|
||||||
|
incorrect_standard_library_use = "allow"
|
||||||
|
mixed_table = "allow"
|
||||||
|
multiple_statements = "allow"
|
||||||
@@ -44,7 +44,9 @@ min_time = 1
|
|||||||
# Somethere at the beginning
|
# Somethere at the beginning
|
||||||
[battery]
|
[battery]
|
||||||
charging_symbol = ""
|
charging_symbol = ""
|
||||||
disabled = true
|
{{ if eq .system "laptop" }}disabled = false
|
||||||
|
{{ else }}disabled = true
|
||||||
|
{{ end }}
|
||||||
discharging_symbol = ""
|
discharging_symbol = ""
|
||||||
full_symbol = ""
|
full_symbol = ""
|
||||||
|
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
# Bookmarks
|
||||||
|
[[mgr.prepend_keymap]]
|
||||||
|
on = [ "b", "g" ]
|
||||||
|
run = "cd ~/git/"
|
||||||
|
desc = "GIT"
|
||||||
|
|
||||||
|
[[mgr.prepend_keymap]]
|
||||||
|
on = [ "b", "D" ]
|
||||||
|
run = "cd ~/Data/"
|
||||||
|
desc = "DATA"
|
||||||
|
|
||||||
|
[[mgr.prepend_keymap]]
|
||||||
|
on = [ "b", "d" ]
|
||||||
|
run = "cd ~/.dotfiles/"
|
||||||
|
desc = "DOTFILES"
|
||||||
|
|
||||||
|
[[mgr.prepend_keymap]]
|
||||||
|
on = [ "o", "n" ]
|
||||||
|
run = "shell \"nvim\" --block"
|
||||||
|
desc = "Open NeoVim"
|
||||||
|
|
||||||
|
[[mgr.prepend_keymap]]
|
||||||
|
on = [ "m" ]
|
||||||
|
run = "plugin bookmarks save"
|
||||||
|
desc = "Save current position as a bookmark"
|
||||||
|
|
||||||
|
[[mgr.prepend_keymap]]
|
||||||
|
on = [ "'" ]
|
||||||
|
run = "plugin bookmarks jump"
|
||||||
|
desc = "Jump to a bookmark"
|
||||||
|
|
||||||
|
[[mgr.prepend_keymap]]
|
||||||
|
on = [ "b", "d" ]
|
||||||
|
run = "plugin bookmarks delete"
|
||||||
|
desc = "Delete a bookmark"
|
||||||
|
|
||||||
|
[[mgr.prepend_keymap]]
|
||||||
|
on = [ "b", "D" ]
|
||||||
|
run = "plugin bookmarks delete_all"
|
||||||
|
desc = "Delete all bookmarks"
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
[[plugin.deps]]
|
||||||
|
use = "dedukun/bookmarks"
|
||||||
|
rev = "9ef1254"
|
||||||
|
hash = "92fbb5483657fa7976cdf4e0104e18e0"
|
||||||
|
|
||||||
|
[flavor]
|
||||||
|
deps = []
|
||||||
@@ -1,6 +1,4 @@
|
|||||||
MIT License
|
Copyright (c) 2024 dedukun
|
||||||
|
|
||||||
Copyright (c) 2021 Catppuccin
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -9,13 +7,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|||||||
copies of the Software, and to permit persons to whom the Software is
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
furnished to do so, subject to the following conditions:
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
The above copyright notice and this permission notice shall be included in
|
||||||
copies or substantial portions of the Software.
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
SOFTWARE.
|
THE SOFTWARE.
|
||||||
@@ -0,0 +1,158 @@
|
|||||||
|
# bookmarks.yazi
|
||||||
|
|
||||||
|
A [Yazi](https://github.com/sxyazi/yazi) plugin that adds the basic functionality of [vi-like marks](https://neovim.io/doc/user/motion.html#mark-motions).
|
||||||
|
|
||||||
|
https://github.com/dedukun/bookmarks.yazi/assets/25795432/9a9fe345-dd06-442e-99f1-8475ab22fad5
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- [Yazi](https://github.com/sxyazi/yazi) v25.4.8+
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
- Create/delete bookmarks
|
||||||
|
- Custom Notifications
|
||||||
|
- `''` to go back to the previous folder
|
||||||
|
- Bookmarks persistence
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ya pkg add dedukun/bookmarks
|
||||||
|
```
|
||||||
|
|
||||||
|
## Import/Export bookmarks
|
||||||
|
|
||||||
|
This plugin uses [Yazi's DDS](https://yazi-rs.github.io/docs/dds/) for bookmark persistence, as such,
|
||||||
|
the bookmarks are saved in DDS's state file (`~/.local/state/yazi/.dds` on Linux and `C:\Users\USERNAME\AppData\Roaming\yazi\state\.dds` on Windows)
|
||||||
|
|
||||||
|
**_NOTE:_** This system may be used by other plugins that you have installed, so this file might have more data than just the bookmarks.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Add this to your `keymap.toml`:
|
||||||
|
|
||||||
|
```toml
|
||||||
|
# If your yazi version is lower than v25.5.28, repleace "mgr" by "manager".
|
||||||
|
[[mgr.prepend_keymap]]
|
||||||
|
on = [ "m" ]
|
||||||
|
run = "plugin bookmarks save"
|
||||||
|
desc = "Save current position as a bookmark"
|
||||||
|
|
||||||
|
[[mgr.prepend_keymap]]
|
||||||
|
on = [ "'" ]
|
||||||
|
run = "plugin bookmarks jump"
|
||||||
|
desc = "Jump to a bookmark"
|
||||||
|
|
||||||
|
[[mgr.prepend_keymap]]
|
||||||
|
on = [ "b", "d" ]
|
||||||
|
run = "plugin bookmarks delete"
|
||||||
|
desc = "Delete a bookmark"
|
||||||
|
|
||||||
|
[[mgr.prepend_keymap]]
|
||||||
|
on = [ "b", "D" ]
|
||||||
|
run = "plugin bookmarks delete_all"
|
||||||
|
desc = "Delete all bookmarks"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Additionally there are configurations that can be done using the plugin's `setup` function in Yazi's `init.lua`, i.e. `~/.config/yazi/init.lua`.
|
||||||
|
The following are the default configurations:
|
||||||
|
|
||||||
|
```lua
|
||||||
|
-- ~/.config/yazi/init.lua
|
||||||
|
require("bookmarks"):setup({
|
||||||
|
last_directory = { enable = false, persist = false, mode="dir" },
|
||||||
|
persist = "none",
|
||||||
|
desc_format = "full",
|
||||||
|
file_pick_mode = "hover",
|
||||||
|
custom_desc_input = false,
|
||||||
|
show_keys = false,
|
||||||
|
notify = {
|
||||||
|
enable = false,
|
||||||
|
timeout = 1,
|
||||||
|
message = {
|
||||||
|
new = "New bookmark '<key>' -> '<folder>'",
|
||||||
|
delete = "Deleted bookmark in '<key>'",
|
||||||
|
delete_all = "Deleted all bookmarks",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
```
|
||||||
|
|
||||||
|
### `last_directory`
|
||||||
|
|
||||||
|
When enabled, a new bookmark is automatically created in `'` which allows the user to jump back to
|
||||||
|
the last directory.
|
||||||
|
|
||||||
|
There's also the option to enable persistence to this automatic bookmark.
|
||||||
|
|
||||||
|
Finally, there's a `mode` option with the following options:
|
||||||
|
|
||||||
|
| Value | Description |
|
||||||
|
| ------ | ------------------------------------------------------------ |
|
||||||
|
| `jump` | It saves the position before the last used mark |
|
||||||
|
| `mark` | It saves the last created mark |
|
||||||
|
| `dir` | Default, it saves the last visited directory (old behaviour) |
|
||||||
|
|
||||||
|
### `persist`
|
||||||
|
|
||||||
|
When enabled the bookmarks will persist, i.e. if you close and reopen Yazi they will still be
|
||||||
|
present.
|
||||||
|
|
||||||
|
There are three possible values for this option:
|
||||||
|
|
||||||
|
| Value | Description |
|
||||||
|
| ------ | -------------------------------------------------------------------------------------------------------------------- |
|
||||||
|
| `none` | The default value, i.e., no persistance |
|
||||||
|
| `all` | All the bookmarks are saved in persistent memory |
|
||||||
|
| `vim` | This mode emulates the vim global marks, i.e., only the bookmarks in upper case (A-Z) are saved to persistent memory |
|
||||||
|
|
||||||
|
### `desc_format`
|
||||||
|
|
||||||
|
The format for the bookmark description.
|
||||||
|
|
||||||
|
There are two possible values for this option:
|
||||||
|
|
||||||
|
| Value | Description |
|
||||||
|
| -------- | ----------------------------------------------------------------------------------------------- |
|
||||||
|
| `full` | The default, it shows the full path of the bookmark, i.e., the parent folder + the hovered file |
|
||||||
|
| `parent` | Only shows the parent folder of the bookmark |
|
||||||
|
|
||||||
|
### `file_pick_mode`
|
||||||
|
|
||||||
|
The mode for choosing which directory to bookmark.
|
||||||
|
|
||||||
|
There are two possible values for this option:
|
||||||
|
|
||||||
|
| Value | Description |
|
||||||
|
| -------- | ------------------------------------------------------------------- |
|
||||||
|
| `hover` | The default, it uses the path of the hovered file for new bookmarks |
|
||||||
|
| `parent` | Uses the path of the parent folder for new bookmarks |
|
||||||
|
|
||||||
|
### `notify`
|
||||||
|
|
||||||
|
When enabled, notifications will be shown when the user creates a new bookmark and deletes one or
|
||||||
|
all saved bookmarks.
|
||||||
|
|
||||||
|
By default the notification has a 1 second timeout that can be changed with `notify.timeout`.
|
||||||
|
|
||||||
|
Furthermore, you can customize the notification messages with `notify.message`.
|
||||||
|
For the `new` and `delete` messages, the `<key>` and `<folder>` keywords can be used, which will be replaced by the respective new/deleted bookmark's associated key and folder.
|
||||||
|
|
||||||
|
### `custom_desc_input`
|
||||||
|
|
||||||
|
When enabled, user can change description for new bookmark before it is saved.
|
||||||
|
|
||||||
|
By default the custom description input is filled with path.
|
||||||
|
|
||||||
|
### `show_keys`
|
||||||
|
|
||||||
|
When enabled, saving a new bookmark will display a list of all available keys.
|
||||||
|
|
||||||
|
If a key already has a saved bookmark, its description will be shown.
|
||||||
|
|
||||||
|
This helps prevent accidental overwriting of existing bookmarks.
|
||||||
|
|
||||||
|
By default no information is shown.
|
||||||
@@ -0,0 +1,405 @@
|
|||||||
|
--- @since 25.4.8
|
||||||
|
-- stylua: ignore
|
||||||
|
local SUPPORTED_KEYS = {
|
||||||
|
{ on = "0", desc = "Free" }, { on = "1", desc = "Free" }, { on = "2", desc = "Free" }, { on = "3", desc = "Free" }, { on = "4", desc = "Free"},
|
||||||
|
{ on = "5", desc = "Free" }, { on = "6", desc = "Free" }, { on = "7", desc = "Free" }, { on = "8", desc = "Free" }, { on = "9", desc = "Free"},
|
||||||
|
{ on = "A", desc = "Free" }, { on = "B", desc = "Free" }, { on = "C", desc = "Free" }, { on = "D", desc = "Free" }, { on = "E", desc = "Free"},
|
||||||
|
{ on = "F", desc = "Free" }, { on = "G", desc = "Free" }, { on = "H", desc = "Free" }, { on = "I", desc = "Free" }, { on = "J", desc = "Free"},
|
||||||
|
{ on = "K", desc = "Free" }, { on = "L", desc = "Free" }, { on = "M", desc = "Free" }, { on = "N", desc = "Free" }, { on = "O", desc = "Free"},
|
||||||
|
{ on = "P", desc = "Free" }, { on = "Q", desc = "Free" }, { on = "R", desc = "Free" }, { on = "S", desc = "Free" }, { on = "T", desc = "Free"},
|
||||||
|
{ on = "U", desc = "Free" }, { on = "V", desc = "Free" }, { on = "W", desc = "Free" }, { on = "X", desc = "Free" }, { on = "Y", desc = "Free"}, { on = "Z", desc = "Free" },
|
||||||
|
{ on = "a", desc = "Free" }, { on = "b", desc = "Free" }, { on = "c", desc = "Free" }, { on = "d", desc = "Free" }, { on = "e", desc = "Free"},
|
||||||
|
{ on = "f", desc = "Free" }, { on = "g", desc = "Free" }, { on = "h", desc = "Free" }, { on = "i", desc = "Free" }, { on = "j", desc = "Free"},
|
||||||
|
{ on = "k", desc = "Free" }, { on = "l", desc = "Free" }, { on = "m", desc = "Free" }, { on = "n", desc = "Free" }, { on = "o", desc = "Free"},
|
||||||
|
{ on = "p", desc = "Free" }, { on = "q", desc = "Free" }, { on = "r", desc = "Free" }, { on = "s", desc = "Free" }, { on = "t", desc = "Free"},
|
||||||
|
{ on = "u", desc = "Free" }, { on = "v", desc = "Free" }, { on = "w", desc = "Free" }, { on = "x", desc = "Free" }, { on = "y", desc = "Free"}, { on = "z", desc = "Free" },
|
||||||
|
}
|
||||||
|
|
||||||
|
local _send_notification = ya.sync(
|
||||||
|
function(state, message)
|
||||||
|
ya.notify {
|
||||||
|
title = "Bookmarks",
|
||||||
|
content = message,
|
||||||
|
timeout = state.notify.timeout,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
)
|
||||||
|
|
||||||
|
local _get_real_index = ya.sync(function(state, idx)
|
||||||
|
for key, value in pairs(state.bookmarks) do
|
||||||
|
if value.on == SUPPORTED_KEYS[idx].on then
|
||||||
|
return key
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return nil
|
||||||
|
end)
|
||||||
|
|
||||||
|
local _get_bookmark_file = ya.sync(function(state)
|
||||||
|
local folder = cx.active.current
|
||||||
|
|
||||||
|
if state.file_pick_mode == "parent" or not folder.hovered then
|
||||||
|
return { url = folder.cwd, is_parent = true }
|
||||||
|
end
|
||||||
|
return { url = folder.hovered.url, is_parent = false }
|
||||||
|
end)
|
||||||
|
|
||||||
|
local _generate_description = ya.sync(function(state, file)
|
||||||
|
-- if this is true, we don't have information about the folder, so just return the folder url
|
||||||
|
if file.is_parent then
|
||||||
|
return tostring(file.url)
|
||||||
|
end
|
||||||
|
|
||||||
|
if state.desc_format == "parent" then
|
||||||
|
return tostring(file.url.parent)
|
||||||
|
end
|
||||||
|
-- full description
|
||||||
|
return tostring(file.url)
|
||||||
|
end)
|
||||||
|
|
||||||
|
local _load_state = ya.sync(function(state)
|
||||||
|
ps.sub_remote("@bookmarks", function(body)
|
||||||
|
if not state.bookmarks and body then
|
||||||
|
state.bookmarks = {}
|
||||||
|
for _, value in pairs(body) do
|
||||||
|
table.insert(state.bookmarks, value)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
local _save_state = ya.sync(function(state, bookmarks)
|
||||||
|
if not bookmarks then
|
||||||
|
ps.pub_to(0, "@bookmarks", nil)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local save_state = {}
|
||||||
|
if state.persist == "all" then
|
||||||
|
save_state = bookmarks
|
||||||
|
else -- VIM mode
|
||||||
|
local idx = 1
|
||||||
|
for _, value in pairs(bookmarks) do
|
||||||
|
-- Only save bookmarks in upper case keys
|
||||||
|
if string.match(value.on, "%u") then
|
||||||
|
save_state[idx] = value
|
||||||
|
idx = idx + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
ps.pub_to(0, "@bookmarks", save_state)
|
||||||
|
end)
|
||||||
|
|
||||||
|
local _load_last = ya.sync(function(state)
|
||||||
|
ps.sub_remote("@bookmarks-last", function(body)
|
||||||
|
state.last_dir = body
|
||||||
|
|
||||||
|
if state.last_mode ~= "dir" then
|
||||||
|
ps.unsub_remote("@bookmarks-last")
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
local _save_last = ya.sync(function(state, persist, imediate)
|
||||||
|
local file = _get_bookmark_file()
|
||||||
|
|
||||||
|
local curr = {
|
||||||
|
on = "'",
|
||||||
|
desc = _generate_description(file),
|
||||||
|
path = tostring(file.url),
|
||||||
|
is_parent = file.is_parent,
|
||||||
|
}
|
||||||
|
|
||||||
|
if imediate then
|
||||||
|
state.curr_dir = nil
|
||||||
|
state.last_dir = curr
|
||||||
|
else
|
||||||
|
state.last_dir = state.curr_dir
|
||||||
|
state.curr_dir = curr
|
||||||
|
end
|
||||||
|
|
||||||
|
if persist and state.last_dir then
|
||||||
|
ps.pub_to(0, "@bookmarks-last", state.last_dir)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
local get_last_mode = ya.sync(function(state) return state.last_mode end)
|
||||||
|
|
||||||
|
local save_last_dir = ya.sync(function(state)
|
||||||
|
ps.sub("cd", function() _save_last(state.last_persist, false) end)
|
||||||
|
|
||||||
|
ps.sub("hover", function()
|
||||||
|
local file = _get_bookmark_file()
|
||||||
|
state.curr_dir.desc = _generate_description(file)
|
||||||
|
state.curr_dir.path = tostring(file.url)
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
local save_last_jump = ya.sync(function(state) _save_last(state.last_persist, true) end)
|
||||||
|
|
||||||
|
local save_last_mark = ya.sync(function(state) _save_last(state.last_persist, true) end)
|
||||||
|
|
||||||
|
local _is_show_keys_enabled = ya.sync(function(state) return state.show_keys end)
|
||||||
|
|
||||||
|
local _is_custom_desc_input_enabled = ya.sync(function(state) return state.custom_desc_input end)
|
||||||
|
|
||||||
|
-- ***********************************************
|
||||||
|
-- **============= C O M M A N D S =============**
|
||||||
|
-- ***********************************************
|
||||||
|
|
||||||
|
local get_updated_keys = ya.sync(function(state, keys)
|
||||||
|
if state.bookmarks then
|
||||||
|
for _, bookmarks_value in pairs(state.bookmarks) do
|
||||||
|
for _, keys_value in pairs(keys) do
|
||||||
|
if keys_value.on == bookmarks_value.on then
|
||||||
|
keys_value.desc = bookmarks_value.desc
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return keys
|
||||||
|
end)
|
||||||
|
|
||||||
|
local save_bookmark = ya.sync(function(state, idx, custom_desc)
|
||||||
|
local file = _get_bookmark_file()
|
||||||
|
|
||||||
|
state.bookmarks = state.bookmarks or {}
|
||||||
|
|
||||||
|
local _idx = _get_real_index(idx)
|
||||||
|
if not _idx then
|
||||||
|
_idx = #state.bookmarks + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
local bookmark_desc = tostring(_generate_description(file))
|
||||||
|
if custom_desc then
|
||||||
|
bookmark_desc = tostring(custom_desc)
|
||||||
|
end
|
||||||
|
|
||||||
|
state.bookmarks[_idx] = {
|
||||||
|
on = SUPPORTED_KEYS[idx].on,
|
||||||
|
desc = bookmark_desc,
|
||||||
|
path = tostring(file.url),
|
||||||
|
is_parent = file.is_parent,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Custom sorting function
|
||||||
|
table.sort(state.bookmarks, function(a, b)
|
||||||
|
local key_a, key_b = a.on, b.on
|
||||||
|
|
||||||
|
-- Numbers first
|
||||||
|
if key_a:match("%d") and not key_b:match("%d") then
|
||||||
|
return true
|
||||||
|
elseif key_b:match("%d") and not key_a:match("%d") then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Uppercase before lowercase
|
||||||
|
if key_a:match("%u") and key_b:match("%l") then
|
||||||
|
return true
|
||||||
|
elseif key_b:match("%u") and key_a:match("%l") then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Regular alphabetical sorting
|
||||||
|
return key_a < key_b
|
||||||
|
end)
|
||||||
|
|
||||||
|
if state.persist then
|
||||||
|
_save_state(state.bookmarks)
|
||||||
|
end
|
||||||
|
|
||||||
|
if state.notify and state.notify.enable then
|
||||||
|
local message = state.notify.message.new
|
||||||
|
message, _ = message:gsub("<key>", state.bookmarks[_idx].on)
|
||||||
|
message, _ = message:gsub("<folder>", state.bookmarks[_idx].desc)
|
||||||
|
_send_notification(message)
|
||||||
|
end
|
||||||
|
|
||||||
|
if get_last_mode() == "mark" then
|
||||||
|
save_last_mark()
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
local all_bookmarks = ya.sync(function(state, append_last_dir)
|
||||||
|
local bookmarks = {}
|
||||||
|
|
||||||
|
if state.bookmarks then
|
||||||
|
for _, value in pairs(state.bookmarks) do
|
||||||
|
table.insert(bookmarks, value)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if append_last_dir and state.last_dir then
|
||||||
|
table.insert(bookmarks, state.last_dir)
|
||||||
|
end
|
||||||
|
|
||||||
|
return bookmarks
|
||||||
|
end)
|
||||||
|
|
||||||
|
local delete_bookmark = ya.sync(function(state, idx)
|
||||||
|
if state.notify and state.notify.enable then
|
||||||
|
local message = state.notify.message.delete
|
||||||
|
message, _ = message:gsub("<key>", state.bookmarks[idx].on)
|
||||||
|
message, _ = message:gsub("<folder>", state.bookmarks[idx].desc)
|
||||||
|
_send_notification(message)
|
||||||
|
end
|
||||||
|
|
||||||
|
table.remove(state.bookmarks, idx)
|
||||||
|
|
||||||
|
if state.persist then
|
||||||
|
_save_state(state.bookmarks)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
local delete_all_bookmarks = ya.sync(function(state)
|
||||||
|
state.bookmarks = nil
|
||||||
|
|
||||||
|
if state.persist then
|
||||||
|
_save_state(nil)
|
||||||
|
end
|
||||||
|
|
||||||
|
if state.notify and state.notify.enable then
|
||||||
|
_send_notification(state.notify.message.delete_all)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
return {
|
||||||
|
entry = function(_, job)
|
||||||
|
local action = job.args[1]
|
||||||
|
if not action then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if action == "save" then
|
||||||
|
if _is_show_keys_enabled() then
|
||||||
|
SUPPORTED_KEYS = get_updated_keys(SUPPORTED_KEYS)
|
||||||
|
end
|
||||||
|
local key = ya.which { cands = SUPPORTED_KEYS, silent = not _is_show_keys_enabled() }
|
||||||
|
if key then
|
||||||
|
if _is_custom_desc_input_enabled() then
|
||||||
|
local value, event = ya.input {
|
||||||
|
title = "Save with custom description:",
|
||||||
|
position = { "top-center", y = 3, w = 60 },
|
||||||
|
value = tostring(_get_bookmark_file().url),
|
||||||
|
}
|
||||||
|
if event ~= 1 then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
save_bookmark(key, value)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
save_bookmark(key)
|
||||||
|
end
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if action == "delete_all" then
|
||||||
|
return delete_all_bookmarks()
|
||||||
|
end
|
||||||
|
|
||||||
|
local bookmarks = all_bookmarks(action == "jump")
|
||||||
|
local selected = #bookmarks > 0 and ya.which { cands = bookmarks }
|
||||||
|
if not selected then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if action == "jump" then
|
||||||
|
if get_last_mode() == "jump" then
|
||||||
|
save_last_jump()
|
||||||
|
end
|
||||||
|
|
||||||
|
if bookmarks[selected].is_parent then
|
||||||
|
ya.mgr_emit("cd", { bookmarks[selected].path })
|
||||||
|
else
|
||||||
|
ya.mgr_emit("reveal", { bookmarks[selected].path })
|
||||||
|
end
|
||||||
|
elseif action == "delete" then
|
||||||
|
delete_bookmark(selected)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
setup = function(state, args)
|
||||||
|
if not args then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
if type(args.last_directory) == "table" then
|
||||||
|
if args.last_directory.enable then
|
||||||
|
if args.last_directory.mode == "mark" then
|
||||||
|
state.last_persist = args.last_directory.persist
|
||||||
|
state.last_mode = "mark"
|
||||||
|
elseif args.last_directory.mode == "jump" then
|
||||||
|
state.last_persist = args.last_directory.persist
|
||||||
|
state.last_mode = "jump"
|
||||||
|
elseif args.last_directory.mode == "dir" then
|
||||||
|
state.last_persist = args.last_directory.persist
|
||||||
|
state.last_mode = "dir"
|
||||||
|
save_last_dir()
|
||||||
|
else
|
||||||
|
-- default
|
||||||
|
state.last_persist = args.last_directory.persist
|
||||||
|
state.last_mode = "dir"
|
||||||
|
save_last_dir()
|
||||||
|
end
|
||||||
|
|
||||||
|
if args.last_directory.persist then
|
||||||
|
_load_last()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if args.persist == "all" or args.persist == "vim" then
|
||||||
|
state.persist = args.persist
|
||||||
|
_load_state()
|
||||||
|
end
|
||||||
|
|
||||||
|
if args.desc_format == "parent" then
|
||||||
|
state.desc_format = "parent"
|
||||||
|
else
|
||||||
|
state.desc_format = "full"
|
||||||
|
end
|
||||||
|
|
||||||
|
if args.file_pick_mode == "parent" then
|
||||||
|
state.file_pick_mode = "parent"
|
||||||
|
else
|
||||||
|
state.file_pick_mode = "hover"
|
||||||
|
end
|
||||||
|
|
||||||
|
if type(args.custom_desc_input) == "boolean" then
|
||||||
|
state.custom_desc_input = args.custom_desc_input
|
||||||
|
end
|
||||||
|
|
||||||
|
if type(args.show_keys) == "boolean" then
|
||||||
|
state.show_keys = args.show_keys
|
||||||
|
end
|
||||||
|
|
||||||
|
state.notify = {
|
||||||
|
enable = false,
|
||||||
|
timeout = 1,
|
||||||
|
message = {
|
||||||
|
new = "New bookmark '<key>' -> '<folder>'",
|
||||||
|
delete = "Deleted bookmark in '<key>'",
|
||||||
|
delete_all = "Deleted all bookmarks",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
if type(args.notify) == "table" then
|
||||||
|
if type(args.notify.enable) == "boolean" then
|
||||||
|
state.notify.enable = args.notify.enable
|
||||||
|
end
|
||||||
|
if type(args.notify.timeout) == "number" then
|
||||||
|
state.notify.timeout = args.notify.timeout
|
||||||
|
end
|
||||||
|
if type(args.notify.message) == "table" then
|
||||||
|
if type(args.notify.message.new) == "string" then
|
||||||
|
state.notify.message.new = args.notify.message.new
|
||||||
|
end
|
||||||
|
if type(args.notify.message.delete) == "string" then
|
||||||
|
state.notify.message.delete = args.notify.message.delete
|
||||||
|
end
|
||||||
|
if type(args.notify.message.delete_all) == "string" then
|
||||||
|
state.notify.message.delete_all = args.notify.message.delete_all
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
[user]
|
||||||
|
email = {{ .email }}
|
||||||
|
name = {{ .name }}
|
||||||
|
signingkey = 3EBCBD305D1C69450CEBF4A8B57235A0D139F9FD
|
||||||
|
[init]
|
||||||
|
defaultBranch = main
|
||||||
|
[core]
|
||||||
|
autocrlf = input
|
||||||
|
[commit]
|
||||||
|
gpgsign = true
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IG1sa2VtNzY4eDI1NTE5IE9PTEZEc21o
|
||||||
|
Tm9QRWFCblZ0eURVZURmQTRLMU9jN1Iza29rV21SUndiS29CYmtlenlKV3pUMEpE
|
||||||
|
Y0hKU3phTjJnbjMzNnYzUkdYa3g3MitNSzB1ZVVSYkNOMzJTbVNUU3ZuRlAxRXNL
|
||||||
|
SzN3SmhIUGhxd1RXZHI0RmNqaUNmSTJpaVlpVFA4QmF2ZVFEWTJlK01UZFB3dDd0
|
||||||
|
NXMxWXhtMmFrVURxUW52aWZhMUovc0tNUjZYWXFOMU1YVGllT1pxemtrUU9ldlZU
|
||||||
|
bHVOYlhVS2tYUm1kUElvd2hBK1RBNXZpWGwrR2R3R0hSNUVyc1RrQUR4MFZXRmgz
|
||||||
|
eStwZUxMSVFhV0t2UThtL09VR1FnL2NMa3c3a2o3OEtMTkVHblpyd2phajhSTkZC
|
||||||
|
N2NoUnZpZnpHRTdFTGtERGg5US9USWlDbnBRWTAyb2NzK0dZOGplWWxsWXhiVkoy
|
||||||
|
b0pmOW5mdHE2TnlhNEx2bUVoeVZqUTdKN3YzYTJQQ2Z5VzA1WGFxSjZhUWgwbndv
|
||||||
|
UUtBclJtOUdlWVQ1RW54cDJ6b1BWc3VhTnpRZEc0WXlMQmRUVjB0ZlYrTnVNV2Zu
|
||||||
|
ZGtTaitqRkdGVWorQTBNcnpReHY5bnBWeTAxRHI3YVg0WUdyVHd5NlBkNER6NzYz
|
||||||
|
c2RWTFB3cVBaUFpZMzUzU3NYRmZHV1gvMnZLUFd6WldLOWVyLytCWHhBOStDOFBm
|
||||||
|
Z05KUms0OVh0QzFlNEdqdEU3c3NZelNkMGxtdXhBeWd0L0Zha1JFNVhZc1pnbHNW
|
||||||
|
WDRNeTdRajFodEhFRmRmdlkxNEYyTzFpWmk1eWJQdnJIN1VseUtlTTFtRTJibGlj
|
||||||
|
QjRkdThpdDhZU1hJT2s5SUx4MGZGbVRYY3psdVgxSm9hbmV1aUpTQzdxbm9xYkVr
|
||||||
|
dkx4a2d5TStBcytVTjgydUlLU2hwcWJ6TFRlZjZIRVRaSWNObXFGU2NDMWxQMUFQ
|
||||||
|
akM4UkxhY3VUZUdHKzAyb0wzNTM1L2xIQmJpaUVLSFlNZWIvbE1HVnVnVElWRzlP
|
||||||
|
RnRRUzRKazJmamtlYXhDazd6ZG12dUZ2a3JQR0FUOERCUDN2TVUvN0pXNHNRRnBr
|
||||||
|
RWlIRDltenRtR3F1TkR0aXRERHVGeVZJTGF1b3pYbFpVREc1TUhDTlhCQjJlN3hl
|
||||||
|
MzBCZVRyM0kxRSt1MFU5TDA4ZTF1VUtCSEFZQkl5Zit2TnNCaUU0cUhFNlhFcG9W
|
||||||
|
TjR6eTZJbEJiS2gyVE1PWWUycDlYQ3dvZlFUc2plMDBMZXFqUkpUMFJpWGhnSWtj
|
||||||
|
N0JQSzBuM0pFY1B1bXEzclowbFFhaElXa1RPSFJ6ZHRtZHRDdXRFZStVcGw0dGpx
|
||||||
|
Q21wK0VBc0xpak9rMUNHMVBISFQ2bndqYnNSblUrVmM2bTVCZ3NIQU16RGkxOUJU
|
||||||
|
Mk9haE5RRTAxVGlOY3NCbFQ3V2xrc0YxeS83QVEyamJrN2crWnhNY2FEb3RMKy9P
|
||||||
|
Z1BoOWYwMlRLVWZqL2FxYkp5TE9seWFjMUVXcE12S1ZEZjA0bW5FUmh1N2FLY0Va
|
||||||
|
dnVJNHhNSlFONnk1L2xEcHFpWlRuMXJadHp6NFc3WjBqZTdGWWc5TjhPbmNFaDdZ
|
||||||
|
cGpjcHhqUXV2NTZ5Ny9seE5RMlZxb01TSG9KbVdheHNtQTRYWTNVak40VzZpY2ZU
|
||||||
|
OC8xekVwa0s4elBVUC9MMzBCSmRkckhjajc5SVM3VjhvZFFyRDRjRHRzcWZISWJB
|
||||||
|
blZnLzMwVW1aTjRBSVpDNERzR24rRDU1cCtzL3Uwb2RIUjRtUWZnZFJONGJha3or
|
||||||
|
aFhaME54dEwzMGJvQ0ZHbVhPZXdWUCtIN05UdmlwbkhjaFV3aCtGMnFHU2pTK21z
|
||||||
|
NTlPNEtwR0NRZmJWWStwWFJtY2N4djV5WmpnSmJtYkQvVXRKbWlZL0YrMnRKSzY1
|
||||||
|
MlBXQ2dUMzluQ2ZNQ3dJSFFrYUxVS0FRY3BNK0dLck9QcG1EVVJLbVJYdnRZQQpE
|
||||||
|
OTluZjV2ZWN1RG9tSnpEQ1htVzZRMlFJcDJFSW9hc1BsVWoyaHc2ek1BCi0tLSAx
|
||||||
|
bVFZODh0eTRyemtKcEtabU5iOFltR1RPYndvV0h4ME5CZ0V6a0k2dkgwCjMcrv1i
|
||||||
|
X/Q7cSztMHyJ2h7X/Pua0a8+Uw21d8rJwvbiCTTIrje4HLT7+CtHl+wRand/yPpj
|
||||||
|
13od2ldCW020adzS8h2EL9erX0SCGtD6Kk4Au9rX9TKEEZCFkffimYgMnTt+MUAZ
|
||||||
|
HAY2QbGOQsqOynDdeWBTwemKQep8kSgLoGONKO7Tz2l2/MqUCS2W7YQRFb783i03
|
||||||
|
kicX6irr+EaVq9BdX2KOO/c7K7DshJ6AXYMFhcGBY0wn5TnXoO/3ANBTg0zj7CgO
|
||||||
|
WU3oMKfc1tgHCzXfp5t8UdTnmiMxPussFxil/rVIiUmhtg6R/ADfaENALYreOxKT
|
||||||
|
Y6zMgQ==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
default_roles:
|
|
||||||
- bash
|
|
||||||
- btop
|
|
||||||
- fish
|
|
||||||
- nvim
|
|
||||||
- starship
|
|
||||||
- yazi
|
|
||||||
|
|
||||||
desktop_roles:
|
|
||||||
- ags
|
|
||||||
- alacritty
|
|
||||||
- discord
|
|
||||||
- hypr
|
|
||||||
- kvantum
|
|
||||||
- minegrub
|
|
||||||
- nwg-look
|
|
||||||
- qt5ct
|
|
||||||
- sddm
|
|
||||||
- wakatime
|
|
||||||
|
|
||||||
system: desktop
|
|
||||||
|
|
||||||
wakapi_key: !vault |
|
|
||||||
$ANSIBLE_VAULT;1.1;AES256
|
|
||||||
39346164353734613634356635383464636463373437333463616530346162303666343962383364
|
|
||||||
3862316162646639353665336530613965663437316263310a646464663038346539393039666537
|
|
||||||
32636139616239643934353135656662376262356433616635343830646164363435353739343966
|
|
||||||
6233303036393538370a656564643033383334323631663631336137346161326464373364346230
|
|
||||||
64323564663534393766356166393363376237633565316363363138373033353030373139366365
|
|
||||||
6435323438633233363166626330633164346534363335666433
|
|
||||||
@@ -1,163 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Vars
|
|
||||||
DOTFILES_DIR="$HOME/.dotfiles"
|
|
||||||
CONFIG_DIR="$HOME/.config/dotfiles"
|
|
||||||
REPO="https://gitea.keuledrive.de/Keule2/Dotfiles.git"
|
|
||||||
DIST=$(source /etc/os-release && echo $ID)
|
|
||||||
|
|
||||||
# Colors
|
|
||||||
COLOR_RESET='\033[0m'
|
|
||||||
RED='\033[0;31m'
|
|
||||||
LGREEN='\033[01;32m'
|
|
||||||
|
|
||||||
# Helper Functions
|
|
||||||
print_header() {
|
|
||||||
echo -e "${LGREEN}$1${COLOR_RESET}"
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd() {
|
|
||||||
local DOTFILES_LOG="./error.log"
|
|
||||||
|
|
||||||
if eval "$1" 1> /dev/null 2> $DOTFILES_LOG; then
|
|
||||||
rm "$DOTFILES_LOG"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -e "${RED}"
|
|
||||||
cat $DOTFILES_LOG
|
|
||||||
echo -e "${COLOR_RESET}"
|
|
||||||
rm "$DOTFILES_LOG"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
paru_install() {
|
|
||||||
if [ -x "$(command -v paru)" ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Install Base-Devel
|
|
||||||
if [ -z "$(pacman -Q | grep base-devel)" ]; then
|
|
||||||
print_header "Installing base-devel"
|
|
||||||
cmd "sudo pacman -S base-devel --noconfirm"
|
|
||||||
fi
|
|
||||||
# Install RustUp
|
|
||||||
if ! [ -x "$(command -v rustup)" ]; then
|
|
||||||
print_header "Installing rustup"
|
|
||||||
cmd "sudo pacman -S rustup --noconfirm"
|
|
||||||
cmd "rustup default stable"
|
|
||||||
fi
|
|
||||||
# Instal Paru
|
|
||||||
FOLDER=$(mktemp -d)
|
|
||||||
print_header "Installing paru"
|
|
||||||
cmd "git clone https://aur.archlinux.org/paru.git $FOLDER"
|
|
||||||
cd $FOLDER
|
|
||||||
cmd "makepkg -si --noconfirm"
|
|
||||||
}
|
|
||||||
|
|
||||||
arch_install() {
|
|
||||||
# Install Ansible
|
|
||||||
if ! [ -x "$(command -v ansible)" ]; then
|
|
||||||
print_header "Installing ansible"
|
|
||||||
cmd "sudo pacman -S ansible --noconfirm"
|
|
||||||
fi
|
|
||||||
# Install Git
|
|
||||||
if ! [ -x "$(command -v git)" ]; then
|
|
||||||
print_header "Installing git"
|
|
||||||
cmd "sudo pacman -S git --noconfirm"
|
|
||||||
fi
|
|
||||||
# Installl Paru
|
|
||||||
paru_install
|
|
||||||
# Install PIP
|
|
||||||
if ! [ -x "$(command -v pip)" ]; then
|
|
||||||
print_header "Installing pip"
|
|
||||||
cmd "sudo pacman -S python-pip --noconfirm"
|
|
||||||
fi
|
|
||||||
# Install Watchdog
|
|
||||||
if [ -z "$(pip list | grep watchdog)" ]; then
|
|
||||||
print_header "Installing watchdog"
|
|
||||||
cmd "pip install --break-system-packages watchdog"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
ubuntu_install() {
|
|
||||||
# Install Ansible
|
|
||||||
if ! dpkg -s ansible >/dev/null 2>&1; then
|
|
||||||
print_header "Installing ansible"
|
|
||||||
cmd "sudo apt-get update"
|
|
||||||
cmd "sudo apt-get install -y software-properties-common"
|
|
||||||
cmd "sudo apt-add-repository -y ppa:ansible/ansible"
|
|
||||||
cmd "sudo apt-get update"
|
|
||||||
cmd "sudo apt-get install -y ansible"
|
|
||||||
cmd "sudo apt-get install python3-argcomplete"
|
|
||||||
cmd "sudo activate-global-python-argcomplete3"
|
|
||||||
fi
|
|
||||||
# Install Git
|
|
||||||
if ! dpkg -s git >/dev/null 2>&1; then
|
|
||||||
print_header "Installing git"
|
|
||||||
cmd "sudo apt-get install -y git"
|
|
||||||
fi
|
|
||||||
# TODO pip, watchdog
|
|
||||||
}
|
|
||||||
|
|
||||||
update_galaxy() {
|
|
||||||
local OS=$1
|
|
||||||
|
|
||||||
print_header "Installing/Updating ansible-galaxy"
|
|
||||||
cmd "ansible-galaxy install -r $DOTFILES_DIR/requirements/default.yml"
|
|
||||||
if [ -f "$DOTFILES_DIR/requirements/$OS.yml" ]; then
|
|
||||||
cmd "ansible-galaxy install -r $DOTFILES_DIR/requirements/$OS.yml"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Banner
|
|
||||||
cat << "EOF"
|
|
||||||
________ __ .___ __ .__ .__
|
|
||||||
\______ \ _____/ |_ ______ | | ____ _______/ |______ | | | | ___________
|
|
||||||
| | \ / _ \ __\/ ___/ | |/ \ / ___/\ __\__ \ | | | | _/ __ \_ __ \
|
|
||||||
| ` ( <_> ) | \___ \ | | | \\___ \ | | / __ \| |_| |_\ ___/| | \/
|
|
||||||
/_______ /\____/|__| /____ > |___|___| /____ > |__| (____ /____/____/\___ >__|
|
|
||||||
\/ \/ \/ \/ \/ \/
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Setup
|
|
||||||
case $DIST in
|
|
||||||
arch)
|
|
||||||
arch_install
|
|
||||||
;;
|
|
||||||
ubuntu)
|
|
||||||
ubuntu_install
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Unsupported OS"
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Clone repository
|
|
||||||
if ! [[ -d "$DOTFILES_DIR" ]]; then
|
|
||||||
print_header "Cloning repo"
|
|
||||||
cmd "git clone $REPO $DOTFILES_DIR"
|
|
||||||
else
|
|
||||||
print_header "Updating repo"
|
|
||||||
cmd "git -C $DOTFILES_DIR pull"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Change Working Dir
|
|
||||||
cd "$DOTFILES_DIR"
|
|
||||||
|
|
||||||
# Update Galaxy
|
|
||||||
update_galaxy $DIST
|
|
||||||
|
|
||||||
# Run playbook
|
|
||||||
if [[ -f "$CONFIG_DIR/vault-password.txt" ]]; then
|
|
||||||
if [[ -f "$CONFIG_DIR/values.yml" ]]; then
|
|
||||||
ansible-playbook --diff -v --ask-become-pass --extra-vars "@$CONFIG_DIR/values.yml" --vault-password-file "$CONFIG_DIR/vault-password.txt" "$DOTFILES_DIR/main.yml" "$@"
|
|
||||||
else
|
|
||||||
ansible-playbook --diff -v --ask-become-pass --vault-password-file "$CONFIG_DIR/vault-password.txt" "$DOTFILES_DIR/main.yml" "$@"
|
|
||||||
fi
|
|
||||||
elif [[ -f "$CONFIG_DIR/values.yml" ]]; then
|
|
||||||
ansible-playbook --diff -v --ask-become-pass --extra-vars "@$CONFIG_DIR/values.yml" "$DOTFILES_DIR/main.yml" "$@"
|
|
||||||
else
|
|
||||||
ansible-playbook --diff -v --ask-become-pass "$DOTFILES_DIR/main.yml" "$@"
|
|
||||||
fi
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
---
|
|
||||||
- name: Dotfiles
|
|
||||||
hosts: localhost
|
|
||||||
connection: local
|
|
||||||
tasks:
|
|
||||||
- name: Get username
|
|
||||||
command: whoami
|
|
||||||
register: whoami
|
|
||||||
tags:
|
|
||||||
- always
|
|
||||||
|
|
||||||
- name: Set username
|
|
||||||
set_fact:
|
|
||||||
username: "{{ whoami.stdout }}"
|
|
||||||
tags:
|
|
||||||
- always
|
|
||||||
|
|
||||||
- name: Set default roles
|
|
||||||
set_fact:
|
|
||||||
roles: "{{ ansible_run_tags != ['all'] and ansible_run_tags or default_roles | difference(ansible_skip_tags | default([])) }}"
|
|
||||||
tags:
|
|
||||||
- always
|
|
||||||
|
|
||||||
- name: Set desktop roles
|
|
||||||
set_fact:
|
|
||||||
roles: "{{ (desktop_roles + roles) | difference(ansible_skip_tags | default([])) }}"
|
|
||||||
tags:
|
|
||||||
- always
|
|
||||||
when: system != 'server' and desktop_roles is defined and ansible_run_tags == ['all']
|
|
||||||
|
|
||||||
- name: Prepend system role
|
|
||||||
set_fact:
|
|
||||||
roles: "{{ ['system'] | difference(roles) + roles }}"
|
|
||||||
tags:
|
|
||||||
- always
|
|
||||||
|
|
||||||
- name: Display roles
|
|
||||||
debug: "var=roles"
|
|
||||||
tags:
|
|
||||||
- always
|
|
||||||
|
|
||||||
- name: Run roles
|
|
||||||
include_role:
|
|
||||||
apply:
|
|
||||||
tags:
|
|
||||||
- "{{ roles_item }}"
|
|
||||||
name: "{{ roles_item }}"
|
|
||||||
loop_control:
|
|
||||||
loop_var: roles_item
|
|
||||||
with_items: "{{ roles }}"
|
|
||||||
tags:
|
|
||||||
- always
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
collections:
|
|
||||||
- name: kewlfft.aur
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
collections:
|
|
||||||
- name: community.general
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
import = [
|
|
||||||
# Theme
|
|
||||||
"~/.config/alacritty/catppuccin-macchiato.toml"
|
|
||||||
]
|
|
||||||
|
|
||||||
[env]
|
|
||||||
TERM = "xterm-256color"
|
|
||||||
|
|
||||||
[window]
|
|
||||||
opacity = 0.7
|
|
||||||
decorations = "None"
|
|
||||||
padding = { x = 0, y = 0 }
|
|
||||||
|
|
||||||
[font]
|
|
||||||
normal = {family = "CaskaydiaCove Nerd Font", style = "Mono"}
|
|
||||||
|
|
||||||
[cursor]
|
|
||||||
style = {shape = "Beam", blinking = "On"}
|
|
||||||
vi_mode_style = {shape = "Block", blinking = "On"}
|
|
||||||
@@ -1,97 +0,0 @@
|
|||||||
# MIT License
|
|
||||||
#
|
|
||||||
# Copyright (c) 2021 Catppuccin
|
|
||||||
#
|
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
|
||||||
# in the Software without restriction, including without limitation the rights
|
|
||||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
# copies of the Software, and to permit persons to whom the Software is
|
|
||||||
# furnished to do so, subject to the following conditions:
|
|
||||||
#
|
|
||||||
# The above copyright notice and this permission notice shall be included in all
|
|
||||||
# copies or substantial portions of the Software.
|
|
||||||
#
|
|
||||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
# SOFTWARE.
|
|
||||||
|
|
||||||
[colors.primary]
|
|
||||||
background = "#24273A"
|
|
||||||
foreground = "#CAD3F5"
|
|
||||||
dim_foreground = "#CAD3F5"
|
|
||||||
bright_foreground = "#CAD3F5"
|
|
||||||
|
|
||||||
[colors.cursor]
|
|
||||||
text = "#24273A"
|
|
||||||
cursor = "#F4DBD6"
|
|
||||||
|
|
||||||
[colors.vi_mode_cursor]
|
|
||||||
text = "#24273A"
|
|
||||||
cursor = "#B7BDF8"
|
|
||||||
|
|
||||||
[colors.search.matches]
|
|
||||||
foreground = "#24273A"
|
|
||||||
background = "#A5ADCB"
|
|
||||||
|
|
||||||
[colors.search.focused_match]
|
|
||||||
foreground = "#24273A"
|
|
||||||
background = "#A6DA95"
|
|
||||||
|
|
||||||
[colors.footer_bar]
|
|
||||||
foreground = "#24273A"
|
|
||||||
background = "#A5ADCB"
|
|
||||||
|
|
||||||
[colors.hints.start]
|
|
||||||
foreground = "#24273A"
|
|
||||||
background = "#EED49F"
|
|
||||||
|
|
||||||
[colors.hints.end]
|
|
||||||
foreground = "#24273A"
|
|
||||||
background = "#A5ADCB"
|
|
||||||
|
|
||||||
[colors.selection]
|
|
||||||
text = "#24273A"
|
|
||||||
background = "#F4DBD6"
|
|
||||||
|
|
||||||
[colors.normal]
|
|
||||||
black = "#494D64"
|
|
||||||
red = "#ED8796"
|
|
||||||
green = "#A6DA95"
|
|
||||||
yellow = "#EED49F"
|
|
||||||
blue = "#8AADF4"
|
|
||||||
magenta = "#F5BDE6"
|
|
||||||
cyan = "#8BD5CA"
|
|
||||||
white = "#B8C0E0"
|
|
||||||
|
|
||||||
[colors.bright]
|
|
||||||
black = "#5B6078"
|
|
||||||
red = "#ED8796"
|
|
||||||
green = "#A6DA95"
|
|
||||||
yellow = "#EED49F"
|
|
||||||
blue = "#8AADF4"
|
|
||||||
magenta = "#F5BDE6"
|
|
||||||
cyan = "#8BD5CA"
|
|
||||||
white = "#A5ADCB"
|
|
||||||
|
|
||||||
[colors.dim]
|
|
||||||
black = "#494D64"
|
|
||||||
red = "#ED8796"
|
|
||||||
green = "#A6DA95"
|
|
||||||
yellow = "#EED49F"
|
|
||||||
blue = "#8AADF4"
|
|
||||||
magenta = "#F5BDE6"
|
|
||||||
cyan = "#8BD5CA"
|
|
||||||
white = "#B8C0E0"
|
|
||||||
|
|
||||||
[[colors.indexed_colors]]
|
|
||||||
index = 16
|
|
||||||
color = "#F5A97F"
|
|
||||||
|
|
||||||
[[colors.indexed_colors]]
|
|
||||||
index = 17
|
|
||||||
color = "#F4DBD6"
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
---
|
|
||||||
- name: "[Alacritty] Install"
|
|
||||||
kewlfft.aur.aur:
|
|
||||||
name:
|
|
||||||
- alacritty
|
|
||||||
- ueberzugpp
|
|
||||||
state: present
|
|
||||||
|
|
||||||
- name: "[Alacritty] Create config folder"
|
|
||||||
ansible.builtin.file:
|
|
||||||
mode: "0755"
|
|
||||||
path: "{{ ansible_user_dir }}/.config/alacritty"
|
|
||||||
state: directory
|
|
||||||
|
|
||||||
- name: "[Alacritty] Configure"
|
|
||||||
ansible.builtin.copy:
|
|
||||||
src: "./"
|
|
||||||
dest: "{{ ansible_user_dir }}/.config/alacritty"
|
|
||||||
|
|
||||||
- name: "[Alacritty] Set default"
|
|
||||||
shell: gsettings set org.cinnamon.desktop.default-applications.terminal exec alacritty && gsettings set org.gnome.desktop.default-applications.terminal exec alacritty
|
|
||||||
ignore_errors: true
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
---
|
|
||||||
- name: "[Bash] Install"
|
|
||||||
ansible.builtin.package:
|
|
||||||
name:
|
|
||||||
- bash
|
|
||||||
state: latest
|
|
||||||
become: yes
|
|
||||||
|
|
||||||
- name: "[Bash] Configure"
|
|
||||||
ansible.builtin.copy:
|
|
||||||
src: "./"
|
|
||||||
dest: "{{ ansible_user_dir }}/"
|
|
||||||
@@ -1,248 +0,0 @@
|
|||||||
#? Config file for btop v. 1.3.2
|
|
||||||
|
|
||||||
#* 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 = "Default"
|
|
||||||
|
|
||||||
#* If the theme set background should be shown, set to False if you want terminal background transparency.
|
|
||||||
theme_background = True
|
|
||||||
|
|
||||||
#* 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 = True
|
|
||||||
|
|
||||||
#* 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 gpu box, "default", "braille", "block" or "tty".
|
|
||||||
graph_symbol_gpu = "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 = "memory"
|
|
||||||
|
|
||||||
#* 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 = "total"
|
|
||||||
|
|
||||||
#* 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 = "total"
|
|
||||||
|
|
||||||
#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off".
|
|
||||||
show_gpu_info = "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 = True
|
|
||||||
|
|
||||||
#* 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 = True
|
|
||||||
|
|
||||||
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
|
|
||||||
swap_disk = True
|
|
||||||
|
|
||||||
#* 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 = True
|
|
||||||
|
|
||||||
#* 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 = True
|
|
||||||
|
|
||||||
#* 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"
|
|
||||||
|
|
||||||
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
|
|
||||||
nvml_measure_pcie_speeds = True
|
|
||||||
|
|
||||||
#* Horizontally mirror the GPU graph.
|
|
||||||
gpu_mirror_graph = True
|
|
||||||
|
|
||||||
#* Custom gpu0 model name, empty string to disable.
|
|
||||||
custom_gpu_name0 = ""
|
|
||||||
|
|
||||||
#* Custom gpu1 model name, empty string to disable.
|
|
||||||
custom_gpu_name1 = ""
|
|
||||||
|
|
||||||
#* Custom gpu2 model name, empty string to disable.
|
|
||||||
custom_gpu_name2 = ""
|
|
||||||
|
|
||||||
#* Custom gpu3 model name, empty string to disable.
|
|
||||||
custom_gpu_name3 = ""
|
|
||||||
|
|
||||||
#* Custom gpu4 model name, empty string to disable.
|
|
||||||
custom_gpu_name4 = ""
|
|
||||||
|
|
||||||
#* Custom gpu5 model name, empty string to disable.
|
|
||||||
custom_gpu_name5 = ""
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
---
|
|
||||||
- name: "[Btop] Install"
|
|
||||||
ansible.builtin.package:
|
|
||||||
name:
|
|
||||||
- btop
|
|
||||||
state: latest
|
|
||||||
become: true
|
|
||||||
|
|
||||||
- name: "[Btop] Create config folder"
|
|
||||||
ansible.builtin.file:
|
|
||||||
mode: "0755"
|
|
||||||
path: "{{ ansible_user_dir }}/.config/btop"
|
|
||||||
state: directory
|
|
||||||
|
|
||||||
- name: "[Btop] Configure"
|
|
||||||
ansible.builtin.copy:
|
|
||||||
src: "./"
|
|
||||||
dest: "{{ ansible_user_dir }}/.config/btop"
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"spellcheck":{"dictionaries":["en-GB", "de-DE"],"dictionary":""}}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"lang": "en-US"
|
|
||||||
}
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
{
|
|
||||||
"windowStyle": "native",
|
|
||||||
"channel": "stable",
|
|
||||||
"armcordCSP": true,
|
|
||||||
"minimizeToTray": false,
|
|
||||||
"keybinds": [],
|
|
||||||
"alternativePaste": false,
|
|
||||||
"multiInstance": false,
|
|
||||||
"mods": [
|
|
||||||
"none"
|
|
||||||
],
|
|
||||||
"spellcheck": true,
|
|
||||||
"performanceMode": "none",
|
|
||||||
"skipSplash": false,
|
|
||||||
"inviteWebsocket": true,
|
|
||||||
"startMinimized": false,
|
|
||||||
"dynamicIcon": false,
|
|
||||||
"tray": "dynamic",
|
|
||||||
"customJsBundle": "https://armcord.app/placeholder.js",
|
|
||||||
"customCssBundle": "https://armcord.app/placeholder.css",
|
|
||||||
"disableAutogain": false,
|
|
||||||
"useLegacyCapturer": false,
|
|
||||||
"mobileMode": false,
|
|
||||||
"trayIcon": "dynamic",
|
|
||||||
"doneSetup": true,
|
|
||||||
"clientName": "ArmCord",
|
|
||||||
"customIcon": "/usr/lib/armcord/app.asar/assets/desktop.png",
|
|
||||||
"modCache": {
|
|
||||||
"shelter": "1b35b8802a85809742af99f454bb941f56f759a3"
|
|
||||||
},
|
|
||||||
"hardwareAcceleration": true,
|
|
||||||
"audio": {
|
|
||||||
"workaround": false,
|
|
||||||
"deviceSelect": true,
|
|
||||||
"granularSelect": true,
|
|
||||||
"ignoreVirtual": false,
|
|
||||||
"ignoreDevices": false,
|
|
||||||
"ignoreInputMedia": false,
|
|
||||||
"onlySpeakers": false,
|
|
||||||
"onlyDefaultSpeakers": true,
|
|
||||||
"loopbackType": "loopback"
|
|
||||||
},
|
|
||||||
"transparency": "none",
|
|
||||||
"legcordCSP": true,
|
|
||||||
"bounceOnPing": false,
|
|
||||||
"disableHttpCache": false,
|
|
||||||
"autoHideMenuBar": true,
|
|
||||||
"blockPowerSavingInVoiceChat": false,
|
|
||||||
"useMacSystemPicker": true,
|
|
||||||
"popoutPiP": false,
|
|
||||||
"spellcheckLanguage": [
|
|
||||||
"en-US",
|
|
||||||
"de-DE"
|
|
||||||
],
|
|
||||||
"sleepInBackground": false,
|
|
||||||
"noBundleUpdates": false,
|
|
||||||
"additionalArguments": "",
|
|
||||||
"smoothScroll": true,
|
|
||||||
"autoScroll": false,
|
|
||||||
"useSystemCssEditor": false,
|
|
||||||
"overlayButtonColor": "#121214"
|
|
||||||
}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2022 Catppuccin
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"theme": "src.css",
|
|
||||||
"name": "Catppuccin Macchiato",
|
|
||||||
"author": "winston#0001",
|
|
||||||
"authorId": "505490445468696576",
|
|
||||||
"version": "0.2.0",
|
|
||||||
"description": "🎮 Soothing pastel theme for Discord",
|
|
||||||
"website": "https://github.com/catppuccin/discord",
|
|
||||||
"invite": "r6Mdz5dpFc",
|
|
||||||
"updateSrc": "https://raw.githubusercontent.com/catppuccin/discord/main/themes/macchiato.theme.css",
|
|
||||||
"supportsArmCordTitlebar": false,
|
|
||||||
"enabled": true
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
/**
|
|
||||||
* @name Catppuccin Macchiato
|
|
||||||
* @author winston#0001
|
|
||||||
* @authorId 505490445468696576
|
|
||||||
* @version 0.2.0
|
|
||||||
* @description 🎮 Soothing pastel theme for Discord
|
|
||||||
* @website https://github.com/catppuccin/discord
|
|
||||||
* @invite r6Mdz5dpFc
|
|
||||||
* **/
|
|
||||||
|
|
||||||
@import url("https://catppuccin.github.io/discord/dist/catppuccin-macchiato.theme.css");
|
|
||||||