├── LICENSE
├── README.md
├── bin
├── alert
├── bulknew
├── change-bg
├── eww-open
├── hyprstart
├── hyprwrap
├── import-gsettings
├── layout
├── lock
├── record
├── relink
├── renamer
├── touchsh
└── vidshare
├── config
├── btop
│ ├── .gitignore
│ ├── btop.conf
│ └── btop.log
├── dunst
│ └── dunstrc
├── eww
│ ├── .gitignore
│ ├── .stylelintrc.json
│ ├── art
│ │ ├── dunst
│ │ │ ├── active-hover.svg
│ │ │ ├── active.svg
│ │ │ ├── inactive-hover.svg
│ │ │ ├── inactive.svg
│ │ │ └── originals
│ │ │ │ ├── cellstuff.svg
│ │ │ │ ├── cracked.svg
│ │ │ │ ├── notification.svg
│ │ │ │ └── v1.svg
│ │ ├── nosvagor.png
│ │ ├── player.png
│ │ ├── screenctl
│ │ │ ├── brctl-10.svg
│ │ │ ├── brctl-2.svg
│ │ │ ├── brctl-3.svg
│ │ │ ├── brctl-4.svg
│ │ │ ├── brctl-5.svg
│ │ │ ├── brctl-6.svg
│ │ │ ├── brctl-7.svg
│ │ │ ├── brctl-8.svg
│ │ │ ├── brctl-9.svg
│ │ │ ├── brctl.svg
│ │ │ └── originals
│ │ │ │ ├── brctl.svg
│ │ │ │ ├── jellyfish.svg
│ │ │ │ ├── lightbulb.svg
│ │ │ │ └── sun.svg
│ │ ├── signal
│ │ │ ├── originals
│ │ │ │ ├── network.svg
│ │ │ │ ├── neuron.svg
│ │ │ │ ├── neuron2.svg
│ │ │ │ ├── neuron3.svg
│ │ │ │ └── signal.svg
│ │ │ ├── signal-hover.svg
│ │ │ └── signal.svg
│ │ ├── systemctl
│ │ │ ├── mitochondria-active.svg
│ │ │ ├── mitochondria.svg
│ │ │ └── originals
│ │ │ │ └── mito.svg
│ │ ├── ws-icons
│ │ │ ├── dna-active.svg
│ │ │ ├── dna-empty.svg
│ │ │ ├── dna-hover.svg
│ │ │ ├── dna.svg
│ │ │ ├── dotfiles-active.svg
│ │ │ ├── dotfiles-empty.svg
│ │ │ ├── dotfiles-hover.svg
│ │ │ ├── dotfiles.svg
│ │ │ ├── learn-active.svg
│ │ │ ├── learn-empty.svg
│ │ │ ├── learn-hover.svg
│ │ │ ├── learn.svg
│ │ │ ├── music-active.svg
│ │ │ ├── music-empty.svg
│ │ │ ├── music-hover.svg
│ │ │ ├── music.svg
│ │ │ ├── network-active.svg
│ │ │ ├── network-empty.svg
│ │ │ ├── network-hover.svg
│ │ │ └── network.svg
│ │ └── yuki.png
│ ├── bin
│ │ ├── brightness
│ │ ├── computer_info
│ │ ├── create_temp_files
│ │ ├── date_info
│ │ ├── music_info
│ │ ├── ping
│ │ ├── pulse_info
│ │ ├── timer_info
│ │ ├── weather_info
│ │ └── workspaces
│ ├── eww.scss
│ └── eww.yuck
├── fontconfig
│ └── fonts.conf
├── git
│ └── config
├── glava
│ ├── bars
│ ├── bars.glsl
│ ├── bars_rc.glsl
│ ├── radial
│ ├── radial.glsl
│ ├── radial_rc.glsl
│ ├── smooth_parameters.glsl
│ └── util
├── gtk-3.0
│ ├── bookmarks
│ └── settings.ini
├── gtk-4.0
│ ├── bookmarks
│ └── settings.ini
├── guvcview2
│ └── video0
├── hypr
│ └── hyprland.conf
├── inkscape
│ ├── .gitignore
│ ├── fontcollections
│ │ └── recently_used_fonts.log
│ ├── palettes
│ │ └── vagari.gpl
│ ├── preferences.xml
│ └── templates
│ │ └── default.svg
├── kitty
│ ├── kitty.conf
│ ├── sessions
│ │ ├── LeadPier.conf
│ │ ├── acr.conf
│ │ ├── cogikyo.conf
│ │ ├── cullyn.dev.conf
│ │ ├── dabella.conf
│ │ ├── dotfiles.conf
│ │ ├── eww.conf
│ │ ├── firefox.conf
│ │ ├── home.conf
│ │ ├── nectar.conf
│ │ ├── nosvagor.com.conf
│ │ ├── nvim.conf
│ │ ├── pipes.conf
│ │ ├── rust-run.conf
│ │ ├── rust.conf
│ │ ├── sapais.conf
│ │ ├── sonder.conf
│ │ ├── term.conf
│ │ ├── vagari.conf
│ │ └── voice.conf
│ └── tab_bar.py
├── lazygit
│ ├── .gitignore
│ └── config.yml
├── manim
│ └── manim.cfg
├── mimeapps.list
├── mpv
│ └── mpv.conf
├── nvim
│ ├── .gitignore
│ ├── init.lua
│ ├── lua
│ │ └── user
│ │ │ ├── alpha.lua
│ │ │ ├── autocmds.lua
│ │ │ ├── autopairs.lua
│ │ │ ├── cmp.lua
│ │ │ ├── cursor.lua
│ │ │ ├── keymaps.lua
│ │ │ ├── lsp.lua
│ │ │ ├── lualine.lua
│ │ │ ├── nvimtree.lua
│ │ │ ├── settings.lua
│ │ │ ├── telescope.lua
│ │ │ └── treesitter.lua
│ └── spell
│ │ ├── en.utf-8.add
│ │ └── en.utf-8.add.spl
├── paru
│ └── paru.conf
├── pipes-rs
│ └── config.toml
├── starship.toml
├── swaylock
│ └── config.conf
├── user-dirs.dirs
├── xplr
│ ├── init.lua
│ └── stylua.toml
├── zathura
│ └── zathurarc
└── zsh
│ ├── vagari-highlights.zsh
│ └── zshrc
├── etc
├── bluetooth
│ └── main.conf
├── caddy.service
├── crkbd.json
├── fonts.tar.gz
├── gifview.desktop
├── loader.conf
├── logid.cfg
├── packages.lst
├── sddm.conf.d
│ ├── autologin.conf
│ └── hyprland.desktop
├── security
│ └── faillock.conf
├── udev
│ ├── 81-bluetooth-hci.rules
│ └── 92-viia.rules
└── vail_keyboard_layout.vil
└── share
├── dotfiles-banner.gif
├── example-1.png
├── example-2.png
├── example-3.png
├── favicon.ico
├── newtab.html
├── obscure_shadows
├── ambedo.png
├── anemoia.png
├── anoscetia.png
├── harmonoia.png
├── idewild.png
├── kinspec.png
├── onsim.png
├── ringlorn.png
├── solibra.png
├── trumspringa.png
├── vemodalen.png
├── wangare.png
├── yuyi.png
└── zenosyne.png
├── social-preview.jpg
├── sounds
├── discovery.ogg
├── fruit.ogg
├── gems.ogg
├── jackpot.ogg
├── knock.ogg
├── moondrop.ogg
└── reward.ogg
└── videos
├── blackhole.webm
├── dna-vf-blu.webm
├── dna.mp4
└── record.mp4
/bin/alert:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | SOUND_PATH="$HOME/dotfiles/share/sounds"
4 | # dunsitfy arguments ⮯
5 | app="$1"
6 | # summary="$2"
7 | # body="$3"
8 | # icon_path="$4"
9 | urgency="$5"
10 |
11 | case "$urgency" in
12 | LOW) sound="none" ;;
13 | NORMAL) sound="moondrop" ;;
14 | CRITICAL) sound="gems" ;;
15 | esac
16 |
17 | case "$app" in
18 | timer) sound="jackpot" ;;
19 | attention) sound="discovery" ;;
20 | chat) sound="reward" ;;
21 | work) sound="fruit" ;;
22 | wf-start) sound="discovery" ;;
23 | wf-end) sound="reward" ;;
24 | Spotify) sound="none" ;;
25 | discord) sound="none" ;;
26 | Slack) sound="knock"
27 | ;; esac
28 |
29 | if [ "$sound" == "none" ]; then
30 | exit 0
31 | fi
32 |
33 | paplay "$SOUND_PATH/$sound.ogg" & disown
34 |
35 | exit 0
36 |
--------------------------------------------------------------------------------
/bin/bulknew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | # Description: Allows for creation of multiple files/dirs simultaneously
4 | # Creates a tmp file to write each entry in a separate line
5 | #
6 | # Note: Only relative paths are supported. Absolute paths are ignored
7 | # Leading and trailing whitespace in path names is also ignored
8 | #
9 | # Shell: POSIX compliant
10 | # Author: KlzXS
11 |
12 | EDITOR="${EDITOR:-vi}"
13 | TMPDIR="${TMPDIR:-/tmp}"
14 |
15 | printf "'f'ile / 'd'ir? "
16 | read -r resp
17 |
18 | if [ "$resp" = "f" ]; then
19 | #shellcheck disable=SC2016
20 | cmd='mkdir -p "$(dirname "{}")" && touch "{}"'
21 | elif [ "$resp" = "d" ]; then
22 | cmd='mkdir -p {}'
23 | else
24 | exit 1
25 | fi
26 |
27 | tmpfile=$(mktemp "$TMPDIR/.nnnXXXXXX")
28 | $EDITOR "$tmpfile"
29 |
30 | sed "/^\//d" "$tmpfile" | xargs -n1 -I{} sh -c "$cmd"
31 |
32 | rm "$tmpfile"
33 |
--------------------------------------------------------------------------------
/bin/change-bg:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | DISPLAY="HDMI-A-1"
4 | VID_PATH="$HOME/dotfiles/share/videos"
5 |
6 | background_choice=""
7 | if [[ $# -eq 0 ]]; then
8 | background_choice="default"
9 | else
10 | background_choice="$1"
11 | fi
12 |
13 | dna () {
14 | mpvpaper -o "--loop --brightness=6 --contrast=9 --saturation=-16 --hue=-24" "$DISPLAY" "$VID_PATH/dna.mp4" & disown
15 | }
16 |
17 | record () {
18 | mpvpaper -o "--loop --brightness=-3 --contrast=10 --saturation=-42 --hue=69" "$DISPLAY" "$VID_PATH/record.mp4" & disown
19 | }
20 |
21 | blackhole () {
22 | mpvpaper -o "--loop --brightness=3 --contrast=6 --saturation=-50 --hue=-8 --gamma=-20" "$DISPLAY" "$VID_PATH/blackhole.webm" & disown
23 | }
24 |
25 |
26 | case "$background_choice" in
27 | "default" )
28 | ps -ef | rg "record.mp4|blackhole.webm" | rg -v rg | awk '{print $2}' | xargs kill
29 | exit 0
30 | ;;
31 | "code")
32 | dna & disown
33 | sleep 2
34 | ps -ef | rg "mpvpaper" | rg -v rg | awk '{print $2}' | head -n -1 | xargs kill
35 | ;;
36 | "music")
37 | record & disown
38 | ps -ef | rg "blackhole.webm" | rg -v rg | awk '{print $2}' | xargs kill
39 | ;;
40 | "lock")
41 | blackhole & disown
42 | ps -ef | rg "record.mp4" | rg -v rg | awk '{print $2}' | xargs kill
43 | ;;
44 | *)
45 | echo "invalid choice; choices: code | music | lock"
46 | exit 1
47 | ;;
48 | esac
49 |
50 | exit 0
51 |
--------------------------------------------------------------------------------
/bin/eww-open:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | killall eww -9
4 | eww daemon
5 | eww open-many \
6 | today \
7 | computer user \
8 | workspaces \
9 | music albumArt \
10 | pacman screenctl dunst systemctl \
11 | assistant
12 |
--------------------------------------------------------------------------------
/bin/hyprstart:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | sleep 1
4 | change-bg "code"
5 |
6 | layout -n 1
7 | # layout -n 2
8 | # layout -n 3
9 | layout -n 4
10 |
11 | hyprctl dispatch workspace 5
12 | glava -e "bars_rc.glsl" & disown
13 | glava -e "radial_rc.glsl" & disown
14 | spotify-launcher & disown
15 | sleep 2
16 | hyprctl dispatch setfloating
17 | hyprctl dispatch moveactive exact 2361 147
18 | hyprctl dispatch resizeactive exact 1301 1000
19 |
20 | ps -ef | rg weather_info | rg -v rg | awk '{print $2}' | xargs kill
21 | eval "$HOME/dotfiles/config/eww/bin/weather_info" & disown
22 | eval "$HOME/dotfiles/config/eww/bin/date_info" & disown
23 |
24 | dunstify -a "attention" -u low "$USER@$HOSTNAME" "こんにちは"
25 | eww-open
26 |
27 | exit 0
28 |
--------------------------------------------------------------------------------
/bin/hyprwrap:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | export HYPRLAND_LOG_WLR=1
4 | export XCURSOR_SIZE=24
5 | export GTK_THEME=""
6 | export XCURSOR_THEME="catppuccin-macchiato-pink-standard+default"
7 | export PATH="$HOME/.cargo/bin:$PATH"
8 | export GOPATH="$HOME/.go"
9 | export PATH="$PATH:$HOME/.go/bin"
10 | export PATH="$HOME/.local/bin:$PATH"
11 | export PAGER=nvimpager
12 | export EDITOR="nvim"
13 | export DOTS="$HOME/dotfiles"
14 |
15 | # export PISTOL_CHROMA_STYLE=catppuccin-macchiato
16 |
17 | export FZF_DEFAULT_OPTS="\
18 | --color=bg+:#222536,bg:#222536,spinner:#b29ae8,hl:#f8b486 \
19 | --color=fg:#9db2f4,header:#f8b486,info:#6380ec,pointer:#f8b486 \
20 | --color=marker:#6380ec,fg+:#8aa4f3,prompt:#6380ec,hl+:#f8b486"
21 |
22 | export XDG_CURRENT_DESKTOP=Hyprland
23 | export XDG_SESSION_TYPE=wayland
24 | export XDG_SESSION_DESKTOP=Hyprland
25 | export XDG_DATA_DIRS="/usr/share:/usr/local/share"
26 |
27 | export QT_AUTO_SCREEN_SCALE_FACTOR=1
28 | export QT_QPA_PLATFORM="wayland;xcb"
29 | export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
30 | export QT_QPA_PLATFORMTHEME=qt5ct
31 |
32 | export GDK_BACKEND="wayland,x11"
33 | export CLUTTER_BACKEND=wayland
34 | export SDL_VIDEODRIVER=wayland
35 |
36 | exec Hyprland
37 |
--------------------------------------------------------------------------------
/bin/import-gsettings:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/settings.ini"
4 | GNOME_SCHEMA="org.gnome.desktop.interface"
5 |
6 | if [ ! -f "$CONFIG" ]; then
7 | echo "gtk-settings not found"
8 | exit 1
9 | fi
10 |
11 | gtk_theme="$(grep 'gtk-theme-name' "$CONFIG" | sed 's/.*\s*=\s*//')"
12 | icon_theme="$(grep 'gtk-icon-theme-name' "$CONFIG" | sed 's/.*\s*=\s*//')"
13 | cursor_theme="$(grep 'gtk-cursor-theme-name' "$CONFIG" | sed 's/.*\s*=\s*//')"
14 | font_name="$(grep 'gtk-font-name' "$CONFIG" | sed 's/.*\s*=\s*//')"
15 |
16 | gsettings set "$GNOME_SCHEMA" gtk-theme "$gtk_theme"
17 | gsettings set "$GNOME_SCHEMA" icon-theme "$icon_theme"
18 | gsettings set "$GNOME_SCHEMA" cursor-theme "$cursor_theme"
19 | gsettings set "$GNOME_SCHEMA" font-name "$font_name"
20 |
--------------------------------------------------------------------------------
/bin/layout:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | inprog=$(ps -ef | rg layout | rg -v rg | wc -l)
4 | if [[ "$inprog" -gt 2 ]]; then
5 | notify-send -u critical -t 2000 "ERROR: layout already in progress."
6 | exit 0
7 | fi
8 |
9 | a_flag="" # [a]plication
10 | n_flag="" # [w]orkspace
11 | # s_flag="" # [s]ession (kitty)
12 | # w_flag="" # [w]ebsite
13 |
14 | while getopts 'a:d:n:w:s:' flag; do
15 | case "$flag" in
16 | a) a_flag="$OPTARG" ;;
17 | # s) s_flag="$OPTARG" ;;
18 | n) n_flag="$OPTARG" ;;
19 | # w) w_flag="$OPTARG" ;;
20 | *) exit 1 ;;
21 | esac
22 | done
23 |
24 | if [[ "$#" == 0 ]]; then
25 | exit 1
26 | fi
27 |
28 | hyprctl dispatch workspace 6
29 |
30 | windows=$(hyprctl workspaces | grep -A 2 "ID $n_flag" | grep -oP '\windows:\s+\K[0-9]+')
31 | if [[ -n "$windows" && "$windows" -ne 0 ]]; then
32 | dunstify -u critical -t 2000 "ERROR" "a layout is already open"
33 | hyprctl dispatch workspace previous
34 | exit 1
35 | fi
36 |
37 | browser() {
38 | if [[ "$2" == "tab" ]]; then
39 | firefox-developer-edition "$1" &
40 | sleep 1.5
41 | else
42 | firefox-developer-edition --new-window "$1" &
43 | sleep 1.5
44 | fi
45 | }
46 |
47 | terminal() {
48 | if [[ -n "$1" ]]; then
49 | kitty --session ~/.config/kitty/sessions/"$1".conf &
50 | sleep 1
51 | else
52 | kitty --session ~/.config/kitty/sessions/pipes.conf &
53 | sleep 1
54 | fi
55 | }
56 |
57 | resize() {
58 | hyprctl dispatch resizeactive exact 1870 1186
59 | hyprctl dispatch movefocus l
60 | hyprctl disptch resizeactive exact 1866 1955
61 | for ((i = 0; i < 5; i++)); do
62 | hyprctl dispatch resizeactive exact 1012 1955
63 | done # have resize master several times (bug?) ⮭
64 | }
65 |
66 | dispatch() {
67 | local medium_size="660 563"
68 | local medium_pos="3153 209"
69 | # Use the same values as defined in your hyprland.conf float commands
70 | hyprctl dispatch setfloating
71 | hyprctl dispatch moveactive exact "$medium_pos"
72 | hyprctl dispatch resizeactive exact "$medium_size"
73 | }
74 |
75 | acr() {
76 | cursor & sleep 0.5
77 | terminal "acr"
78 | dispatch
79 | browser "grok.com"
80 | browser "localhost:3002" "tab"
81 | browser "https://github.com/nosvagor/acr" "tab"
82 | browser "https://wangare.com/project/csksoc4w0s8c4k8ok8g0cos8/production" "tab"
83 | browser "https://databasetagger.acrecruitergroup.com" "tab"
84 | }
85 |
86 | nosvagor() {
87 | cursor & sleep 0.5
88 | terminal "nosvagor.com"
89 | dispatch
90 | browser "grok.com"
91 | browser "localhost:3000" "tab"
92 | browser "https://wangare.com/project/vssk4cg8kwwgk8cgc08w44ow/production" "tab"
93 | browser "https://nosvagor.com" "tab"
94 | hyprctl dispatch movewindow l
95 | }
96 |
97 | leadPier () {
98 | cursor & sleep 2
99 | terminal "LeadPier"
100 | dispatch
101 | browser "grok.com"
102 | browser "http://localhost:4000" "tab"
103 | }
104 |
105 | # ============================================================================
106 | # hyprctl keyword input:follow_mouse 0
107 |
108 | hyprctl dispatch workspace "$n_flag"
109 |
110 | case "$n_flag" in
111 | 1)
112 | slack & sleep 0.5
113 | browser "https://app.hey.com/calendar/days/now"
114 | ;;
115 | 2)
116 | ;;
117 | 3)
118 | case "$a_flag" in
119 | "a") acr ;;
120 | "n") nosvagor ;;
121 | "l") leadPier ;;
122 | esac
123 | ;;
124 | 4)
125 | terminal "dotfiles"
126 | browser "https://github.com/nosvagor/dotfiles"
127 | resize
128 | ;;
129 | *) exit 1 ;;
130 | esac
131 |
132 | # if [[ ""$n_flag == 3 ]]; then
133 | # hyprctl dispatch movefocus r
134 | # hyprctl dispatch movefocus u
135 | # hyprctl dispatch resizeactive exact 1870 1186
136 | # hyprctl dispatch movefocus d
137 | # hyprctl dispatch movefocus l
138 | # fi
139 | # hyprctl keyword input:follow_mouse 1
140 | # ============================================================================
141 |
142 | exit 0
143 |
--------------------------------------------------------------------------------
/bin/lock:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ws=$(tail -n 1 /tmp/eww/workspace)
4 | hyprctl dispatch workspace 6
5 |
6 | killall eww -9
7 | killall glava
8 | playerctl pause
9 | # change-bg "lock" 2>&1 /dev/null
10 | sleep 0.5
11 |
12 | swaylock -C "$HOME/.config/swaylock/config.conf"
13 |
14 | glava -e "bars_rc.glsl" & disown
15 | glava -e "radial_rc.glsl" & disown
16 | change-bg "music"
17 | hyprctl dispatch workspace "$ws"
18 |
19 | ps -ef | rg weather_info | rg -v rg | awk '{print $2}' | xargs kill
20 | eval "$HOME/dotfiles/config/eww/bin/weather_info" & disown
21 | eval "$HOME/dotfiles/config/eww/bin/date_info" & disown
22 |
23 | dunstify -a "attention" -u low "$USER@$HOSTNAME" "こんにちは"
24 | eww-open
25 |
26 | exit 0
27 |
--------------------------------------------------------------------------------
/bin/record:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | C="--codec=h264_vaapi"
4 | D="--device=/dev/dri/renderD128"
5 |
6 | dir="$HOME/media/recordings"
7 | a_flag="combined_audio.monitor" # audio sources
8 | a_label="fullaudio"
9 | s_flag=""
10 | s_label="fullscreen"
11 |
12 | while getopts 'a:s:d:' flag; do
13 | case "$flag" in
14 | a) a_flag="$OPTARG" ;;
15 | s) s_flag="$OPTARG" ;;
16 | d) dir="$OPTARG" ;;
17 | *) exit 1 ;;
18 | esac
19 | done
20 |
21 | if [[ "$s_flag" == "slurp" ]]; then
22 | slurp="$(slurp)"
23 | g="-g $slurp"
24 | s_label=$(echo "$slurp" | awk -F ' ' '{print $2}')
25 | else
26 | g=""
27 | fi
28 |
29 | if [[ "$s_label" == "" ]]; then
30 | dunstify "no region selected, aborting" -a "wf-end" -u critical -t 1000
31 | exit 1
32 | fi
33 |
34 | case "$a_flag" in
35 | source) a="--audio=$input_source"; a_label="source" ;;
36 | sink) a="--audio=$output_source"; a_label="sink" ;;
37 | none) a=""; a_label="muted" ;;
38 | *) a="--audio=$a_flag" ;;
39 | esac
40 |
41 | label="($s_label-$a_label)"
42 |
43 | if [[ "$label" == "(fullscreen-fullaudio)" ]]; then
44 | label="(all)"
45 | fi
46 |
47 | output="$dir/$(date "+%m-%d-%y %H:%M $label").mp4"
48 |
49 | if [[ -s "$output" ]]; then
50 | rm "$output"
51 | fi
52 |
53 | f="-f$output"
54 |
55 | if [[ $a_flag == "combined_audio.monitor" ]]; then
56 |
57 | # sources
58 | input_source="alsa_output.usb-Focusrite_Scarlett_Solo_USB_Y70ZEU921E21FF-00.analog-stereo"
59 | output_source="bluez_output.14_3F_A6_10_A1_B5.1.monitor"
60 |
61 | # create a null sink (virtual audio device)
62 | combined=$(pactl load-module module-null-sink sink_name=combined_audio)
63 |
64 | # scarlette needs to be remapped to mono audio
65 | remapped_input=$(pactl load-module module-remap-source master="$input_source" source_name=remapped_input channels=1 channel_map=mono)
66 |
67 | # create two audio loopbacks, one for each audio source
68 | input=$(pactl load-module module-loopback source=remapped_input sink=combined_audio)
69 | output=$(pactl load-module module-loopback source="$output_source" sink=combined_audio)
70 |
71 | # lower sink volume (volume control on sink does not affect it in the combined input)
72 | output_loopback_id=$(pactl list short sink-inputs | rg "PipeWire" | tail -n 1 | awk '{print $1}')
73 | pactl set-sink-input-volume "$output_loopback_id" 150%
74 | fi
75 |
76 | cleanup() {
77 | if [[ $a_flag == "combined_audio.monitor" ]]; then
78 | pactl unload-module "$combined"
79 | pactl unload-module "$input"
80 | pactl unload-module "$output"
81 | pactl unload-module "$remapped_input"
82 | fi
83 |
84 | dunstify "🎬 screen recording ended" -a "wf-end" -u low -t 1000
85 | }
86 |
87 | # =============================================================================
88 |
89 | dunstify "📽️ recording $label" -a "wf-start" -u low -t 2000 && sleep 2.1
90 |
91 | wf-recorder "$C" "$D" "$a" "$f" "$g"
92 |
93 | # catch Ctrl+C and call the cleanup function
94 | trap cleanup EXIT
95 |
--------------------------------------------------------------------------------
/bin/relink:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ln -sfnv "$HOME"/dotfiles/config/* "$HOME"/.config/
4 |
--------------------------------------------------------------------------------
/bin/renamer:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection}
4 |
5 | if type qmv >/dev/null 2>&1; then
6 | batchrenamesel="qmv -fdo -da"
7 | batchrename="qmv -fdo -a"
8 | elif type vidir >/dev/null 2>&1; then
9 | batchrenamesel="vidir"
10 | batchrename="vidir"
11 | else
12 | printf "there is not batchrename program installed."
13 | exit
14 | fi
15 |
16 | if [ -s "$selection" ]; then
17 | printf "rename selection? "
18 | read -r resp
19 | fi
20 |
21 | if [ "$resp" = "y" ]; then
22 | # -o flag is necessary for interactive editors
23 | xargs -o -0 $batchrenamesel < "$selection"
24 |
25 | # Clear selection
26 | if [ -p "$NNN_PIPE" ]; then
27 | printf "-" > "$NNN_PIPE"
28 | fi
29 | elif [ ! "$(LC_ALL=C ls -a)" = ".
30 | .." ]; then
31 | # On older systems that don't have ls -A
32 | $batchrename
33 | fi
34 |
--------------------------------------------------------------------------------
/bin/touchsh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | file="$1"
4 |
5 | touch "$file"
6 | chmod +x "$file"
7 | echo "#!/usr/bin/env $2" >> "$file"
8 |
--------------------------------------------------------------------------------
/bin/vidshare:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | ffmpeg -i "$1" -c:v libx264 -preset veryslow -crf 20 -vf "scale=1920:-1" -b:v 2M -maxrate 2M -bufsize 4M "$2"
4 |
--------------------------------------------------------------------------------
/config/btop/.gitignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/config/btop/.gitignore
--------------------------------------------------------------------------------
/config/btop/btop.log:
--------------------------------------------------------------------------------
1 |
2 | 2025/03/05 (13:34:52) | ===> btop++ v.1.4.0
3 | 2025/03/05 (13:34:52) | WARNING: Failed to join _runner thread on exit!
4 |
5 | 2025/03/05 (14:16:26) | ===> btop++ v.1.4.0
6 | 2025/03/05 (14:16:26) | WARNING: Failed to join _runner thread on exit!
7 |
8 | 2025/03/05 (16:00:16) | ===> btop++ v.1.4.0
9 | 2025/03/05 (16:00:16) | WARNING: Failed to join _runner thread on exit!
10 |
11 | 2025/03/05 (17:26:06) | ===> btop++ v.1.4.0
12 | 2025/03/05 (17:26:06) | WARNING: Failed to join _runner thread on exit!
13 |
--------------------------------------------------------------------------------
/config/dunst/dunstrc:
--------------------------------------------------------------------------------
1 | [global]
2 | follow = "keyboard"
3 | enable_posix_regex = true
4 | origin = "bottom-right"
5 | width = 600
6 | offset = "90x118"
7 | notification_limit = 1
8 | progress_bar = true
9 | progress_bar_height = 10
10 | progress_bar_frame_width = 1
11 | progress_bar_min_width = 600
12 | progress_bar_max_width = 600
13 | indicate_hidden = false
14 | padding = 16
15 | horizontal_padding = 16
16 | text_icon_padding = 16
17 | frame_width = 2
18 | gap_size = 0
19 | separator_color = "frame"
20 | sort = "yes"
21 | layer = "top"
22 | font = "Albert Sans 16"
23 | line_height = 2
24 | markup = "full"
25 | format = "⽱ %s ⾛ %a\n%b"
26 | fullscreen = "pushback"
27 | alignment = "left"
28 | vertical_alignment = "center"
29 | show_age_threshold = 60
30 | word_wrap = false
31 | ellipsize = "middle"
32 | ignore_newline = "no"
33 | stack_duplicates = true
34 | hide_duplicate_count = false
35 | show_indicators = false
36 | enable_recursive_icon_lookup = true
37 | icon_position = "left"
38 | min_icon_size = 64
39 | max_icon_size = 64
40 | icon_theme = "Nordzy"
41 | icon_path = "/usr/share/icons/Nordzy/"
42 | sticky_history = "yes"
43 | history_length = 20
44 | dmenu = "/usr/bin/bmenu -p dunst:"
45 | browser = "/usr/bin/xdg-open"
46 | always_run_script = true
47 | script = "/usr/bin/alert"
48 | title = "Dunst"
49 | class = "Dunst"
50 | corner_radius = 16
51 | ignore_dbusclose = false
52 | force_xwayland = false
53 | force_xinerama = false
54 | mouse_left_click = "close_current"
55 | mouse_middle_click = "do_action"
56 | mouse_right_click = "close_all"
57 |
58 | [urgency_low]
59 | background = "#25284180"
60 | foreground = "#7492ef"
61 | frame_color = "#4a6be380"
62 | timeout = 4
63 |
64 | [urgency_normal]
65 | background = "#49353130"
66 | foreground = "#f2a170"
67 | frame_color = "#ea834b"
68 | timeout = 8
69 |
70 | [urgency_critical]
71 | background = "#82414120"
72 | foreground = "#f7768e"
73 | frame_color = "#f34658"
74 | script = "/usr/bin/alert critical"
75 | timeout = 0
76 |
--------------------------------------------------------------------------------
/config/eww/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | package-lock.json
3 | package.json
4 |
--------------------------------------------------------------------------------
/config/eww/.stylelintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": ["stylelint-config-standard-scss"],
3 | "rules": {
4 | "selector-type-no-unknown": [
5 | true,
6 | {
7 | "ignoreTypes": [
8 | "window",
9 | "tooltip"
10 | ]
11 | }
12 | ]
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/config/eww/art/nosvagor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/config/eww/art/nosvagor.png
--------------------------------------------------------------------------------
/config/eww/art/player.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/config/eww/art/player.png
--------------------------------------------------------------------------------
/config/eww/art/ws-icons/dna-active.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
105 |
--------------------------------------------------------------------------------
/config/eww/art/ws-icons/dna-empty.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
105 |
--------------------------------------------------------------------------------
/config/eww/art/ws-icons/dna-hover.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
105 |
--------------------------------------------------------------------------------
/config/eww/art/ws-icons/dna.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
105 |
--------------------------------------------------------------------------------
/config/eww/art/ws-icons/dotfiles-active.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
102 |
--------------------------------------------------------------------------------
/config/eww/art/ws-icons/dotfiles-empty.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
102 |
--------------------------------------------------------------------------------
/config/eww/art/ws-icons/dotfiles-hover.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
102 |
--------------------------------------------------------------------------------
/config/eww/art/ws-icons/dotfiles.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
102 |
--------------------------------------------------------------------------------
/config/eww/art/ws-icons/learn-active.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
89 |
--------------------------------------------------------------------------------
/config/eww/art/ws-icons/learn-empty.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
89 |
--------------------------------------------------------------------------------
/config/eww/art/ws-icons/learn-hover.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
89 |
--------------------------------------------------------------------------------
/config/eww/art/ws-icons/learn.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
89 |
--------------------------------------------------------------------------------
/config/eww/art/ws-icons/music-active.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
100 |
--------------------------------------------------------------------------------
/config/eww/art/ws-icons/music-empty.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
100 |
--------------------------------------------------------------------------------
/config/eww/art/ws-icons/music-hover.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
100 |
--------------------------------------------------------------------------------
/config/eww/art/ws-icons/music.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
100 |
--------------------------------------------------------------------------------
/config/eww/art/ws-icons/network-active.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
88 |
--------------------------------------------------------------------------------
/config/eww/art/ws-icons/network-empty.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
88 |
--------------------------------------------------------------------------------
/config/eww/art/ws-icons/network-hover.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
88 |
--------------------------------------------------------------------------------
/config/eww/art/ws-icons/network.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
88 |
--------------------------------------------------------------------------------
/config/eww/art/yuki.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/config/eww/art/yuki.png
--------------------------------------------------------------------------------
/config/eww/bin/brightness:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | inprog=$(ps -ef | rg adjust | rg -v rg | wc -l)
4 | if [[ "$inprog" -gt 2 ]]; then
5 | exit 1
6 | fi
7 |
8 | reset () {
9 | echo "10" > "/tmp/eww/brightness"
10 | pkill wlr-brightness
11 | wlr-brightness & disown
12 | notify-send -h int:value:100 "normal brightness (100%)" -u low -t 1000 -i display-brightness-full
13 | gdbus call -e -d de.mherzberg -o /de/mherzberg/wlrbrightness -m de.mherzberg.wlrbrightness.set 1
14 | }
15 |
16 | night () {
17 | echo "4" >> "/tmp/eww/brightness"
18 | dunstify -h int:value:40 "low brightness (40%)" -u low -t 1000 -i display-brightness-low -a "wlr-brightness"
19 | gdbus call -e -d de.mherzberg -o /de/mherzberg/wlrbrightness -m de.mherzberg.wlrbrightness.set 0.4
20 | }
21 |
22 | adjust () {
23 | br="$2"
24 | if [[ "$br" -ge 2 ]] && [[ "$br" -le 10 ]]; then
25 | if [[ "$1" == "down" ]]; then
26 | if [[ "$br" -gt 2 ]]; then
27 | gdbus call -e -d de.mherzberg -o /de/mherzberg/wlrbrightness -m de.mherzberg.wlrbrightness.decrease 0.1
28 | br=$((br - 1))
29 | else
30 | reset
31 | br=10
32 | fi
33 | else
34 | if [[ "$br" -lt 10 ]]; then
35 | gdbus call -e -d de.mherzberg -o /de/mherzberg/wlrbrightness -m de.mherzberg.wlrbrightness.increase 0.1
36 | br=$((br + 1))
37 | fi
38 | fi
39 | echo "$br" >> "/tmp/eww/brightness"
40 | dunstify -h int:value:"$br"0 "brightness ""${br}0%" -u low -t 500 -i display-brightness-medium -a "wlr-brightness"
41 | else
42 | exit 0
43 | fi
44 | }
45 |
46 | "$@"
47 |
--------------------------------------------------------------------------------
/config/eww/bin/computer_info:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | path="/sys/class/drm/card0/device"
4 |
5 | gpu_busy=$(<"$path/gpu_busy_percent")
6 | mem_busy=$(<"$path/mem_busy_percent")
7 |
8 | mclk=$(rg "\*" "$path/pp_dpm_mclk" | rg -o "[0-9]{3}")
9 | mclk_level=$(rg "\*" "$path/pp_dpm_mclk" | rg -o "^[0-9]{1}")
10 |
11 | total=$(cat "$path/mem_info_vram_total")
12 | used=$(cat "$path/mem_info_vram_used")
13 | vram=$(bc -l <<< "$used/$total * 100" | awk '{print int($1+0.5)}' )
14 |
15 | echo "{\
16 | \"mem_busy\":\"$mem_busy\", \
17 | \"gpu_busy\":\"$gpu_busy\", \
18 | \"mclk\":\"$mclk\", \
19 | \"mclk_level\":\"$mclk_level\", \
20 | \"vram\":\"$vram\", \
21 | \"used\":\"$used\" \
22 | }"
23 |
24 | exit 0
25 |
--------------------------------------------------------------------------------
/config/eww/bin/create_temp_files:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | dir=/tmp/eww
4 | rm -rf "$dir"
5 | mkdir "$dir"
6 |
7 | file_names="workspace sink source clockface-minute clockface-hour date_abd weeks_alive"
8 | read -ra names_arr <<< "$file_names"
9 |
10 | for name in "${names_arr[@]}"; do
11 | touch "$dir/$name"
12 | done
13 |
14 | echo "14:00" > "$dir/alarm"
15 | echo "01:30" > "$dir/timer"
16 | echo "10" > "$dir/brightness"
17 |
18 | exit 0
19 |
--------------------------------------------------------------------------------
/config/eww/bin/date_info:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | day () {
4 | date +'{"weekday":"%A", "month":"%B", "day":"%d"}' >> "/tmp/eww/date"
5 | }
6 |
7 | week () {
8 | greg_brith="1996-02-26 PST"
9 | weeks_alive=$(( ($(date -d "$greg_brith" +%s) - $(date +%s))/86400/-7 ))
10 | echo "$weeks_alive" >> "/tmp/eww/weeks_alive"
11 | }
12 |
13 | clockface-hour () {
14 | while true; do
15 | hour=$(date "+%I")
16 |
17 | case "$hour" in
18 | 01) res="";;
19 | 02) res="";;
20 | 03) res="";;
21 | 04) res="";;
22 | 05) res="";;
23 | 06) res="";;
24 | 07) res="";;
25 | 08) res="";;
26 | 09) res="";;
27 | 10) res="";;
28 | 11) res="";;
29 | 12) res="";;
30 | *) res="";;
31 | esac
32 | echo "$res" >> "/tmp/eww/clockface-hour"
33 | next_hour=$(date -d "+ 1hour" "+%H:00")
34 | until_next_hour=$(( $(date -d "$next_hour" +%s) - $(date +%s) ))
35 | sleep "$until_next_hour"
36 | done;
37 | }
38 |
39 | clockface-minute () {
40 | while true; do
41 | minute=$(date "+%M / 5" | bc)
42 | minute=${minute%.*}
43 |
44 | case "$minute" in
45 | 1) res="";;
46 | 2) res="";;
47 | 3) res="";;
48 | 4) res="";;
49 | 5) res="";;
50 | 6) res="";;
51 | 7) res="";;
52 | 8) res="";;
53 | 9) res="";;
54 | 10) res="";;
55 | 11) res="";;
56 | 12) res="";;
57 | *) res="";;
58 | esac
59 | echo "$res" >> "/tmp/eww/clockface-minute"
60 | until_next_min=$(( 60 - $(date +%-S) ))
61 | sleep "$until_next_min"
62 | done
63 | }
64 |
65 | day
66 | week
67 | clockface-hour & clockface-minute
68 |
--------------------------------------------------------------------------------
/config/eww/bin/music_info:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | player="--player=spotify"
4 |
5 | volume () {
6 | direction="+"
7 | if [[ "$1" == "down" ]]; then
8 | direction="-"
9 | fi
10 | playerctl "$player" volume "$2""$direction"
11 | }
12 |
13 | seek () {
14 | direction="+"
15 | if [[ "$1" == "down" ]]; then
16 | direction="-"
17 | fi
18 | playerctl "$player" position 10"$direction"
19 | }
20 |
21 | progress() {
22 | status=$(playerctl status)
23 | if [[ $status == "Playing" ]] || [[ $status == "Paused" ]]; then
24 |
25 | length=$(playerctl "$player" metadata --format '{{ mpris:length }}' | bc)
26 | position=$(playerctl "$player" metadata --format '{{ position }}' | bc)
27 | progress=$(echo "scale=3; $position / $length * 100 + 0.1" | bc)
28 |
29 | artUrl=$(playerctl "$player" metadata --format '{{ mpris:artUrl }}')
30 | tempfile="/tmp/eww/album_art.png"
31 | wget --output-document="$tempfile" "$artUrl"
32 | eww update album-art-path="$tempfile"
33 |
34 | echo "$progress"
35 | else
36 | echo "0"
37 | fi
38 | }
39 |
40 | check_status () {
41 | status=$(playerctl status)
42 | while ! [[ $status == "Playing" ]]; do
43 | echo "{\
44 | \"status\":\"Paused\",\
45 | \"volume\":\"0\",\
46 | \"artist\":\"Spotify\",\
47 | \"album\":\"Waiting for player to start...\",\
48 | \"title\":\"Waiting for player to start...\"\
49 | }" > '/tmp/eww/music.json'
50 | sleep 1
51 | status=$(playerctl status)
52 | done
53 | }
54 |
55 | get_json () {
56 | while true; do
57 | check_status
58 | playerctl -F "$player" metadata -f "{\
59 | \"status\":\"{{ status }}\",\
60 | \"volume\":\"{{ volume }}\",\
61 | \"artist\":\"{{ artist }}\",\
62 | \"album\":\"{{ album }}\",\
63 | \"title\":\"{{ title }}\"\
64 | }" > '/tmp/eww/music.json'
65 | sleep 1
66 | notify-send "playerctl died, restarting"
67 | done
68 | }
69 |
70 | "$@"
71 |
--------------------------------------------------------------------------------
/config/eww/bin/ping:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | res="$(ping -c 3 "google.com" | rg -oP 'rtt min/avg/max/mdev = \K[\d.]+(?=/)' | awk '{print int($1+0.5)}')"
4 |
5 | echo "$res"
6 |
--------------------------------------------------------------------------------
/config/eww/bin/pulse_info:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | inprog=$(ps -ef | rg change_volume | rg -v rg | wc -l)
4 | if [[ "$inprog" -gt 2 ]]; then
5 | exit 1
6 | fi
7 |
8 | get_id () {
9 | id=$(pulsemixer --list-"$1" \
10 | | grep "Default" \
11 | | gawk "{print \$1}" FPAT="[0-9]+")
12 | echo "$id"
13 | }
14 |
15 | get_name () {
16 | device_name=$(pulsemixer --list-"$1" \
17 | | grep "Default" \
18 | | grep -oP "Name:\s+\K.[A-Za-z0-9-]+"
19 | )
20 |
21 | if [[ $device_name == "cullyn" ]]; then
22 | device_name="pixel buds"
23 | fi
24 |
25 | echo "$device_name"
26 | }
27 |
28 | get_volume () {
29 | id=$(get_id "$1")
30 | volume=$(pulsemixer --get-volume --id "$1-$id" \
31 | | gawk "{print \$1}" FPAT="[0-9]+")
32 | echo "$volume"
33 | }
34 |
35 | set_default () {
36 | sink_val=69
37 | source_val=150
38 | source_id="$(get_id "source")"
39 | sink_id="$(get_id "sink")"
40 |
41 | if [[ "$1" == "sink" ]] || [[ "$1" == "both" ]]; then
42 | pulsemixer --id "sink-$sink_id" --set-volume "$sink_val"
43 | echo "$sink_val" >> "/tmp/eww/sink"
44 | fi
45 |
46 | if [[ "$1" == "source" ]] || [[ "$1" == "both" ]]; then
47 | pulsemixer --id "source-$source_id" --set-volume "$source_val"
48 | echo "$source_val - 20" | bc >> "/tmp/eww/source"
49 | fi
50 | exit 0
51 | }
52 |
53 | mute () {
54 | id=$(get_id "$1")
55 | pulsemixer --id "$1-$id" --set-volume 0
56 | echo "0" >> "/tmp/eww/$1"
57 | }
58 |
59 | change_volume () {
60 | incremment="10"
61 | sink_offset="50"
62 | current_volume=$(get_volume "$1")
63 |
64 | direction="+"
65 | if [[ "$2" == "down" ]]; then
66 | direction="-"
67 | fi
68 |
69 | id="$(get_id "$1")"
70 |
71 | max="100"
72 |
73 | if [[ "$1" == "source" ]]; then
74 | max="150"
75 | fi
76 |
77 | if [[ "$1" == "source" && current_volume -le $sink_offset ]]; then
78 | pulsemixer --id "$1-$id" --set-volume "20"
79 | current_volume=$sink_offset
80 | fi
81 |
82 | if [[ current_volume -ge $max ]] && [[ $direction == "+" ]]; then
83 | pulsemixer --id "$1-$id" --set-volume "$max"
84 | else
85 | pulsemixer --id "$1-$id" --change-volume "$direction$incremment"
86 | fi
87 |
88 | current_volume=$(get_volume "$1")
89 |
90 | if [[ "$1" == "source" && current_volume -le $sink_offset ]]; then
91 | pulsemixer --id "$1-$id" --set-volume "0"
92 | fi
93 |
94 | if [[ "$1" == "source" ]]; then
95 | ((current_volume-=sink_offset))
96 | fi
97 |
98 | echo "$current_volume" >> "/tmp/eww/$1"
99 | }
100 |
101 | "$@"
102 |
--------------------------------------------------------------------------------
/config/eww/bin/workspaces:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | handle() {
4 | if [[ "$1" == "workspace" ]]; then
5 | echo "$2" >> "/tmp/eww/workspace"
6 | fi
7 | }
8 |
9 |
10 | occupied () {
11 | mapfile -t occupied_ws < <( hyprctl workspaces | rg -oP "(?<=ID\s)\d" )
12 | echo "${occupied_ws[@]}" >> "/tmp/eww/occupied"
13 | }
14 |
15 |
16 | if [[ -n "$1" ]]; then
17 | "$@"
18 | else
19 | socat - UNIX-CONNECT:/"$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE"/.socket2.sock \
20 | | while read -r line; do
21 | line=${line/>>/ }
22 | read -ra hyprland_event <<< "$line"
23 | handle "${hyprland_event[@]}"
24 | occupied
25 | done
26 | fi
27 |
--------------------------------------------------------------------------------
/config/fontconfig/fonts.conf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | sans-serif
6 |
7 | Albert Sans
8 | Symbols Nerd Font
9 | Noto Color Emoji
10 |
11 |
12 |
13 | serif
14 |
15 | Lora
16 | Symbols Nerd Font
17 | Noto Color Emoji
18 |
19 |
20 |
21 | monospace
22 |
23 | Fira Code
24 | Symbols Nerd Font
25 | Noto Color Emoji
26 |
27 |
28 |
29 | display
30 |
31 | Archivo
32 | Symbols Nerd Font
33 | Noto Color Emoji
34 |
35 |
36 |
37 | handwritten
38 |
39 | Architects Daughter
40 | Symbols Nerd Font
41 | Noto Color Emoji
42 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/config/git/config:
--------------------------------------------------------------------------------
1 | [user]
2 | name = cullyn
3 | email = cullyn@nosvagor.com
4 | signingkey = /home/cullyn/.ssh/id_ed25519.pub
5 | [core]
6 | editor = nvim
7 | [gpg]
8 | format = ssh
9 | [commit]
10 | gpgsign = true
11 | [pull]
12 | rebase = true
13 | [init]
14 | defaultBranch = master
15 | [url "git@git.linecode.net:"]
16 | insteadOf = https://git.linecode.net/
17 |
--------------------------------------------------------------------------------
/config/glava/bars:
--------------------------------------------------------------------------------
1 | /etc/xdg/glava//bars
--------------------------------------------------------------------------------
/config/glava/bars.glsl:
--------------------------------------------------------------------------------
1 | /* Center line thickness (pixels) */
2 | #define C_LINE 1
3 | /* Width (in pixels) of each bar */
4 | #define BAR_WIDTH 4
5 | /* Width (in pixels) of each bar gap */
6 | #define BAR_GAP 2
7 | /* Outline color */
8 | #define BAR_OUTLINE #262626
9 | /* Outline width (in pixels, set to 0 to disable outline drawing) */
10 | #define BAR_OUTLINE_WIDTH 0
11 | /* Amplify magnitude of the results each bar displays */
12 | #define AMPLIFY 256
13 | /* Whether the current settings use the alpha channel;
14 | enabling this is required for alpha to function
15 | correctly on X11 with `"native"` transparency. */
16 | #define USE_ALPHA 0
17 | /* How strong the gradient changes */
18 | #define GRADIENT_POWER 69
19 | /* Bar color changes with height */
20 | #define GRADIENT (d / GRADIENT_POWER + 0.69)
21 | /* Bar color */
22 | #define COLOR (#6380ec * GRADIENT)
23 | /* Direction that the bars are facing, 0 for inward, 1 for outward */
24 | #define DIRECTION 0
25 | /* Whether to switch left/right audio buffers */
26 | #define INVERT 0
27 | /* Whether to flip the output vertically */
28 | #define FLIP 0
29 | /* Whether to mirror output along `Y = X`, causing output to render on the left side of the window */
30 | /* Use with `FLIP 1` to render on the right side */
31 | #define MIRROR_YX 0
32 |
--------------------------------------------------------------------------------
/config/glava/radial:
--------------------------------------------------------------------------------
1 | /etc/xdg/glava//radial
--------------------------------------------------------------------------------
/config/glava/radial.glsl:
--------------------------------------------------------------------------------
1 | /* center radius (pixels) */
2 | #define C_RADIUS 100
3 | /* center line thickness (pixels) */
4 | #define C_LINE 2
5 | /* outline color */
6 | #define OUTLINE #6380ec
7 | /* number of bars (use even values for best results) */
8 | #define NBARS 180
9 | /* width (in pixels) of each bar*/
10 | #define BAR_WIDTH 3.5
11 | /* outline color */
12 | #define BAR_OUTLINE OUTLINE
13 | /* outline width (in pixels, set to 0 to disable outline drawing) */
14 | #define BAR_OUTLINE_WIDTH 0
15 | /* Amplify magnitude of the results each bar displays */
16 | #define AMPLIFY 512
17 | /* Bar color */
18 | #define COLOR (#6380ec * ((d / 180) + 0.69))
19 | /* Angle (in radians) for how much to rotate the visualizer */
20 | #define ROTATE (PI / 2)
21 | /* Whether to switch left/right audio buffers */
22 | #define INVERT 0
23 | /* Aliasing factors. Higher values mean more defined and jagged lines.
24 | Note: aliasing does not have a notable impact on performance, but requires
25 | `xroot` transparency to be enabled since it relies on alpha blending with
26 | the background. */
27 | #define BAR_ALIAS_FACTOR 1.2
28 | #define C_ALIAS_FACTOR 1.8
29 | /* Offset (Y) of the visualization */
30 | #define CENTER_OFFSET_Y 0
31 | /* Offset (X) of the visualization */
32 | #define CENTER_OFFSET_X 0
33 |
34 | /* Gravity step, override from `smooth_parameters.glsl` */
35 | #request setgravitystep 11.0
36 |
37 | /* Smoothing factor, override from `smooth_parameters.glsl` */
38 | #request setsmoothfactor 0.027
39 |
--------------------------------------------------------------------------------
/config/glava/smooth_parameters.glsl:
--------------------------------------------------------------------------------
1 | /* Settings for smoothing functions and transformations commonly
2 | used to display FFT output.
3 |
4 | IMPORTANT: THESE VALUES CAN BE OVERRIDDEN IN MODULE CONFIG
5 | FILES, IF CHANGING VALUES HERE DOES NOT WORK, CHECK
6 | TO MAKE SURE THEY ARE NOT BEING SET ELSEWHERE.
7 | */
8 |
9 | /* The type of formula to use for weighting values when smoothing.
10 | Possible values:
11 |
12 | - circular heavily rounded points
13 | - sinusoidal rounded at both low and high weighted values
14 | like a sine wave
15 | - linear not rounded at all; linear distance
16 | */
17 | #define ROUND_FORMULA sinusoidal
18 |
19 | /* The sampling mode for processing raw FFT input:
20 |
21 | - average averages all the inputs in the sample range for
22 | a given point. Produces smooth output, but peaks
23 | are not well represented
24 | - maximum obtains the best value from the closest peak in
25 | the sample range. Very accurate peaks, but
26 | output is jagged and sporadic.
27 | - hybrid uses the results from both `average` and `maximum`
28 | with the weight provided in `SAMPLE_HYBRID_WEIGHT` */
29 | #define SAMPLE_MODE average
30 | /* Weight should be provided in the range (0, 1). Higher values favour
31 | averaged results. `hybrid` mode only. */
32 | #define SAMPLE_HYBRID_WEIGHT 0.65
33 |
34 | /* Factor used to scale frequencies. Lower values allows lower
35 | frequencies to occupy more space. */
36 | #define SAMPLE_SCALE 8
37 |
38 | /* The frequency range to sample. 1.0 would be the entire FFT output,
39 | and lower values reduce the displayed frequencies in a log-like
40 | scale. */
41 | #define SAMPLE_RANGE 0.9
42 |
43 | /* Factor for how to scale higher frequencies. Used in a linear equation
44 | which is multiplied by the result of the fft transformation. */
45 | #request setfftscale 10.2
46 |
47 | /* Cutoff for the bass end of the audio data when scaling frequencies.
48 | Higher values cause more of the bass frequencies to be skipped when
49 | scaling. */
50 | #request setfftcutoff 0.3
51 |
52 | /* How many frames to queue and run through the average function.
53 | Increasing this value will create latency between the audio and the
54 | animation, but will make for much smoother results. */
55 | #request setavgframes 6
56 |
57 | /* Whether to window frames ran through the average function (new & old
58 | frames are weighted less). This massively helps smoothing out
59 | spontaneous values in the animation. */
60 | #request setavgwindow true
61 |
62 | /* Gravity step, higher values means faster drops. The step is applied
63 | in a rate independent method like so:
64 |
65 | val -= (gravitystep) * (seconds per update) */
66 | #request setgravitystep 7
67 |
68 | /* Smoothing factor. Larger values mean more smoothing in the output,
69 | however high values can be expensive to compute. Values are in
70 | normalized width: [0.0, 1.0) */
71 |
72 | #request setsmoothfactor 0.027
73 |
74 | /* Whether to use a separate pass for audio data while smoothing. On
75 | most hardware, this will improve performance, but involves doing a
76 | separate render step for each audio texture and will add some driver
77 | (CPU) overhead. */
78 | #request setsmoothpass true
79 |
--------------------------------------------------------------------------------
/config/glava/util:
--------------------------------------------------------------------------------
1 | /etc/xdg/glava//util
--------------------------------------------------------------------------------
/config/gtk-3.0/bookmarks:
--------------------------------------------------------------------------------
1 | file:///home/cullyn/LeadPier
2 | file:///home/cullyn/acr
3 | file:///home/cullyn/cullyn.dev
4 | file:///home/cullyn/nosvagor.com
5 | file:///home/cullyn/wangare
6 | file:///home/cullyn/vagari
7 | file:///home/cullyn/media/screenshots
8 | file:///home/cullyn/media/recordings
9 | file:///home/cullyn/dotfiles
10 | file:///home/cullyn/dotfiles/resources
11 | file:///home/cullyn/LeadPier/services/voice
12 | file:///home/cullyn/LeadPier/staging-backend
13 |
--------------------------------------------------------------------------------
/config/gtk-3.0/settings.ini:
--------------------------------------------------------------------------------
1 | [Settings]
2 | gtk-theme-name=catppuccin-macchiato-peach-standard+default
3 | gtk-icon-theme-name=Nordzy-dark
4 | gtk-font-name=Albert Sans 12
5 | gtk-cursor-theme-name=Nordzy-cursors-white
6 |
--------------------------------------------------------------------------------
/config/gtk-4.0/bookmarks:
--------------------------------------------------------------------------------
1 | /home/cullyn/dotfiles/config/gtk-3.0/bookmarks
--------------------------------------------------------------------------------
/config/gtk-4.0/settings.ini:
--------------------------------------------------------------------------------
1 | /home/cullyn/dotfiles/config/gtk-3.0/settings.ini
--------------------------------------------------------------------------------
/config/guvcview2/video0:
--------------------------------------------------------------------------------
1 | #Guvcview 2.2.1 config file
2 |
3 | #video input width
4 | width=1920
5 | #video input height
6 | height=1080
7 | #video input format
8 | v4l2_format=1196444237
9 | #video input capture method
10 | capture=mmap
11 | #audio api
12 | audio=none
13 | #gui api
14 | gui=none
15 | #render api
16 | render=sdl
17 | #render window width
18 | render_width=800
19 | #render window height
20 | render_height=600
21 | #video codec [raw mjpg mpeg flv1 wmv1 mpg2 mp43 dx50 h264 vp80 theo]
22 | video_codec=dx50
23 | #audio codec [pcm mp2 mp3 aac ac3 vorb]
24 | audio_codec=mp2
25 | #profile name
26 | profile_name=default.gpfl
27 | #profile path
28 | profile_path=/home/cullyn
29 | #video name
30 | video_name=my_video.mkv
31 | #video path
32 | video_path=/home/cullyn/media/recordings
33 | #video sufix flag
34 | video_sufix=1
35 | #photo name
36 | photo_name=my_p.jpg
37 | #photo path
38 | photo_path=/home/cullyn
39 | #photo sufix flag
40 | photo_sufix=1
41 | #fps numerator (def. 1)
42 | fps_num=1
43 | #fps denominator (def. 25)
44 | fps_denom=30
45 | #audio device index (-1 - api default)
46 | audio_device=0
47 | #video fx mask
48 | video_fx=0x1
49 | #fx binary filter treshold (0x0 to 0xff): default=0x7f (50%)
50 | fx_bin_treshold=0x7f
51 | #audio fx mask
52 | audio_fx=0x0
53 | #OSD mask
54 | osd_mask=0x0
55 | crosshair_color=0xff00
56 | crosshair_size=24
57 |
--------------------------------------------------------------------------------
/config/inkscape/.gitignore:
--------------------------------------------------------------------------------
1 | cphistory.xml
2 | dialogs-state-ex.ini
3 | extension-errors.log
4 | pages.csv
5 |
--------------------------------------------------------------------------------
/config/inkscape/fontcollections/recently_used_fonts.log:
--------------------------------------------------------------------------------
1 | Archivo
2 | Architects Daughter
3 | sans-serif
4 |
--------------------------------------------------------------------------------
/config/inkscape/palettes/vagari.gpl:
--------------------------------------------------------------------------------
1 | GIMP Palette
2 | Name: --- vagari ---
3 | #
4 | 44 44 46 #2C2C2E - visual divider hack
5 | 215 219 238 #d7dbee - br1
6 | 197 201 226 #c5c9e2 - br
7 | 182 187 216 #b6bbd8 - fg
8 | 167 171 206 #a7abce - fg1
9 | 140 146 186 #8c92ba - fg2
10 | 44 44 46 #2C2C2E - visual divider hack
11 | 34 37 54 #222536 - bg
12 | 024 026 042 #181a2a - bg1
13 | 014 016 027 #0e101b - bg2
14 | 008 008 013 #08080d - bg3
15 | 44 44 46 #2C2C2E - visual divider hack
16 | 026 026 036 #1a1a24 - dr1
17 | 016 016 020 #101014 - dr1
18 | 009 009 011 #09090b - dr2
19 | 44 44 46 #2C2C2E - visual divider hack
20 | 255 153 177 #ff99b1 - red1
21 | 237 095 111 #ed5f6f - red
22 | 208 037 058 #d0253a - red0
23 | 44 44 46 #2C2C2E - visual divider hack
24 | 255 158 122 #ff9e7a - orn1
25 | 236 144 085 #ec9055 - ornange
26 | 213 092 030 #d55c1e - orn0
27 | 44 44 46 #2C2C2E - visual divider hack
28 | 255 241 158 #fff19e - yel1
29 | 236 196 093 #ecc45d - yellow
30 | 215 156 004 #d79c04 - yel0
31 | 44 44 46 #2C2C2E - visual divider hack
32 | 183 230 163 #b7e6a3 - grn1
33 | 134 185 111 #86b96f - green
34 | 094 146 073 #5e9249 - grn0
35 | 44 44 46 #2C2C2E - visual divider hack
36 | 158 234 171 #9eeaab - ivy1
37 | 101 190 117 #65be75 - ivy
38 | 064 150 078 #40964e - ivy0
39 | 44 44 46 #2C2C2E - visual divider hack
40 | 168 255 249 #a8fff9 - cyn1
41 | 074 222 205 #4adecd - cyan
42 | 002 187 165 #02bba5 - cyn0
43 | 44 44 46 #2C2C2E - visual divider hack
44 | 158 219 255 #9edbff - azr1
45 | 089 181 229 #59b5e5 - azure
46 | 042 135 199 #2a87c7 - azr0
47 | 44 44 46 #2C2C2E - visual divider hack
48 | 162 180 250 #a2b4fa - blu1
49 | 108 136 244 #6c88f4 - blue
50 | 061 096 230 #3d60e6 - blu0
51 | 44 44 46 #2C2C2E - visual divider hack
52 | 194 170 252 #c2aafc - prp1
53 | 157 122 240 #9d7af0 - purple
54 | 143 064 227 #8f40e3 - puprle0
55 | 44 44 46 #2C2C2E - visual divider hack
56 | 255 148 212 #ff94d4 - pnk1
57 | 220 096 191 #dc60bf - pink
58 | 183 052 159 #b7349f - pnk0
59 | 44 44 46 #2C2C2E - visual divider hack
60 | 207 149 144 #cf9590 - leu1
61 | 174 097 095 #ae615f - leu
62 | 136 063 065 #883f41 - leu0
63 | 44 44 46 #2C2C2E - visual divider hack
64 | 194 207 144 #c2cf90 -met1
65 | 155 171 087 #9bab57 - met
66 | 112 125 058 #707d3a - met0
67 | 44 44 46 #2C2C2E - visual divider hack
68 | 157 212 194 #9dd4c2 - val1
69 | 092 179 151 #5cb397 - val
70 | 068 130 110 #44826e - val0
71 | 44 44 46 #2C2C2E - visual divider hack
72 | 139 165 203 #8ba5cb - his1
73 | 086 120 172 #5678ac - his
74 | 0062 85 132 #3e5584 - his0
75 | 44 44 46 #2C2C2E - visual divider hack
76 | 194 147 205 #c293cd - trp1
77 | 158 094 176 #9e5eb0 - trp
78 | 117 064 135 #754087 - trp0
79 | 44 44 46 #2C2C2E - visual divider hack
80 | 100 108 160 #646ca0 - slt0
81 | 089 096 145 #596091 - slate
82 | 081 088 133 #515885 - slt1
83 | 076 082 123 #4c527b - slt2
84 | 068 074 111 #444a6f - slt3
85 | 060 065 098 #3c4162 - slt4
86 | 44 44 46 #2C2C2E - visual divider hack
87 | 143 101 087 #8f6557 - rst0
88 | 126 090 078 #7e5a4e - rust
89 | 117 084 072 #755448 - rst1
90 | 108 077 066 #6c4d42 - rst2
91 | 098 070 060 #62463c - rst3
92 | 085 060 052 #553c34 - rst4
93 | 44 44 46 #2C2C2E - visual divider hack
94 | 105 109 134 #696d86 - gry0
95 | 094 097 120 #5e6178 - grey
96 | 088 091 111 #585b6f - gry1
97 | 081 084 103 #515467 - gry2
98 | 072 075 091 #484b5b - gry3
99 | 063 065 080 #3f4150 - gry4
100 | 44 44 46 #2C2C2E - visual divider hack
101 | 129 102 129 #816681 - plm0
102 | 114 090 114 #725a72 - plum
103 | 106 083 106 #6a536a - plm1
104 | 097 076 097 #614c61 - plm2
105 | 089 070 089 #594659 - plm3
106 | 077 061 077 #4d3d4d - plm4
107 | 44 44 46 #2C2C2E - visual divider hack
108 | 106 113 106 #6a716a - olv0
109 | 094 100 094 #5e645e - olive
110 | 086 092 086 #565c56 - olv1
111 | 079 084 079 #4f544f - olv2
112 | 072 076 072 #484c48 - olv3
113 | 062 066 062 #3e423e - olv4
114 |
--------------------------------------------------------------------------------
/config/inkscape/templates/default.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
41 |
--------------------------------------------------------------------------------
/config/kitty/sessions/LeadPier.conf:
--------------------------------------------------------------------------------
1 | new_tab ⟜ ⊸
2 | cd ~/LeadPier
3 | # launch zsh -c "trap 'echo \"Air stopped. Press Enter to exit.\"; read' INT; air -c ./.config/air.toml; zsh"
4 | launch zsh
5 | # launch --location=hsplit zsh -c "make tw; zsh"
6 |
7 | new_tab ⟜ ⊸
8 | cd ~/LeadPier
9 | launch zsh
10 |
--------------------------------------------------------------------------------
/config/kitty/sessions/acr.conf:
--------------------------------------------------------------------------------
1 | new_tab ⟜ ⊸
2 | cd ~/acr/
3 | launch zsh -c "trap 'echo \"Air stopped. Press Enter to exit.\"; read' INT; air -c ./config/air.toml; zsh"
4 | launch --location=hsplit zsh -c "make tw; zsh"
5 |
6 | new_tab ⟜ ⊸
7 | cd ~/acr/
8 | launch zsh
9 |
--------------------------------------------------------------------------------
/config/kitty/sessions/cogikyo.conf:
--------------------------------------------------------------------------------
1 | new_tab ⟜ ⊸
2 | cd ~/cogikyo/diatomi
3 | launch zsh -c "nvim; zsh"
4 |
5 | new_tab ⟜ ⊸
6 | cd ~/cogikyo/diatomi
7 | launch zsh
8 |
9 | new_tab ⟜ ⊸
10 | cd ~/cogikyo/diatomi
11 | launch zsh -c "xplr; zsh"
12 |
--------------------------------------------------------------------------------
/config/kitty/sessions/cullyn.dev.conf:
--------------------------------------------------------------------------------
1 | new_tab ⟜ ⊸
2 | cd ~/cullyn.dev/
3 | launch zsh -c "source ~/.zshrc && nvim; zsh"
4 |
5 | new_tab ⟜ ⊸
6 | cd ~/cullyn.dev/
7 | launch zsh
8 |
9 | new_tab ⟜ ⊸
10 | cd ~/cullyn.dev/
11 | launch zsh -c "source ~/.zshrc && xplr; zsh"
12 |
13 | new_tab ⟜ ⊸
14 | cd ~/cullyn.dev/
15 | launch zsh -c "trap 'echo \"Air stopped. Press Enter to exit.\"; read' INT; air -c ./config/air.toml; zsh"
16 |
--------------------------------------------------------------------------------
/config/kitty/sessions/dabella.conf:
--------------------------------------------------------------------------------
1 | new_tab ⟜ ⊸
2 | cd ~/dabella/
3 | launch zsh -c "nvim; zsh"
4 |
5 | new_tab ⟜ ⊸
6 | cd ~/dabella/
7 | launch zsh -c "nvim config.ini; zsh"
8 |
9 | new_tab ⟜ ⊸
10 | cd ~/dabella/archive/
11 | launch zsh -c "xplr; zsh"
12 |
--------------------------------------------------------------------------------
/config/kitty/sessions/dotfiles.conf:
--------------------------------------------------------------------------------
1 | new_tab ⟜ ⊸
2 | cd ~/dotfiles/
3 | launch zsh -c "nvim; zsh"
4 |
5 | new_tab ⟜ ⊸
6 | cd ~/dotfiles/
7 | launch zsh
8 |
9 | new_tab ⟜ ⊸
10 | cd ~/dotfiles/
11 | launch zsh -c "xplr; zsh"
12 |
--------------------------------------------------------------------------------
/config/kitty/sessions/eww.conf:
--------------------------------------------------------------------------------
1 | new_tab ⟜ ⊸
2 | cd ~/dotfiles/config/eww/
3 | launch zsh -c "nvim; zsh"
4 |
5 | new_tab ⟜ ⊸
6 | cd ~/dotfiles/config/eww/
7 | launch zsh
8 |
9 | new_tab ⟜ ⊸
10 | cd ~/dotfiles/config/eww/
11 | launch zsh -c "xplr; zsh"
12 |
--------------------------------------------------------------------------------
/config/kitty/sessions/firefox.conf:
--------------------------------------------------------------------------------
1 | new_tab ⟜ ⊸
2 | cd ~/vagari.firefox/
3 | launch zsh -c "nvim; zsh"
4 |
5 | new_tab ⟜ ⊸
6 | cd ~/vagari.firefox/
7 | launch zsh
8 |
9 | new_tab ⟜ ⊸
10 | cd ~/vagari.firefox/
11 | launch zsh -c "xplr; zsh"
12 |
--------------------------------------------------------------------------------
/config/kitty/sessions/home.conf:
--------------------------------------------------------------------------------
1 | new_tab ⟜ ⊸
2 | cd ~
3 | launch zsh -c "nvim; zsh"
4 |
5 | new_tab ⟜ ⊸
6 | cd ~
7 | launch zsh
8 |
9 | new_tab ⟜ ⊸
10 | cd ~
11 | launch zsh -c "xplr; zsh"
12 |
--------------------------------------------------------------------------------
/config/kitty/sessions/nectar.conf:
--------------------------------------------------------------------------------
1 | new_tab ⟜ ⊸
2 | cd ~/nectar/
3 | launch zsh -c "nvim; zsh"
4 |
5 | new_tab ⟜ ⊸
6 | cd ~/nectar/
7 | launch zsh -c "nvim; zsh"
8 |
9 | new_tab ⟜ ⊸
10 | cd ~/nectar/
11 | launch zsh -c "xplr; zsh"
12 |
--------------------------------------------------------------------------------
/config/kitty/sessions/nosvagor.com.conf:
--------------------------------------------------------------------------------
1 | new_tab ⟜ ⊸
2 | cd ~/nosvagor.com/
3 | launch zsh -c "trap 'echo \"Air stopped. Press Enter to exit.\"; read' INT; air -c ./.config/air.toml; zsh"
4 | launch --location=hsplit zsh -c "make tw; zsh"
5 |
6 | new_tab ⟜ ⊸
7 | cd ~/nosvagor.com/
8 | launch zsh
9 |
--------------------------------------------------------------------------------
/config/kitty/sessions/nvim.conf:
--------------------------------------------------------------------------------
1 | new_tab ⟜ ⊸
2 | cd ~
3 | launch zsh -c "nvim; zsh"
4 |
5 | new_tab ⟜ ⊸
6 | cd ~
7 | launch zsh
8 |
9 | new_tab ⟜ ⊸
10 | cd ~
11 | launch zsh -c "xplr; zsh"
12 |
--------------------------------------------------------------------------------
/config/kitty/sessions/pipes.conf:
--------------------------------------------------------------------------------
1 | new_tab ⟜ ⊸
2 | launch zsh -c 'pipes-rs; zsh'
3 |
--------------------------------------------------------------------------------
/config/kitty/sessions/rust-run.conf:
--------------------------------------------------------------------------------
1 | new_tab ⟜ ⊸
2 | cd ~/rust/kata/
3 | launch zsh -c "cargo watch -x 'test kyu7'"
4 |
--------------------------------------------------------------------------------
/config/kitty/sessions/rust.conf:
--------------------------------------------------------------------------------
1 | new_tab ⟜ ⊸
2 | cd ~/rust/kata/src/kyu7
3 | launch zsh -c "nvim; zsh"
4 |
5 | new_tab ⟜ ⊸
6 | cd ~/rust/kata/src
7 | launch zsh
8 |
9 | new_tab ⟜ ⊸
10 | cd ~/rust/kata/src
11 | launch zsh -c "xplr; zsh"
12 |
--------------------------------------------------------------------------------
/config/kitty/sessions/sapais.conf:
--------------------------------------------------------------------------------
1 | new_tab ⟜ ⊸
2 | cd ~/saipias/
3 | launch zsh -c "source ~/.zshrc && nvim; zsh"
4 |
5 | new_tab ⟜ ⊸
6 | cd ~/saipias/
7 | launch zsh
8 |
9 | new_tab ⟜ ⊸
10 | cd ~/saipias/
11 | launch zsh -c "source ~/.zshrc && xplr; zsh"
12 |
13 | new_tab ⟜ ⊸
14 | cd ~/saipias/
15 | launch zsh -c "trap 'echo \"Air stopped. Press Enter to exit.\"; read' INT; air -c ./config/air.toml; zsh"
16 |
--------------------------------------------------------------------------------
/config/kitty/sessions/sonder.conf:
--------------------------------------------------------------------------------
1 | new_tab ⟜ ⊸
2 | cd ~/sonder/
3 | launch zsh -c "nvim; zsh"
4 |
5 | new_tab ⟜ ⊸
6 | cd ~/sonder/
7 | launch zsh
8 |
9 | new_tab ⟜ ⊸
10 | cd ~/sonder/
11 | launch zsh -c "xplr; zsh"
12 |
--------------------------------------------------------------------------------
/config/kitty/sessions/term.conf:
--------------------------------------------------------------------------------
1 | new_tab ⟜ ⊸
2 | # cd ~/nosvagor.com/
3 | # cd ~/acr/
4 | launch zsh
5 |
--------------------------------------------------------------------------------
/config/kitty/sessions/vagari.conf:
--------------------------------------------------------------------------------
1 | new_tab ⟜ ⊸
2 | cd ~/vagari/
3 | launch zsh -c "nvim; zsh"
4 |
5 | new_tab ⟜ ⊸
6 | cd ~/vagari.nvim/
7 | launch zsh -c "nvim; zsh"
8 |
9 | new_tab ⟜ ⊸
10 | cd ~/vagari/
11 | launch zsh -c "xplr; zsh"
12 |
--------------------------------------------------------------------------------
/config/kitty/sessions/voice.conf:
--------------------------------------------------------------------------------
1 | new_tab ⟜ ⊸
2 | cd ~/voice
3 | launch zsh -c "nvim; zsh"
4 |
5 | new_tab ⟜ ⊸
6 | cd ~/voice
7 | launch zsh
8 |
9 | new_tab ⟜ ⊸
10 | cd ~/voice
11 | launch zsh -c "xplr; zsh"
12 |
--------------------------------------------------------------------------------
/config/lazygit/.gitignore:
--------------------------------------------------------------------------------
1 | state.yml
2 |
--------------------------------------------------------------------------------
/config/manim/manim.cfg:
--------------------------------------------------------------------------------
1 | [CLI]
2 | background_color = #1e2133
3 | output_file = manim
4 | quality = m
5 |
--------------------------------------------------------------------------------
/config/mimeapps.list:
--------------------------------------------------------------------------------
1 | [Default Applications]
2 | x-scheme-handler/http=firefoxdeveloperedition.desktop
3 | x-scheme-handler/https=firefoxdeveloperedition.desktop
4 | x-scheme-handler/chrome=firefoxdeveloperedition.desktop
5 | x-scheme-handler/ftp=firefoxdeveloperedition.desktop;
6 | application/x-extension-htm=firefoxdeveloperedition.desktop
7 | application/x-extension-html=firefoxdeveloperedition.desktop
8 | application/x-extension-shtml=firefoxdeveloperedition.desktop
9 | application/xhtml+xml=firefoxdeveloperedition.desktop
10 | application/x-extension-xhtml=firefoxdeveloperedition.desktop
11 | application/x-extension-xht=firefoxdeveloperedition.desktop
12 | application/pdf=org.pwmt.zathura.desktop;
13 | application/json=nvim.desktop
14 | video/x-matroska=mpv.desktop;
15 | video/mp4=mpv.desktop;
16 | image/gif=gifview.desktop
17 | image/png=imv.desktop;
18 | image/svg+xml=imv.desktop;
19 | image/svg=imv.desktop;
20 | image/jpeg=imv.desktop;
21 | text/plain=nvim.desktop
22 | text/html=nvim.desktop;
23 | text/xml=nvim.desktop;
24 |
--------------------------------------------------------------------------------
/config/mpv/mpv.conf:
--------------------------------------------------------------------------------
1 | # loop-playlist=inf
2 | # loop-file=inf
3 |
--------------------------------------------------------------------------------
/config/nvim/.gitignore:
--------------------------------------------------------------------------------
1 | lazy-lock.json
2 |
--------------------------------------------------------------------------------
/config/nvim/lua/user/alpha.lua:
--------------------------------------------------------------------------------
1 | -- ============================================================================
2 | -- 🧰 Setup {{{
3 | local ok, alpha = pcall(require, "alpha")
4 | if not ok then
5 | vim.api.nvim_echo({
6 | {
7 | "Error: alpha plugin not found... skipping relevant setup()",
8 | "Error",
9 | },
10 | }, true, {})
11 | return
12 | end
13 | -- }}}
14 | -- ============================================================================
15 |
16 | local dashboard = require("alpha.themes.dashboard")
17 | local header = {
18 | type = "text",
19 | val = {
20 | [[ __ ]],
21 | [[ ___ ___ ___ __ __ /\_\ ___ ___ ]],
22 | [[ / _ `\ / __`\ / __`\/\ \/\ \\/\ \ / __` __`\ ]],
23 | [[ /\ \/\ \/\ __//\ \_\ \ \ \_/ |\ \ \/\ \/\ \/\ \ ]],
24 | [[ \ \_\ \_\ \____\ \____/\ \___/ \ \_\ \_\ \_\ \_\ ]],
25 | [[ \/_/\/_/\/____/\/___/ \/__/ \/_/\/_/\/_/\/_/ ]],
26 | [[ ]],
27 | [[ _.--'"`'--._ _.--'"`'--._ _.--'"`'--._ ]],
28 | [[ :`.'|`|"':-. '-:`.'|`|"':-. '-:`.'|`|"':-. '- ]],
29 | [[ '. | | | |'. '. | | | |'. '. | | | |'. ]],
30 | [[ . '.| | | | '. '.| | | | '. '.| | | | '. ]],
31 | [[ `. `.:_ | :_.' '. `.:_ | :_.' '. `.:_ | :_.' ]],
32 | [[ `-..,..-' `-..,..-' `-..,..-' ]],
33 | },
34 | opts = {
35 | hl = "@function.builtin",
36 | shrink_margin = false,
37 | position = "center",
38 | },
39 | }
40 |
41 | local buttons = {
42 | type = "group",
43 | val = {
44 | {
45 | type = "text",
46 | val = "Quick Actions",
47 | opts = {
48 | hl = "Type",
49 | position = "center",
50 | },
51 | },
52 | { type = "padding", val = 2 },
53 | dashboard.button("o", " Recent Files", ":Telescope oldfiles "),
54 | dashboard.button("t", " Find file", ":Telescope find_files "),
55 | dashboard.button("s", " Live grep", ":Telescope live_grep "),
56 | { type = "padding", val = 2 },
57 | dashboard.button("q", " Quit", ":qa"),
58 | },
59 | }
60 |
61 | alpha.setup({
62 | layout = {
63 | { type = "padding", val = 2 },
64 | header,
65 | { type = "padding", val = 3 },
66 | buttons,
67 | },
68 | opts = {
69 | margin = 5,
70 | },
71 | })
72 |
--------------------------------------------------------------------------------
/config/nvim/lua/user/autocmds.lua:
--------------------------------------------------------------------------------
1 | local function global_autocmd(event, command)
2 | vim.api.nvim_create_autocmd(event, {
3 | group = vim.api.nvim_create_augroup(event, { clear = true }),
4 | command = command,
5 | pattern = "*",
6 | })
7 | end
8 |
9 | local function scoped_autocmd(event, group, pattern, command)
10 | vim.api.nvim_create_autocmd(event, {
11 | group = vim.api.nvim_create_augroup(group, { clear = true }),
12 | command = command,
13 | pattern = pattern,
14 | })
15 | end
16 |
17 | -- 'formatoptions' keeps getting overwritten by other plugins (I think)
18 | global_autocmd("InsertEnter", "silent! set formatoptions=tcqnpj1")
19 |
20 | -- Why is highlighting text yanking not an default feature?
21 | global_autocmd("TextYankPost", "silent! lua vim.highlight.on_yank({ timeout = 69})")
22 |
23 | -- Remove color column
24 | scoped_autocmd("FileType", "NoColorColumn", { "help", "trouble", "Avante", "AvanteInput" }, "silent! setlocal cc=")
25 |
26 | scoped_autocmd("BufWritePost", "EwwRestart", "eww.yuck,eww.scss", ":! eww-open & disown && exit")
27 |
28 | scoped_autocmd("FileType", "Rust", "rust", "silent! set textwidth=80")
29 |
30 | scoped_autocmd(
31 | "BufWritePost",
32 | "DunstRestart",
33 | "dunstrc",
34 | ":! pkill dunst && dunst & notify-send -u low dunst restarted"
35 | )
36 |
--------------------------------------------------------------------------------
/config/nvim/lua/user/autopairs.lua:
--------------------------------------------------------------------------------
1 | -- ============================================================================
2 | -- 🧰 Setup {{{
3 | local ok, npairs = pcall(require, "nvim-autopairs")
4 | if not ok then
5 | vim.api.nvim_echo({
6 | {
7 | "Error: nvim-autopairs plugin not found... skipping relevant setup()",
8 | "Error",
9 | },
10 | }, true, {})
11 | return
12 | end
13 | -- }}}
14 | -- ============================================================================
15 |
16 | npairs.setup({
17 | enable_check_bracket_line = false,
18 | ignored_next_char = "[%w%.]", -- will ignore alphanumeric and `.` symbol
19 | fast_wrap = {
20 | map = "",
21 | chars = { "{", "[", "(", '"', "'", "`", "<" },
22 | pattern = string.gsub([[ [%'%"%)%>%]%)%}%,] ]], "%s+", ""),
23 | offset = -1,
24 | end_key = "$",
25 | keys = "asetniol",
26 | check_comma = true,
27 | highlight = "Search",
28 | highlight_grey = "Comment",
29 | },
30 | check_ts = true,
31 | ts_config = {
32 | lua = { "string" }, -- it will not add a pair on that treesitter node
33 | },
34 | })
35 |
36 | -- https://github.com/windwp/nvim-autopairs/wiki/Custom-rules
37 |
38 | local cond = require("nvim-autopairs.conds")
39 | local ts_conds = require("nvim-autopairs.ts-conds")
40 | local Rule = require("nvim-autopairs.rule")
41 |
42 | npairs.add_rules({
43 | Rule("%", "%", "lua"):with_pair(ts_conds.is_ts_node({ "string", "comment" })),
44 | Rule("$", "$", "lua"):with_pair(ts_conds.is_not_ts_node({ "function" })),
45 | })
46 |
47 | local brackets = { { "(", ")" }, { "[", "]" }, { "{", "}" } }
48 | npairs.add_rules({
49 | Rule(" ", " ")
50 | :with_pair(function(opts)
51 | local pair = opts.line:sub(opts.col - 1, opts.col)
52 | return vim.tbl_contains({
53 | brackets[1][1] .. brackets[1][2],
54 | brackets[2][1] .. brackets[2][2],
55 | brackets[3][1] .. brackets[3][2],
56 | }, pair)
57 | end)
58 | :with_move(cond.none())
59 | :with_cr(cond.none())
60 | :with_del(function(opts)
61 | local col = vim.api.nvim_win_get_cursor(0)[2]
62 | local context = opts.line:sub(col - 1, col + 2)
63 | return vim.tbl_contains({
64 | brackets[1][1] .. " " .. brackets[1][2],
65 | brackets[2][1] .. " " .. brackets[2][2],
66 | brackets[3][1] .. " " .. brackets[3][2],
67 | }, context)
68 | end),
69 | })
70 |
71 | for _, bracket in pairs(brackets) do
72 | Rule("", " " .. bracket[2])
73 | :with_pair(cond.none())
74 | :with_move(function(opts)
75 | return opts.char == bracket[2]
76 | end)
77 | :with_cr(cond.none())
78 | :with_del(cond.none())
79 | :use_key(bracket[2])
80 | end
81 |
82 | for _, punct in pairs({ ",", ";" }) do
83 | npairs.add_rules({
84 | Rule("", punct)
85 | :with_move(function(opts)
86 | return opts.char == punct
87 | end)
88 | :with_pair(function()
89 | return false
90 | end)
91 | :with_del(function()
92 | return false
93 | end)
94 | :with_cr(function()
95 | return false
96 | end)
97 | :use_key(punct),
98 | })
99 | end
100 |
101 | Rule("%(.*%)%s*%=>$", " { }", { "typescript", "typescriptreact", "javascript" }):use_regex(true):set_end_pair_length(2)
102 |
--------------------------------------------------------------------------------
/config/nvim/lua/user/cmp.lua:
--------------------------------------------------------------------------------
1 | -- ============================================================================
2 | -- 🧰 setup {{{
3 | local cmp_ok, cmp = pcall(require, "cmp")
4 | if not cmp_ok then
5 | vim.api.nvim_echo({
6 | {
7 | "Error: cmp plugin not found... skipping relevant setup()",
8 | "Error",
9 | },
10 | }, true, {})
11 | return
12 | end
13 |
14 | local luasnip_ok, luasnip = pcall(require, "luasnip")
15 | if not luasnip_ok then
16 | vim.api.nvim_echo({
17 | {
18 | "Error: cmp uses luasnip, but luasnip is not found, skipping relevant setup()",
19 | "Error",
20 | },
21 | }, true, {})
22 | return
23 | end
24 |
25 | -- local copilot_ok, copilot = pcall(require, "copilot")
26 | -- if not copilot_ok then
27 | -- vim.api.nvim_echo({
28 | -- {
29 | -- "Error: cmp is integrated with copilot, but copilot is not found, skipping relevant setup",
30 | -- "Error",
31 | -- },
32 | -- }, true, {})
33 | -- return
34 | -- end
35 | --
36 | -- local copilot_cmp_ok, copilot_cmp = pcall(require, "copilot_cmp")
37 | -- if not copilot_cmp_ok then
38 | -- vim.api.nvim_echo({
39 | -- {
40 | -- "Error: copilt needs copilt_cmp to work well, but copilot_cmp is not found, skipping relevant setup",
41 | -- "Error",
42 | -- },
43 | -- }, true, {})
44 | -- return
45 | -- end
46 |
47 | -- }}}
48 | -- ============================================================================
49 |
50 | require("luasnip/loaders/from_vscode").lazy_load()
51 |
52 | local kind_icons = {
53 | Text = "⼠",
54 | Method = "⟜",
55 | Function = "➠",
56 | Constructor = "",
57 | Field = "",
58 | Variable = "λ",
59 | Class = "",
60 | Interface = "",
61 | Module = "",
62 | Property = "",
63 | Unit = "",
64 | Value = "",
65 | Enum = "",
66 | Keyword = "",
67 | Snippet = "",
68 | Color = "",
69 | File = "",
70 | Reference = "",
71 | Folder = "",
72 | EnumMember = "",
73 | Constant = "ℎ",
74 | Struct = "",
75 | Event = "",
76 | Operator = "",
77 | TypeParameter = "",
78 | Copilot = "",
79 | }
80 |
81 | cmp.setup({
82 | snippet = {
83 | expand = function(args)
84 | luasnip.lsp_expand(args.body) -- For `luasnip` users.
85 | end,
86 | },
87 | mapping = cmp.mapping.preset.insert({
88 | [""] = cmp.mapping.scroll_docs(-4),
89 | [""] = cmp.mapping.scroll_docs(4),
90 | [""] = cmp.mapping.complete(),
91 | [""] = cmp.mapping.abort(),
92 | -- [""] = cmp.mapping.confirm({
93 | -- behavior = cmp.ConfirmBehavior.Replace,
94 | -- select = true,
95 | -- }),
96 | [""] = cmp.mapping.confirm({
97 | behavior = cmp.ConfirmBehavior.Replace,
98 | select = false,
99 | }),
100 | [""] = cmp.mapping(function(fallback)
101 | if cmp.visible() then
102 | cmp.select_next_item()
103 | elseif luasnip.expandable() then
104 | luasnip.expand()
105 | elseif luasnip.expand_or_jumpable() then
106 | luasnip.expand_or_jump()
107 | else
108 | fallback()
109 | end
110 | end, { "i", "s" }),
111 | [""] = cmp.mapping(function(fallback)
112 | if cmp.visible() then
113 | cmp.select_prev_item()
114 | elseif luasnip.jumpable(-1) then
115 | luasnip.jump(-1)
116 | else
117 | fallback()
118 | end
119 | end, { "i", "s" }),
120 | }),
121 | formatting = {
122 | fields = { "kind", "abbr", "menu" },
123 | format = function(entry, vim_item)
124 | vim_item.kind = string.format("%s ", kind_icons[vim_item.kind])
125 | vim_item.menu = ({
126 | -- copilot = " copilot",
127 | nvim_lua = " nvim_lua",
128 | nvim_lsp = " lsp",
129 | luasnip = " luasnip",
130 | buffer = "⼞buffer",
131 | path = "⨒ path",
132 | emoji = "ﲃ emoji",
133 | nerdfont = " nerdfont",
134 | })[entry.source.name]
135 | return vim_item
136 | end,
137 | },
138 | sources = {
139 | { name = "nvim_lsp", group_index = 2 },
140 | -- { name = "copilot", group_index = 2 },
141 | { name = "path", group_index = 2 },
142 | { name = "nvim_lua", group_index = 2 },
143 | { name = "luasnip", group_index = 2 },
144 | { name = "buffer", group_index = 2 },
145 | { name = "emoji", group_index = 2 },
146 | { name = "nerdfont", group_index = 2 },
147 | },
148 | sorting = {
149 | priority_weight = 2,
150 | comparators = {
151 | -- require("copilot_cmp.comparators").prioritize,
152 |
153 | -- Below is the default comparator list and order for nvim-cmp
154 | cmp.config.compare.offset,
155 | -- cmp.config.compare.scopes, --this is commented in nvim-cmp too
156 | cmp.config.compare.exact,
157 | cmp.config.compare.score,
158 | cmp.config.compare.recently_used,
159 | cmp.config.compare.locality,
160 | cmp.config.compare.kind,
161 | cmp.config.compare.sort_text,
162 | cmp.config.compare.length,
163 | cmp.config.compare.order,
164 | },
165 | },
166 | })
167 |
168 | -- copilot.setup({
169 | -- panel = { enabled = false },
170 | -- suggestion = {
171 | -- enabled = true,
172 | -- auto_trigger = true,
173 | -- debounce = 75,
174 | -- keymap = {
175 | -- accept = "",
176 | -- accept_word = false,
177 | -- accept_line = false,
178 | -- next = "",
179 | -- prev = "",
180 | -- dismiss = "",
181 | -- },
182 | -- },
183 | -- filetypes = {
184 | -- markdown = false,
185 | -- help = false,
186 | -- gitcommit = false,
187 | -- gitrebase = false,
188 | -- hgcommit = false,
189 | -- svn = false,
190 | -- cvs = false,
191 | -- ["."] = false,
192 | -- },
193 | -- copilot_node_command = "node", -- Node.js version must be > 16.x
194 | -- server_opts_overrides = {},
195 | -- })
196 |
197 | -- local cmp_format = require("copilot_cmp.format")
198 | -- copilot_cmp.setup({
199 | -- suggestion = { enabled = true },
200 | -- formatters = {
201 | -- label = cmp_format.format_label_text,
202 | -- insert_text = cmp_format.remove_existing,
203 | -- preview = cmp_format.deindent,
204 | -- },
205 | -- })
206 |
207 | cmp.setup.filetype({ "sql" }, {
208 | sources = {
209 | { name = "vim-dadbod-completion" },
210 | -- { name = "copilot" },
211 | { name = "buffer" },
212 | },
213 | })
214 |
--------------------------------------------------------------------------------
/config/nvim/lua/user/cursor.lua:
--------------------------------------------------------------------------------
1 | -- 🧰 setup {{{
2 | local cusor_ok, cursor = pcall(require, "smoothcursor")
3 | if not cusor_ok then
4 | vim.api.nvim_echo({
5 | {
6 | "Error: cursor plugin not found... skipping relevant setup()",
7 | "Error",
8 | },
9 | }, true, {})
10 | return
11 | end
12 |
13 | local additional_colors_ok, p = pcall(require, "vagari.palette")
14 | if not additional_colors_ok then
15 | vim.api.nvim_echo({
16 | {
17 | "Error: cursor config has impored vagari.nvim that are not found, skipping setup",
18 | "Error",
19 | },
20 | }, true, {})
21 | return
22 | end
23 | -- }}}
24 |
25 | local autocmd = vim.api.nvim_create_autocmd
26 |
27 | autocmd({ "ModeChanged" }, {
28 | callback = function()
29 | local current_mode = vim.fn.mode()
30 | if current_mode == "n" then
31 | vim.api.nvim_set_hl(0, "SmoothCursor", { fg = p.blu_3 })
32 | elseif current_mode == "c" then
33 | vim.api.nvim_set_hl(0, "SmoothCursor", { fg = p.orn_3 })
34 | elseif current_mode == "v" then
35 | vim.api.nvim_set_hl(0, "SmoothCursor", { fg = p.prp_3 })
36 | elseif current_mode == "V" then
37 | vim.api.nvim_set_hl(0, "SmoothCursor", { fg = p.prp_3 })
38 | elseif current_mode == "�" then
39 | vim.api.nvim_set_hl(0, "SmoothCursor", { fg = p.prp_3 })
40 | elseif current_mode == "i" then
41 | vim.api.nvim_set_hl(0, "SmoothCursor", { fg = p.grn_3 })
42 | elseif current_mode == "R" then
43 | vim.api.nvim_set_hl(0, "SmoothCursor", { fg = p.emr_3 })
44 | end
45 | end,
46 | })
47 |
48 | local chars = function()
49 | -- stylua: ignore
50 | return {
51 | 'ア', 'イ', 'ウ', 'エ', 'オ',
52 | 'カ', 'キ', 'ク', 'ケ', 'コ',
53 | 'サ', 'シ', 'ス', 'セ', 'ソ',
54 | 'タ', 'チ', 'ツ', 'テ', 'ト',
55 | 'ナ', 'ニ', 'ヌ', 'ネ', 'ノ',
56 | 'ハ', 'ヒ', 'フ', 'ヘ', 'ホ',
57 | 'マ', 'ミ', 'ム', 'メ', 'モ',
58 | 'ヤ', 'ユ', 'ヨ',
59 | 'ラ', 'リ', 'ル', 'レ', 'ロ',
60 | 'ワ', 'ヲ', 'ン', '-',
61 | 'Γ', 'Δ', 'Λ', 'Ξ', 'Π',
62 | 'Σ', 'Φ', 'Χ', 'Ψ', 'Ω',
63 | 'α', 'β', 'γ', 'δ', 'ε',
64 | 'ζ', 'η', 'θ', 'ι', 'κ',
65 | 'λ', 'μ', 'ν', 'ξ', 'ο',
66 | 'π', 'ρ', 'σ', 'τ', 'υ',
67 | 'φ', 'ψ', 'ω'
68 | }
69 | end
70 |
71 | cursor.setup({
72 | type = "matrix",
73 | cursor = "",
74 | texthl = "SmoothCursor",
75 | linehl = nil,
76 |
77 | fancy = {
78 | enable = false, -- enable fancy mode
79 | head = { cursor = "▷", texthl = "SmoothCursor", linehl = nil }, -- false to disable fancy head
80 | body = {
81 | { cursor = "", texthl = "SmoothCursorRed" },
82 | { cursor = "", texthl = "SmoothCursorOrange" },
83 | { cursor = "●", texthl = "SmoothCursorYellow" },
84 | { cursor = "●", texthl = "SmoothCursorGreen" },
85 | { cursor = "•", texthl = "SmoothCursorAqua" },
86 | { cursor = ".", texthl = "SmoothCursorBlue" },
87 | { cursor = ".", texthl = "SmoothCursorPurple" },
88 | },
89 | tail = { cursor = nil, texthl = "SmoothCursor" }, -- false to disable fancy tail
90 | },
91 |
92 | matrix = {
93 | head = {
94 | cursor = { "λ" },
95 | texthl = { "SmoothCursor" },
96 | linehl = nil,
97 | },
98 | body = {
99 | length = 9,
100 | cursor = chars(),
101 | texthl = { "Comment" },
102 | },
103 | tail = {
104 | cursor = chars(),
105 | texthl = { "SmoothCursor" },
106 | },
107 | unstop = false, -- Determines if the cursor should stop or not (false means it will stop)
108 | },
109 |
110 | autostart = true, -- Automatically start SmoothCursor
111 | always_redraw = true, -- Redraw the screen on each update
112 | flyin_effect = nil, -- Choose "bottom" or "top" for flying effect
113 | speed = 25, -- Max speed is 100 to stick with your current position
114 | intervals = 35, -- Update intervals in milliseconds
115 | priority = 10, -- Set marker priority
116 | timeout = 3000, -- Timeout for animations in milliseconds
117 | threshold = 3, -- Animate only if cursor moves more than this many lines
118 | max_threshold = 1000, -- If you move more than this many lines, don't animate (if `nil`, deactivate check)
119 | disable_float_win = false, -- Disable in floating windows
120 | enabled_filetypes = nil, -- Enable only for specific file types, e.g., { "lua", "vim" }
121 | disabled_filetypes = nil, -- Disable for these file types, ignored if enabled_filetypes is set. e.g., { "TelescopePrompt", "NvimTree" }
122 | -- Show the position of the latest input mode positions.
123 | -- A value of "enter" means the position will be updated when entering the mode.
124 | -- A value of "leave" means the position will be updated when leaving the mode.
125 | -- `nil` = disabled
126 | show_last_positions = "leave",
127 | })
128 |
--------------------------------------------------------------------------------
/config/nvim/lua/user/lsp.lua:
--------------------------------------------------------------------------------
1 | -- ============================================================================
2 | -- 🧰 Setup {{{
3 | local cmp_capabilities_ok, cmp = pcall(require, "cmp_nvim_lsp")
4 | if not cmp_capabilities_ok then
5 | vim.api.nvim_echo({
6 | {
7 | "Error: nvim-cmp uses lsp completions, but cmp-nvim-lsp is not found... skipping lsp setup()",
8 | "Error",
9 | },
10 | }, true, {})
11 | return
12 | end
13 |
14 | local mason_ok, mason = pcall(require, "mason")
15 | if not mason_ok then
16 | vim.api.nvim_echo({
17 | {
18 | "Error: lsp uses mason to configure various settings, but mason is not found... skipping lsp setup()",
19 | "Error",
20 | },
21 | }, true, {})
22 | return
23 | end
24 | -- }}}
25 | -- ============================================================================
26 |
27 | -- Formatting with conform.nvim
28 | require("conform").setup({
29 | formatters_by_ft = {
30 | bash = { "shellharden" },
31 | sh = { "shellharden" },
32 | zsh = { "beautysh" },
33 | python = { "black" },
34 | css = { "stylelint", "prettier" },
35 | scss = { "stylelint", "prettier" },
36 | json = { "jq" },
37 | rust = { "rustfmt" },
38 | lua = { "stylua" },
39 | toml = { "taplo" },
40 | javascript = { "prettier" },
41 | typescript = { "prettier" },
42 | html = { "prettier" },
43 | go = { "gofmt", "goimports", "golines" },
44 | },
45 | format_on_save = {
46 | timeout_ms = 500,
47 | lsp_fallback = true, -- Use LSP formatting if no formatter is available
48 | },
49 | })
50 |
51 | -- Linting with nvim-lint
52 | require("lint").linters_by_ft = {
53 | css = { "stylelint" },
54 | scss = { "stylelint" },
55 | go = { "gospel" },
56 | zsh = { "zsh" },
57 | }
58 |
59 | -- Run linting on write or read
60 | vim.api.nvim_create_autocmd({ "BufWritePost", "BufReadPost" }, {
61 | callback = function()
62 | require("lint").try_lint()
63 | end,
64 | })
65 |
66 | local on_attach = function(client, bufnr)
67 | local nmap = function(keys, func)
68 | vim.keymap.set("n", keys, func, { buffer = bufnr })
69 | end
70 |
71 | if client.name == "rust_analyzer" then
72 | client.server_capabilities.semanticTokensProvider = nil
73 | end
74 |
75 | nmap("rn", vim.lsp.buf.rename)
76 | nmap("ca", vim.lsp.buf.code_action)
77 | nmap("gr", vim.lsp.buf.references)
78 | nmap("gd", vim.lsp.buf.type_definition)
79 | nmap("gg", ":LspRestart")
80 | nmap("gd", vim.lsp.buf.definition)
81 | nmap("gi", vim.lsp.buf.implementation)
82 | nmap("K", vim.lsp.buf.hover)
83 | nmap("", vim.lsp.buf.signature_help)
84 | nmap("k", vim.diagnostic.open_float)
85 | nmap("[d", vim.diagnostic.goto_prev)
86 | nmap("]d", vim.diagnostic.goto_next)
87 | end
88 |
89 | -- ♦️ Vim Diagnostic Settings:
90 | local signs = {
91 | { name = "DiagnosticSignError", text = "" },
92 | { name = "DiagnosticSignWarn", text = "" },
93 | { name = "DiagnosticSignHint", text = "" },
94 | { name = "DiagnosticSignInfo", text = "" },
95 | }
96 |
97 | for _, sign in ipairs(signs) do
98 | vim.fn.sign_define(sign.name, {
99 | texthl = sign.name,
100 | text = sign.text,
101 | numhl = sign.name,
102 | })
103 | end
104 |
105 | local diagnostic_config = {
106 | underline = false,
107 | virtual_text = true,
108 | signs = true,
109 | update_in_insert = false,
110 | float = {
111 | focusable = false,
112 | style = "minimal",
113 | border = "rounded",
114 | source = "always",
115 | header = "",
116 | prefix = "",
117 | },
118 | }
119 |
120 | vim.diagnostic.config(diagnostic_config)
121 |
122 | vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, {
123 | border = "rounded",
124 | })
125 |
126 | vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, {
127 | border = "rounded",
128 | })
129 |
130 | -- 🎾 Automatic Server Setup:
131 | -- https://github.com/williamboman/mason-lspconfig.nvim#default-configuration
132 | local servers = {
133 | bashls = {},
134 | gopls = {},
135 | cssls = {},
136 | stylelint_lsp = {},
137 | css_variables = {},
138 | templ = {},
139 | marksman = {},
140 | pyright = {},
141 | taplo = {},
142 | lua_ls = {
143 | Lua = {
144 | workspace = { checkThirdParty = false },
145 | telemetry = { enable = false },
146 | diagnostics = { globals = { "vim" } },
147 | format = { enable = false },
148 | },
149 | },
150 | }
151 |
152 | -- ============================================================================
153 | -- 🧱 MASON, DO THE THING! {{{
154 | mason.setup({
155 | ui = { border = "rounded" },
156 | })
157 |
158 | local mason_lspconfig = require("mason-lspconfig")
159 | local capabilities = vim.lsp.protocol.make_client_capabilities()
160 |
161 | capabilities = cmp.default_capabilities(capabilities)
162 |
163 | mason_lspconfig.setup({
164 | ensure_installed = vim.tbl_keys(servers),
165 | })
166 |
167 | mason_lspconfig.setup_handlers({
168 | function(server_name)
169 | require("lspconfig")[server_name].setup({
170 | capabilities = capabilities,
171 | on_attach = on_attach,
172 | settings = servers[server_name],
173 | })
174 | end,
175 | })
176 | -- }}}
177 | -- ============================================================================
178 |
--------------------------------------------------------------------------------
/config/nvim/lua/user/lualine.lua:
--------------------------------------------------------------------------------
1 | -- ============================================================================
2 | -- 🧰 setup {{{
3 | local lualine_ok, lualine = pcall(require, "lualine")
4 | if not lualine_ok then
5 | vim.api.nvim_echo({
6 | {
7 | "Error: lualine plugin not found... skipping relevant setup()",
8 | "Error",
9 | },
10 | }, true, {})
11 | return
12 | end
13 |
14 | local additional_colors_ok, p = pcall(require, "vagari.palette")
15 | if not additional_colors_ok then
16 | vim.api.nvim_echo({
17 | {
18 | "Error: lualine config has impored vagari.nvim that are not found, skipping setup",
19 | "Error",
20 | },
21 | }, true, {})
22 | return
23 | end
24 | -- }}}
25 | -- ============================================================================
26 |
27 | local hide_in_width = function()
28 | return vim.fn.winwidth(0) > 80
29 | end
30 |
31 | local branch = {
32 | "branch",
33 | icon = "",
34 | }
35 |
36 | -- see lualine.nvim/lua/lualine/utils/mode.lua for mode names
37 | local modes = {
38 | ["NORMAL"] = "",
39 | ["O-PENDING"] = "",
40 | ["INSERT"] = "",
41 | ["VISUAL"] = "",
42 | ["SELECT"] = "",
43 | ["V-LINE"] = "",
44 | ["V-BLOCK"] = "",
45 | ["COMMAND"] = "",
46 | ["REPLACE"] = "",
47 | }
48 |
49 | local mode = {
50 | "mode",
51 | fmt = function(str)
52 | if modes[str] then
53 | return modes[str]
54 | end
55 | return str
56 | end,
57 | }
58 |
59 | local lsp_diagnostics = {
60 | "diagnostics",
61 |
62 | sources = { "nvim_diagnostic" },
63 | sections = { "error", "warn", "hint", "info" },
64 | symbols = { error = " ", warn = " ", hint = " ", info = " " },
65 | colored = false,
66 | update_in_insert = false,
67 | padding = { left = 1, right = 1 },
68 | cond = hide_in_width,
69 | }
70 |
71 | local diff = {
72 | "diff",
73 | colored = true,
74 | symbols = {
75 | added = " ",
76 | modified = "🞊 ",
77 | removed = " ",
78 | },
79 | cond = hide_in_width,
80 | }
81 |
82 | local filetype = {
83 | "filetype",
84 | colored = false,
85 | icon_only = false,
86 | padding = { left = 0, right = 1 },
87 | }
88 |
89 | local filename = {
90 | "filename",
91 | file_status = true,
92 | newfile_status = true,
93 | path = 1,
94 | shorting_target = 80,
95 | icon = nil,
96 | symbols = {
97 | modified = "🞊",
98 | readonly = "",
99 | unnamed = "…",
100 | newfile = "",
101 | },
102 | color = function()
103 | local mode_color = {
104 | n = p.blu_4,
105 | i = p.grn_4,
106 | v = p.prp_4,
107 | V = p.prp_4,
108 | c = p.orn_4,
109 | R = p.emr_4,
110 | s = p.cyn_4,
111 | S = p.cyn_4,
112 | [""] = p.prp_4,
113 | }
114 | return { fg = mode_color[vim.fn.mode()] }
115 | end,
116 | }
117 |
118 | local lsp_progress = {
119 | "lsp_progress",
120 | display_components = {
121 | "lsp_client_name",
122 | "spinner",
123 | },
124 | timer = {
125 | progress_enddelay = 100,
126 | spinner = 100,
127 | lsp_client_name_enddelay = 3000,
128 | },
129 | message = {
130 | commenced = " ",
131 | completed = " ",
132 | },
133 | separators = {
134 | component = " ",
135 | progress = "",
136 | message = { pre = "", post = " " },
137 | percentage = { pre = "", post = "%% " },
138 | title = { pre = "", post = "" },
139 | lsp_client_name = { pre = " ", post = "" },
140 | spinner = { pre = "", post = " " },
141 | },
142 | spinner_symbols = { "", "", "", "", "", "" },
143 | }
144 |
145 | local search = {
146 | function()
147 | local last_search = vim.fn.getreg("/")
148 | if not last_search or last_search == "" then
149 | return ""
150 | end
151 | local searchcount = vim.fn.searchcount({ maxcount = 9999 })
152 | if searchcount.total == 0 then
153 | vim.cmd([[ :call setreg("/", ['']) ]])
154 | end
155 | return " " .. last_search .. "(" .. searchcount.current .. "/" .. searchcount.total .. ")"
156 | end,
157 | color = { fg = p.orn_2 },
158 | }
159 |
160 | local function icon()
161 | return [[ ]]
162 | end
163 |
164 | local lazy = {
165 | require("lazy.status").updates,
166 | cond = require("lazy.status").has_updates,
167 | color = { fg = p.glc_4 },
168 | }
169 |
170 | local minimal = {
171 | sections = {
172 | lualine_a = { mode },
173 | lualine_b = {},
174 | lualine_c = {},
175 | lualine_x = { search },
176 | lualine_y = { filetype },
177 | lualine_z = { icon() },
178 | },
179 | inactive_sections = {
180 | lualine_a = {},
181 | lualine_b = {},
182 | lualine_c = {},
183 | lualine_x = {},
184 | lualine_y = { filetype },
185 | luailne_z = {},
186 | },
187 | filetypes = {
188 | "Avante",
189 | "AvanteInput",
190 | "tsplayground",
191 | "undotree",
192 | "diff",
193 | },
194 | }
195 |
196 | lualine.setup({
197 | options = {
198 | theme = "vagari",
199 | section_separators = { left = "", right = "" },
200 | component_separators = { left = "⊸", right = "⟜" },
201 | },
202 | sections = {
203 | lualine_a = { mode },
204 | lualine_b = { branch, filename },
205 | lualine_c = { diff, lsp_diagnostics },
206 | lualine_x = { lazy, lsp_progress, search },
207 | lualine_y = { filetype },
208 | lualine_z = { icon },
209 | },
210 | inactive_sections = {
211 | lualine_a = {},
212 | lualine_b = {},
213 | lualine_c = {},
214 | lualine_x = {},
215 | lualine_y = { filetype },
216 | luailne_z = {},
217 | },
218 | tabline = {},
219 | extensions = { minimal },
220 | })
221 |
--------------------------------------------------------------------------------
/config/nvim/lua/user/nvimtree.lua:
--------------------------------------------------------------------------------
1 | local ok, nvim_tree = pcall(require, "nvim-tree")
2 |
3 | if not ok then
4 | vim.api.nvim_echo({
5 | {
6 | "Error: nvim-tree plugin not found... skipping relevant setup()",
7 | "Error",
8 | },
9 | }, true, {})
10 | return
11 | end
12 |
13 | local function on_attach(bufnr)
14 | local api = require("nvim-tree.api")
15 |
16 | local function opts(desc)
17 | return { desc = "nvim-tree: " .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true }
18 | end
19 |
20 | vim.keymap.set("n", "", api.node.open.edit, opts("Open"))
21 | vim.keymap.set("n", "o", api.node.open.edit, opts("Open"))
22 | vim.keymap.set("n", "", api.node.open.edit, opts("Open"))
23 | vim.keymap.set("n", "zz", api.tree.change_root_to_node, opts("CD"))
24 | vim.keymap.set("n", "", api.node.navigate.sibling.prev, opts("Previous Sibling"))
25 | vim.keymap.set("n", "", api.node.navigate.sibling.next, opts("Next Sibling"))
26 | vim.keymap.set("n", "", api.node.navigate.parent, opts("Parent Directory"))
27 | vim.keymap.set("n", "", api.node.open.vertical, opts("Open: Vertical Split"))
28 | vim.keymap.set("n", "", api.node.open.horizontal, opts("Open: Horizontal Split"))
29 | vim.keymap.set("n", "", api.node.open.tab, opts("Open: New Tab"))
30 | vim.keymap.set("n", "zc", api.node.navigate.parent_close, opts("Close Directory"))
31 | vim.keymap.set("n", "I", api.tree.toggle_gitignore_filter, opts("Toggle Git Ignore"))
32 | vim.keymap.set("n", ".", api.tree.toggle_hidden_filter, opts("Toggle Dotfiles"))
33 | vim.keymap.set("n", "n", api.fs.create, opts("Create"))
34 | vim.keymap.set("n", "d", api.fs.trash, opts("Trash"))
35 | vim.keymap.set("n", "X", api.fs.remove, opts("Delete"))
36 | vim.keymap.set("n", "r", api.fs.rename, opts("Rename"))
37 | vim.keymap.set("n", "", api.fs.rename_sub, opts("Rename: Omit Filename"))
38 | vim.keymap.set("n", "R", api.tree.reload, opts("Refresh"))
39 | vim.keymap.set("n", "", api.fs.cut, opts("Cut"))
40 | vim.keymap.set("n", "yy", api.fs.copy.node, opts("Copy"))
41 | vim.keymap.set("n", "p", api.fs.paste, opts("Paste"))
42 | vim.keymap.set("n", "yp", api.fs.copy.relative_path, opts("Copy Relative Path"))
43 | vim.keymap.set("n", "yP", api.fs.copy.absolute_path, opts("Copy Absolute Path"))
44 | vim.keymap.set("n", "[", api.node.navigate.git.prev, opts("Prev Git"))
45 | vim.keymap.set("n", "]", api.node.navigate.git.next, opts("Next Git"))
46 | vim.keymap.set("n", "O", api.node.run.system, opts("Run System"))
47 | vim.keymap.set("n", "q", api.tree.close, opts("Close"))
48 | vim.keymap.set("n", "", api.tree.close, opts("Close"))
49 | vim.keymap.set("n", "?", api.tree.toggle_help, opts("Help"))
50 | vim.keymap.set("n", "zm", api.tree.collapse_all, opts("Collapse"))
51 | vim.keymap.set("n", "zr", api.tree.expand_all, opts("Expand All"))
52 | vim.keymap.set("n", "S", api.tree.search_node, opts("Search"))
53 | vim.keymap.set("n", "", api.node.show_info_popup, opts("Info"))
54 | end
55 |
56 | nvim_tree.setup({
57 | on_attach = on_attach,
58 | disable_netrw = false,
59 | hijack_cursor = true,
60 | update_focused_file = { enable = true },
61 | diagnostics = { enable = true },
62 | modified = { enable = true },
63 | view = {
64 | number = true,
65 | cursorline = false,
66 | relativenumber = true,
67 | signcolumn = "yes",
68 | float = {
69 | enable = true,
70 | open_win_config = function()
71 | local screen_w = vim.opt.columns:get()
72 | local screen_h = vim.opt.lines:get() - vim.opt.cmdheight:get()
73 | local window_w = screen_w * 0.66
74 | local window_h = screen_h * 0.66
75 | local window_w_int = math.floor(window_w)
76 | local window_h_int = math.floor(window_h)
77 | local center_x = (screen_w - window_w) / 2
78 | local center_y = ((vim.opt.lines:get() - window_h) / 2) - vim.opt.cmdheight:get()
79 | return {
80 | border = "rounded",
81 | relative = "editor",
82 | row = center_y,
83 | col = center_x,
84 | width = window_w_int,
85 | height = window_h_int,
86 | }
87 | end,
88 | },
89 | },
90 | renderer = {
91 | highlight_git = true,
92 | indent_markers = {
93 | enable = true,
94 | inline_arrows = true,
95 | icons = {
96 | corner = "└╾",
97 | edge = "│ ",
98 | item = "├",
99 | none = " ",
100 | },
101 | },
102 | icons = {
103 | glyphs = {
104 | default = "",
105 | symlink = "",
106 | git = {
107 | unstaged = "🞊",
108 | staged = "",
109 | unmerged = "",
110 | renamed = "",
111 | deleted = "",
112 | untracked = "",
113 | ignored = "",
114 | },
115 | },
116 | },
117 | },
118 | trash = {
119 | cmd = "trash-put",
120 | require_confirm = true,
121 | },
122 | actions = {
123 | open_file = {
124 | quit_on_open = true,
125 | window_picker = {
126 | chars = "asetniol",
127 | },
128 | },
129 | },
130 | })
131 |
--------------------------------------------------------------------------------
/config/nvim/lua/user/settings.lua:
--------------------------------------------------------------------------------
1 | -- see :help '{option}' for more details ⮯
2 |
3 | local options = {
4 | -- 👉 Indentation =========================================================
5 | tabstop = 4, -- preferred tabstop length.
6 | shiftwidth = 4, -- set to same as tabstop ⮭
7 | expandtab = true, -- as per option 2 in :help 'tabstop'
8 | shiftround = true, -- ensures indent is a multiple of shiftwidth
9 | smartindent = true, -- an extension of 'autoindent'
10 | -- ========================================================================
11 |
12 | -- 📃 Text ================================================================
13 | wrap = false, -- disable text wrapping by default
14 | breakindent = true, -- continue to indent text (if wrapped line)
15 | linebreak = true, -- smarter (more control) over line breaking; see 'breakat'
16 | scrolloff = 22, -- minimum lines above/below cursor
17 | sidescrolloff = 6, -- minimum lines left/right of cursor
18 | spell = false, -- turn spell check off by default
19 | spelllang = { "en_us", "en_gb" }, -- easily add/remove dictionaries
20 | -- textwidth = 80,
21 | formatoptions = "cqnpj1", -- see :help fo-table
22 | -- ========================================================================
23 |
24 | -- 👀 UI ==================================================================
25 | -- hlsearch = false, -- turn off persistent highlights when searching
26 | shortmess = "filnxtToOFcsS", -- control some status line message settings
27 | number = true, -- show line numbers
28 | relativenumber = true, -- makes using {number}{motion} easier
29 | termguicolors = true, -- more colors, good; needs terminal support.
30 | signcolumn = "yes", -- allays display sign-column
31 | colorcolumn = "80", -- reminder for the ideal line-length maximum
32 | foldmethod = "marker", -- atomically fold on {{{ }}}
33 | updatetime = 420, -- timer until events execute when cursors stops (ms)
34 | timeoutlen = 690, -- timeout for mapped sequence to complete
35 | fillchars = "vert: ,horiz: ,fold:⋅,eob: ,msgsep:‾",
36 | -- ========================================================================
37 |
38 | -- ⌨️ UX ==================================================================
39 | mouse = "a", -- mouse can be useful, sometimes... it doesn't hurt.
40 | splitbelow = true, -- split below by default
41 | splitright = true, -- split right by default
42 | showmode = false, -- redundant if using lualine
43 | completeopt = { "menu", "menuone", "noselect" }, -- insert complete options
44 | iskeyword = "@,48-57,_,-,192-255,#", -- define what a ends a "word"
45 | swapfile = false, -- swapfiles are useless to me
46 | undofile = true, -- persistent undo, very useful with 'mbbill/undotree' plugin
47 | wildignore = ".back,~,.o,.h,.info,.swp,.obj,.pyc", -- don't check these files for "*" pattern matching
48 | -- ========================================================================
49 | }
50 |
51 | for k, v in pairs(options) do
52 | vim.opt[k] = v
53 | end
54 |
--------------------------------------------------------------------------------
/config/nvim/lua/user/telescope.lua:
--------------------------------------------------------------------------------
1 | local ok, telescope = pcall(require, "telescope")
2 |
3 | if not ok then
4 | vim.api.nvim_echo({
5 | {
6 | "Error: telescope plugin not found... skipping relevant setup()",
7 | "Error",
8 | },
9 | }, true, {})
10 | return
11 | end
12 |
13 | telescope.load_extension("zf-native")
14 |
15 | local actions = require("telescope.actions")
16 |
17 | -- local open_with_trouble = require("troubile.sources.telescope").open
18 | -- local add_to_trouble = require("trouble.sources.telescope").add
19 |
20 | telescope.setup({
21 | defaults = {
22 | layout_strategy = "vertical",
23 | layout_config = {
24 | vertical = {
25 | prompt_position = "top",
26 | },
27 | },
28 | sorting_strategy = "ascending",
29 | prompt_prefix = " ",
30 | selection_caret = " ",
31 | path_display = { "smart" },
32 | mappings = {
33 | i = {
34 | [""] = actions.cycle_history_next,
35 | [""] = actions.cycle_history_prev,
36 | [""] = actions.close,
37 | [""] = actions.close,
38 | [""] = actions.move_selection_next,
39 | [""] = actions.move_selection_previous,
40 | [""] = actions.results_scrolling_up,
41 | [""] = actions.results_scrolling_down,
42 | [""] = actions.preview_scrolling_up,
43 | [""] = actions.preview_scrolling_down,
44 | [""] = actions.select_default,
45 | [""] = actions.select_horizontal,
46 | [""] = actions.select_vertical,
47 | [""] = actions.select_tab,
48 | [""] = actions.toggle_selection + actions.move_selection_worse,
49 | [""] = actions.toggle_selection + actions.move_selection_better,
50 | [""] = actions.send_to_qflist + actions.open_qflist,
51 | [""] = actions.send_selected_to_qflist + actions.open_qflist,
52 | [""] = actions.complete_tag,
53 | -- [""] = open_with_trouble,
54 | [""] = actions.which_key,
55 | },
56 | },
57 | },
58 | extensions = {
59 | ["zf-native"] = {
60 | file = {
61 | enable = true,
62 | highlight_results = true,
63 | match_filename = true,
64 | },
65 | generic = {
66 | enable = true,
67 | highlight_results = true,
68 | match_filename = false,
69 | },
70 | },
71 | },
72 | })
73 |
74 | telescope.load_extension("refactoring")
75 | vim.api.nvim_set_keymap(
76 | "v",
77 | "tr",
78 | "lua require('telescope').extensions.refactoring.refactors()",
79 | { noremap = true }
80 | )
81 |
82 | local builtin = require("telescope.builtin")
83 | local tmap = function(key, cmd)
84 | vim.keymap.set("n", key, cmd, {})
85 | end
86 |
87 | tmap("t", builtin.find_files)
88 | tmap("s", builtin.live_grep)
89 | tmap("g", builtin.grep_string)
90 | tmap("tg", builtin.git_files)
91 | tmap("tr", builtin.oldfiles)
92 | tmap("tb", builtin.buffers)
93 | tmap("th", builtin.help_tags)
94 | tmap("tH", builtin.highlights)
95 | tmap("td", builtin.diagnostics)
96 | tmap("tp", builtin.builtin)
97 | tmap("tc", builtin.commands)
98 | tmap("tl", builtin.loclist)
99 | tmap("tq", builtin.quickfix)
100 | tmap("tm", builtin.man_pages)
101 | tmap("tst", builtin.treesitter)
102 |
103 | -- only works if lsp sevrer is attached:
104 | tmap("tsr", builtin.lsp_references)
105 | tmap("tss", builtin.lsp_document_symbols)
106 | tmap("tsw", builtin.lsp_dynamic_workspace_symbols)
107 |
--------------------------------------------------------------------------------
/config/nvim/lua/user/treesitter.lua:
--------------------------------------------------------------------------------
1 | -- ============================================================================
2 | -- 🧰 Setup {{{
3 | local ok, treesitter = pcall(require, "nvim-treesitter.configs")
4 | if not ok then
5 | vim.api.nvim_echo({
6 | {
7 | "Error: nvim-treesitter plugin not found... skipping relevant setup()",
8 | "Error",
9 | },
10 | }, true, {})
11 | return
12 | end
13 | -- }}}
14 | -- ============================================================================
15 |
16 | treesitter.setup({
17 | ensure_installed = {
18 | "c",
19 | "lua",
20 | "python",
21 | "bash",
22 | "vim",
23 | "yaml",
24 | "query",
25 | "comment",
26 | "vimdoc",
27 | "query",
28 | "typescript",
29 | "javascript",
30 | "json",
31 | "html",
32 | "css",
33 | "scss",
34 | "templ",
35 | "rust",
36 | "toml",
37 | "go",
38 | "java",
39 | },
40 | sync_install = true,
41 | auto_install = true,
42 | ignore_install = {},
43 | highlight = {
44 | enable = true,
45 | additional_vim_regex_highlighting = false,
46 | },
47 | indent = {
48 | enable = true,
49 | disable = { "python" },
50 | },
51 | incremental_selection = {
52 | enable = true,
53 | keymaps = {
54 | init_selection = "gn", -- normal: start incremental selection.
55 | node_incremental = "gn", -- visual: increment to the upper named parent.
56 | scope_incremental = "gy", -- visual: increment to the upper scope
57 | node_decremental = "gp", -- visual: decrement to the previous named node.
58 | },
59 | },
60 | textobjects = {
61 | select = {
62 | enable = true,
63 | lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim
64 | keymaps = {
65 | -- You can use the capture groups defined in textobjects.scm
66 | ["aa"] = "@parameter.outer",
67 | ["ia"] = "@parameter.inner",
68 | ["af"] = "@function.outer",
69 | ["if"] = "@function.inner",
70 | ["ac"] = "@class.outer",
71 | ["ic"] = "@class.inner",
72 | ["at"] = "@tag.outer",
73 | ["it"] = "@tag.inner",
74 | ["ab"] = "@block.outer",
75 | ["ib"] = "@block.inner",
76 | ["al"] = "@loop.outer",
77 | ["il"] = "@loop.inner",
78 | },
79 | },
80 | },
81 | move = {
82 | enable = true,
83 | set_jumps = true, -- whether to set jumps in the jumplist
84 | goto_next_start = {
85 | ["]m"] = "@function.outer",
86 | ["]]"] = "@class.outer",
87 | },
88 | goto_next_end = {
89 | ["]M"] = "@function.outer",
90 | ["]["] = "@class.outer",
91 | },
92 | goto_previous_start = {
93 | ["[m"] = "@function.outer",
94 | ["[["] = "@class.outer",
95 | },
96 | goto_previous_end = {
97 | ["[M"] = "@function.outer",
98 | ["[]"] = "@class.outer",
99 | },
100 | },
101 | playground = {
102 | enable = true,
103 | disable = {},
104 | updatetime = 25, -- Debounced time for highlighting nodes in the playground from source code
105 | persist_queries = false, -- Whether the query persists across vim sessions
106 | keybindings = {
107 | toggle_query_editor = "o",
108 | toggle_hl_groups = "i",
109 | toggle_injected_languages = "t",
110 | toggle_anonymous_nodes = "a",
111 | toggle_language_display = "I",
112 | focus_language = "f",
113 | unfocus_language = "F",
114 | update = "R",
115 | goto_node = "",
116 | show_help = "?",
117 | },
118 | },
119 | autopairs = { enable = true },
120 | autotag = { enable = true },
121 | modules = {},
122 | })
123 |
--------------------------------------------------------------------------------
/config/nvim/spell/en.utf-8.add:
--------------------------------------------------------------------------------
1 | vagari's
2 | vagari
3 | bulbasaur
4 | tbd
5 | undercurl
6 | ui
7 | lsp
8 | treesitter
9 | neovim
10 | sonder
11 | Dennett
12 | Dennett's
13 | Boghossian
14 | Vervaeke
15 | mdash
16 | rarr
17 | harr
18 | asymp
19 | overanalyzing
20 |
--------------------------------------------------------------------------------
/config/nvim/spell/en.utf-8.add.spl:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/config/nvim/spell/en.utf-8.add.spl
--------------------------------------------------------------------------------
/config/paru/paru.conf:
--------------------------------------------------------------------------------
1 | [options]
2 | PgpFetch
3 | Devel
4 | Provides
5 | DevelSuffixes = -git -cvs -svn -bzr -darcs -always -hg -fossil
6 | BottomUp
7 | Limit = 20
8 | SkipReview
9 |
--------------------------------------------------------------------------------
/config/pipes-rs/config.toml:
--------------------------------------------------------------------------------
1 | bold = false
2 | color_mode = "ansi" # ansi, rgb or none
3 | palette = "default" # default, darker, pastel or matrix
4 | rainbow = 0 # 0-255
5 | delay_ms = 16
6 | inherit_style = false
7 | kinds = ["curved"] # heavy, light, curved, knobby, emoji, outline, dots, blocks, sus
8 | num_pipes = 2
9 | reset_threshold = 0.42 # 0.0–1.0
10 | turn_chance = 0.15 # 0.0–1.0
11 |
--------------------------------------------------------------------------------
/config/swaylock/config.conf:
--------------------------------------------------------------------------------
1 | color=22253600
2 | ignore-empty-password
3 | indicator-radius=100
4 | indicator-y-position=400
5 | indicator-thickness=1
6 |
7 | inside-color=22253600
8 | inside-clear-color=22253650
9 | inside-wrong-color=f3697808
10 | inside-ver-color=76d78b08
11 |
12 | separator-color=22256300
13 | text-color=22253600
14 | text-clear-color=22253600
15 | text-ver-color=22253600
16 | text-wrong-color=22253600
17 |
18 | bs-hl-color=f36978
19 | key-hl-color=f2a170
20 |
21 | ring-color=22253600
22 | ring-clear-color=90d1f5
23 | ring-ver-color=76d78b
24 | ring-wrong-color=f36978
25 | line-uses-ring
26 |
--------------------------------------------------------------------------------
/config/user-dirs.dirs:
--------------------------------------------------------------------------------
1 | XDG_DESKTOP_DIR="$HOME/"
2 | XDG_DOCUMENTS_DIR="$HOME/docs"
3 | XDG_DOWNLOAD_DIR="$HOME/downloads"
4 | XDG_MUSIC_DIR="$HOME/media/music"
5 | XDG_PICTURES_DIR="$HOME/media/images"
6 | XDG_VIDEOS_DIR="$HOME/media/videos"
7 | XDG_PUBLICSHARE_DIR="$HOME/docs/share"
8 | XDG_TEMPLATES_DIR="$HOME/docs/templates"
9 |
--------------------------------------------------------------------------------
/config/xplr/stylua.toml:
--------------------------------------------------------------------------------
1 | column_width = 80
2 | line_endings = "Unix"
3 | indent_type = "Tabs"
4 | indent_width = 4
5 | quote_style = "AutoPreferDouble"
6 | call_parentheses = "Always"
7 | collapse_simple_statement = "Never"
8 |
--------------------------------------------------------------------------------
/config/zathura/zathurarc:
--------------------------------------------------------------------------------
1 | set default-fg "#aeb9f8"
2 | set default-bg "#222536"
3 |
4 | set completion-bg "#1e2133"
5 | set completion-fg "#aeb9f8"
6 | set completion-highlight-bg "#30345a"
7 | set completion-highlight-fg "#aeb9f8"
8 | set completion-group-bg "#1e2133"
9 | set completion-group-fg "#7492ef"
10 |
11 | set statusbar-fg "#aeb9f8"
12 | set statusbar-bg "#1e2133"
13 |
14 | set notification-bg "#1e2133"
15 | set notification-fg "#aeb9f8"
16 | set notification-error-bg "#1e2133"
17 | set notification-error-fg "#f08898"
18 | set notification-warning-bg "#1e2133"
19 | set notification-warning-fg "#f4ce88"
20 |
21 | set inputbar-fg "#5a61aa"
22 | set inputbar-bg "#1e2133"
23 |
24 | set recolor-lightcolor "#222536"
25 | set recolor-darkcolor "#aeb9f8"
26 |
27 | set index-fg "#aeb9f8"
28 | set index-bg "#222536"
29 | set index-active-fg "#aeb9f8"
30 | set index-active-bg "#1e2133"
31 |
32 | set render-loading-bg "#222536"
33 | set render-loading-fg "#aeb9f8"
34 |
35 | set highlight-color "#30345a"
36 | set highlight-active-color "#f2a170"
37 |
38 | map t navigate next
39 | map e navigate previous
40 |
41 | set selection-clipboard "clipboard"
42 | set guioptions ""
43 | set window-title-basename true
44 | set link-hadjust false
45 | set search-hadjust false
46 | set scroll-page-aware true
47 | set scroll-step 200
48 | set zoom-step 6
49 | set recolor true
50 |
--------------------------------------------------------------------------------
/config/zsh/vagari-highlights.zsh:
--------------------------------------------------------------------------------
1 | typeset -gA ZSH_HIGHLIGHT_STYLES
2 |
3 | ZSH_HIGHLIGHT_HIGHLIGHTERS+=(regexp)
4 |
5 | # https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/docs/highlighters/main.md
6 |
7 | # Other Plugins
8 | ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=#4e5492"
9 |
10 | # Regex
11 | ZSH_HIGHLIGHT_REGEXP+=('^trash .*' fg=#824141)
12 | ZSH_HIGHLIGHT_REGEXP+=('^rm .*' fg=#f36978)
13 | ZSH_HIGHLIGHT_REGEXP+=('^rm -rf.*' fg=#f34658,bold)
14 | ZSH_HIGHLIGHT_REGEXP+=('^touch' fg=#f5d599)
15 | ZSH_HIGHLIGHT_REGEXP+=('^mkdir' fg=#f4ce88)
16 | ZSH_HIGHLIGHT_REGEXP+=('^mv' fg=#75e6d5)
17 | ZSH_HIGHLIGHT_REGEXP+=('^ln' fg=#38d2ba)
18 | ZSH_HIGHLIGHT_REGEXP+=('^cp' fg=#2bb198)
19 |
20 | # Main
21 | ZSH_HIGHLIGHT_STYLES[default]='fg=#aeb9f8'
22 | ZSH_HIGHLIGHT_STYLES[comment]='fg=#484e75'
23 | ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=#343852'
24 |
25 | ZSH_HIGHLIGHT_STYLES[reserved-word]='fg=#a188df,bold'
26 | ZSH_HIGHLIGHT_STYLES[commandseparator]='fg=#9376d8,bold'
27 |
28 | ZSH_HIGHLIGHT_STYLES[function]='fg=#f2a170'
29 | ZSH_HIGHLIGHT_STYLES[command]='fg=#f8b486'
30 | ZSH_HIGHLIGHT_STYLES[arg0]='fg=#f8b486'
31 | ZSH_HIGHLIGHT_STYLES[hashed-command]='fg=#f8b486'
32 | ZSH_HIGHLIGHT_STYLES[precommand]='fg=#eb905d,bold'
33 |
34 | ZSH_HIGHLIGHT_STYLES[alias]='fg=#ed9acd'
35 | ZSH_HIGHLIGHT_STYLES[suffix-alias]='fg=#e887c3'
36 | ZSH_HIGHLIGHT_STYLES[global-alias]='fg=#ea76c0,bold'
37 |
38 | ZSH_HIGHLIGHT_STYLES[autodirectory]='fg=#8aa4f3,bold'
39 | ZSH_HIGHLIGHT_STYLES[path]='fg=#7492ef'
40 | ZSH_HIGHLIGHT_STYLES[path_pathseparator]='fg=#4a6be3'
41 | ZSH_HIGHLIGHT_STYLES[path_prefix]='fg=#4a6be3,bold'
42 |
43 | ZSH_HIGHLIGHT_STYLES[globbing]='fg=#5a61aa'
44 | ZSH_HIGHLIGHT_STYLES[history-expansion]='fg=#5a61aa,bold'
45 |
46 | ZSH_HIGHLIGHT_STYLES[command-substitution]='fg=#ea834b'
47 | ZSH_HIGHLIGHT_STYLES[command-substitution-unquoted]='fg=#ea834b'
48 | ZSH_HIGHLIGHT_STYLES[command-substitution-quoted]='fg=#ea834b,bold'
49 | ZSH_HIGHLIGHT_STYLES[command-substitution-delimiter]='fg=#ea834b'
50 | ZSH_HIGHLIGHT_STYLES[command-substitution-delimiter-unquoted]='fg=#ea834b'
51 | ZSH_HIGHLIGHT_STYLES[command-substitution-delimiter-quoted]='fg=#ea834b,bold'
52 |
53 | ZSH_HIGHLIGHT_STYLES[process-substitution]='fg=#54b0e2,bold'
54 | ZSH_HIGHLIGHT_STYLES[process-substitution-delimiter]='fg=#54b0e2,bold'
55 |
56 | ZSH_HIGHLIGHT_STYLES[arithmetic-expansion]='fg=#6bbdec,bold'
57 |
58 | ZSH_HIGHLIGHT_STYLES[single-hyphen-option]='fg=#75e6d5'
59 | ZSH_HIGHLIGHT_STYLES[double-hyphen-option]='fg=#38d2ba'
60 |
61 | ZSH_HIGHLIGHT_STYLES[single-quoted-argument]='fg=#9fd883'
62 | ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=#95cb79'
63 | ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument]='fg=#85ba6d'
64 | ZSH_HIGHLIGHT_STYLES[back-quoted-argument]='fg=#73ad5a,bold'
65 | ZSH_HIGHLIGHT_STYLES[back-quoted-argument-delimiter]='fg=#73ad5a,bold'
66 |
67 | ZSH_HIGHLIGHT_STYLES[single-quoted-argument-unclosed]='fg=#505831'
68 | ZSH_HIGHLIGHT_STYLES[double-quoted-argument-unclosed]='fg=#505831'
69 | ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument-unclosed]='fg=#505831'
70 | ZSH_HIGHLIGHT_STYLES[back-quoted-argument-unclosed]='fg=#505831'
71 |
72 | ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]='fg=#f5d599,bold'
73 | ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]='fg=#375c47'
74 | ZSH_HIGHLIGHT_STYLES[back-dollar-quoted-argument]='fg=#375c47'
75 |
76 | ZSH_HIGHLIGHT_STYLES[assign]='fg=#6380ec'
77 | ZSH_HIGHLIGHT_STYLES[redirection]='fg=#6380ec,bold'
78 |
79 | ZSH_HIGHLIGHT_STYLES[named-fd]='fg=#4a6be3'
80 | ZSH_HIGHLIGHT_STYLES[numeric-fd]='fg=#4a6be3'
81 |
--------------------------------------------------------------------------------
/config/zsh/zshrc:
--------------------------------------------------------------------------------
1 | eval "$(starship init zsh)"
2 | eval "$(zoxide init zsh)"
3 |
4 | function command_not_found_handler {
5 | return 127
6 | }
7 |
8 | export TERM=xterm-256color
9 |
10 | if [ -f "$HOME/.anthropic_api_key" ]; then
11 | export ANTHROPIC_API_KEY=$(cat "$HOME/.anthropic_api_key")
12 | fi
13 |
14 | # history
15 | HISTFILE=~/.histfile
16 | HISTSIZE=1000
17 | SAVEHIST=800
18 | setopt INC_APPEND_HISTORY
19 | setopt HIST_IGNORE_ALL_DUPS
20 | setopt HIST_IGNORE_DUPS
21 | setopt AUTO_CD
22 |
23 | # aliases
24 | alias niol='clear && source ~/.zshrc'
25 | alias ls='echo; lsd'
26 | alias n='nvim'
27 | alias c='calc'
28 | alias zz='cd ~'
29 | alias m="make"
30 | alias j="just"
31 | alias jt="just test"
32 | alias jr="just req"
33 | alias jw="just watch"
34 | alias g='cd "$(xplr --print-pwd-as-result)"'
35 | alias d='cd ~/dotfiles'
36 | alias D='cd ~/downloads'
37 | alias v='cd ~/vagari'
38 | alias e='cd ~/dotfiles/config/nvim'
39 | alias x='exit'
40 | alias p='paru'
41 | alias lg='lazygit'
42 | alias uvpn='nmcli connection up "TrendCapitalVPN"'
43 | alias dvpn='nmcli connection down "TrendCapitalVPN"'
44 | alias update='paru -Syu && paru -Qqe > ~/dotfiles/etc/packages.lst'
45 | alias oc='ouch compress'
46 | alias od='ouch decompress'
47 | alias ol='ouch list --tree'
48 | alias man='man --pager=$PAGER'
49 | alias zoomfix='env XDG_CURRENT_DESKTOP=GNOME GDK_BACKEND=x11 QT_QPA_PLATFORM=xcb XDG_SESSION_TYPE=x11 zoom & disown'
50 | alias af='GDK_BACKEND=x11 QT_QPA_PLATFORM=xcb audacity & disown'
51 | function etree () {
52 | echo
53 | if [[ -z $1 ]]; then
54 | L=2
55 | else
56 | L=$1
57 | fi
58 | erd -L "$L" --suppress-size --threads 16 --layout inverted
59 | }
60 |
61 | alias ew='eww-open'
62 | alias ews='eww inspector & disown && exit'
63 | alias el='eww logs'
64 |
65 | # plugins
66 | if [[ ! -f ${ZDOTDIR:-${HOME}}/.zcomet/bin/zcomet.zsh ]]; then
67 | command git clone https://github.com/agkozak/zcomet.git ${ZDOTDIR:-${HOME}}/.zcomet/bin
68 | fi
69 | source ${ZDOTDIR:-${HOME}}/.zcomet/bin/zcomet.zsh
70 |
71 | zcomet load zsh-users/zsh-completions
72 | zcomet load zsh-users/zsh-autosuggestions
73 | zcomet load marlonrichert/zsh-autocomplete
74 | zcomet load zsh-users/zsh-syntax-highlighting
75 |
76 | autoload -U compinit; compinit
77 |
78 | ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=20
79 |
80 | # fix keys
81 | bindkey -v
82 | export KEYTIMEOUT=01
83 | bindkey '^[[H' vi-beginning-of-line
84 | bindkey '^[[F' vi-end-of-line
85 | bindkey '^[[3~' delete-char
86 | bindkey '^[[1;5C' forward-word # C-left
87 | bindkey '^[[1;5D' backward-word # C-right
88 | bindkey '^[[1;5A' history-incremental-search-backward # C-up
89 | bindkey '^[[1;5B' history-incremental-search-forward # C-down
90 |
91 | source $HOME/.config/zsh/vagari-highlights.zsh
92 |
--------------------------------------------------------------------------------
/etc/caddy.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Caddy File Server
3 | After=network.target
4 |
5 | [Service]
6 | User=cullyn
7 | ExecStart=/usr/bin/caddy file-server --listen :42069 --browse
8 | Restart=always
9 |
10 | [Install]
11 | WantedBy=multi-user.target
12 |
--------------------------------------------------------------------------------
/etc/crkbd.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Crkbd",
3 | "vendorProductId": 1179844609,
4 | "macros": ["=> ", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""],
5 | "layers": [
6 | [
7 | "KC_TAB", "KC_Q", "KC_W", "KC_R", "KC_F", "KC_X",
8 | "KC_ESC", "KC_A", "KC_S", "KC_E", "KC_T", "KC_G",
9 | "C(KC_LSFT)", "KC_LGUI", "KC_B", "KC_C", "KC_D", "KC_COMM",
10 | "KC_NO",
11 | "KC_NO",
12 | "KC_NO",
13 | "KC_LCTL", "FN_MO13", "KC_LSFT",
14 | "KC_DEL", "RCTL(KC_RSFT)", "KC_V", "KC_U", "KC_P", "KC_J",
15 | "KC_BSPC", "KC_L", "KC_O", "KC_I", "KC_N", "KC_Y",
16 | "KC_RALT", "KC_Z", "KC_K", "KC_M", "KC_H", "KC_DOT",
17 | "KC_NO",
18 | "KC_NO",
19 | "KC_NO",
20 | "KC_ENT", "FN_MO23", "KC_SPC"
21 | ],
22 | [
23 | "C(KC_BSPC)", "KC_TRNS", "KC_AT", "KC_HASH", "KC_DLR",
24 | "KC_ENT", "KC_BSPC", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5",
25 | "C(KC_Y)", "C(KC_Z)", "C(KC_X)", "C(KC_C)", "C(S(KC_V))", "C(KC_V)",
26 | "KC_NO",
27 | "KC_NO",
28 | "KC_NO",
29 | "KC_TRNS",
30 | "FN_MO13",
31 | "KC_TRNS",
32 | "KC_TRNS",
33 | "KC_TRNS",
34 | "KC_PIPE",
35 | "KC_PERC",
36 | "KC_AMPR",
37 | "KC_TRNS",
38 | "KC_TRNS",
39 | "KC_0",
40 | "KC_9",
41 | "KC_8",
42 | "KC_7",
43 | "KC_6",
44 | "KC_TRNS",
45 | "KC_TRNS",
46 | "KC_TRNS",
47 | "KC_DQUO",
48 | "KC_QUOT",
49 | "KC_TRNS",
50 | "KC_NO",
51 | "KC_NO",
52 | "KC_NO",
53 | "KC_TRNS",
54 | "FN_MO23",
55 | "KC_TRNS"
56 | ],
57 | [
58 | "KC_TRNS",
59 | "KC_TRNS",
60 | "KC_EXLM",
61 | "KC_UNDS",
62 | "KC_QUES",
63 | "KC_TRNS",
64 | "KC_TRNS",
65 | "KC_LPRN",
66 | "KC_LCBR",
67 | "KC_LBRC",
68 | "KC_MINS",
69 | "KC_SLSH",
70 | "KC_TRNS",
71 | "KC_TRNS",
72 | "KC_TRNS",
73 | "KC_LT",
74 | "KC_GT",
75 | "KC_SCLN",
76 | "KC_NO",
77 | "KC_NO",
78 | "KC_NO",
79 | "KC_TRNS",
80 | "FN_MO13",
81 | "KC_TILD",
82 | "KC_TRNS",
83 | "KC_TRNS",
84 | "KC_CIRC",
85 | "KC_ASTR",
86 | "KC_PLUS",
87 | "KC_TRNS",
88 | "KC_TRNS",
89 | "KC_RPRN",
90 | "KC_RCBR",
91 | "KC_RBRC",
92 | "KC_EQL",
93 | "KC_BSLS",
94 | "KC_TRNS",
95 | "KC_TRNS",
96 | "KC_TRNS",
97 | "KC_DQUO",
98 | "KC_GRV",
99 | "KC_COLN",
100 | "KC_NO",
101 | "KC_NO",
102 | "KC_NO",
103 | "KC_TRNS",
104 | "FN_MO23",
105 | "KC_TRNS"
106 | ],
107 | [
108 | "KC_TRNS",
109 | "KC_TRNS",
110 | "KC_PGDN",
111 | "KC_UP",
112 | "KC_PGUP",
113 | "KC_TRNS",
114 | "KC_TRNS",
115 | "KC_HOME",
116 | "KC_LEFT",
117 | "KC_DOWN",
118 | "KC_RGHT",
119 | "C(KC_PGDN)",
120 | "KC_TRNS",
121 | "KC_F1",
122 | "KC_F2",
123 | "KC_F3",
124 | "KC_F4",
125 | "KC_F5",
126 | "KC_NO",
127 | "KC_NO",
128 | "KC_NO",
129 | "KC_TRNS",
130 | "KC_TRNS",
131 | "KC_TRNS",
132 | "KC_TRNS",
133 | "KC_TRNS",
134 | "KC_F12",
135 | "KC_F11",
136 | "KC_F10",
137 | "KC_TRNS",
138 | "KC_TRNS",
139 | "KC_END",
140 | "A(KC_LGUI)",
141 | "KC_LSFT",
142 | "KC_LCTL",
143 | "KC_LGUI",
144 | "KC_TRNS",
145 | "KC_TRNS",
146 | "KC_F9",
147 | "KC_F8",
148 | "KC_F7",
149 | "KC_F6",
150 | "KC_NO",
151 | "KC_NO",
152 | "KC_NO",
153 | "KC_TRNS",
154 | "KC_TRNS",
155 | "KC_TRNS"
156 | ]
157 | ],
158 | "encoders": []
159 | }
160 |
--------------------------------------------------------------------------------
/etc/fonts.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/etc/fonts.tar.gz
--------------------------------------------------------------------------------
/etc/gifview.desktop:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Type=Application
3 | Version=1.0
4 | Name=gifview
5 | Comment=A command-line command of gifsicle for viewing gifs
6 | Path=/usrs/bin/gifview
7 | Exec=gifview -a
8 | Icon=mpv
9 | Terminal=true
10 | MimeType=image/gif
11 |
--------------------------------------------------------------------------------
/etc/loader.conf:
--------------------------------------------------------------------------------
1 | timeout 0
2 |
--------------------------------------------------------------------------------
/etc/logid.cfg:
--------------------------------------------------------------------------------
1 | devices: ({
2 | name: "MX Master 3S";
3 | dpi: 2000;
4 |
5 | smartshift: {
6 | on: true;
7 | threshold: 255;
8 | default_threshold: 255;
9 | };
10 |
11 | hiresscroll: {
12 | hires: false;
13 | };
14 |
15 | buttons: (
16 |
17 | // Gesture Button
18 | {
19 | cid: 0xc3;
20 | action = {
21 | type: "Gestures";
22 | gestures: ({
23 | direction: "Up";
24 | action = {
25 | type: "Keypress";
26 | keys: ["KEY_F5"];
27 | };
28 | },
29 | {
30 | direction: "Down";
31 | action = {
32 | type: "Keypress";
33 | keys: ["KEY_DELETE"];
34 | };
35 | },
36 | {
37 | direction: "Left";
38 | action = {
39 | type: "Keypress";
40 | keys: ["KEY_LEFTCTRL", "KEY_PAGEUP"];
41 | };
42 | },
43 | {
44 | direction: "Right";
45 | action = {
46 | type: "Keypress";
47 | keys: ["KEY_LEFTCTRL", "KEY_PAGEDOWN"];
48 | }
49 | },
50 | {
51 | direction: "None"
52 | action = {
53 | type: "Keypress";
54 | keys: ["KEY_LEFTCTRL", "KEY_LEFTALT", "KEY_V"];
55 | };
56 | }
57 | );
58 | };
59 | },
60 |
61 | // Top Button
62 | {
63 | cid: 0xc4;
64 | action = {
65 | type: "Keypress";
66 | keys: ["KEY_ENTER"];
67 | };
68 | }
69 | );
70 | })
71 |
--------------------------------------------------------------------------------
/etc/packages.lst:
--------------------------------------------------------------------------------
1 | adobe-source-code-pro-fonts
2 | alsa-utils
3 | amd-ucode
4 | aquamarine
5 | audacity
6 | base
7 | base-devel
8 | bat
9 | bc
10 | beautysh
11 | blender
12 | bluez
13 | bluez-utils
14 | brave-bin
15 | btop
16 | btrfs-progs
17 | caddy
18 | calc
19 | calibre
20 | catppuccin-gtk-theme-macchiato
21 | chromium
22 | clickhouse-client-bin
23 | codespell
24 | cursor-bin
25 | dart-sass
26 | discord
27 | docker
28 | docker-compose
29 | dunst-git
30 | efibootmgr
31 | electron
32 | erdtree
33 | eslint_d
34 | fd
35 | ffmpegthumbnailer
36 | firefox
37 | firefox-developer-edition
38 | fontpreview
39 | fswatch
40 | fuse-overlayfs
41 | fzf
42 | geckodriver
43 | gifsicle
44 | gimp
45 | git
46 | glava
47 | gnu-netcat
48 | go
49 | gputest
50 | grim
51 | gst-plugin-pipewire
52 | gtk-layer-shell
53 | gtk3-demos
54 | guvcview
55 | hunspell
56 | hyprcursor
57 | hyprgraphics
58 | hyprland
59 | hyprland-protocols
60 | hyprland-qt-support
61 | hyprland-qtutils
62 | hyprlang
63 | hyprpicker
64 | hyprutils
65 | hyprwayland-scanner
66 | imagemagick
67 | imv
68 | inkscape
69 | inotify-tools
70 | just
71 | kitty
72 | lazygit
73 | libcanberra
74 | libpulse
75 | libreoffice-still
76 | lightningcss-cli-bin
77 | linux
78 | linux-firmware
79 | linux-headers
80 | logiops
81 | lsd
82 | lsof
83 | lua-format
84 | lua51
85 | luacheck
86 | luarocks
87 | lxappearance
88 | man-db
89 | md5
90 | mediainfo
91 | microsoft-edge-dev-bin
92 | microsoft-edge-stable-bin
93 | mplayer
94 | mpv
95 | mpvpaper-git
96 | ncdu
97 | neofetch
98 | neovim
99 | networkmanager
100 | networkmanager-l2tp
101 | nodejs-live-server
102 | nordic-bluish-accent-standard-buttons-theme
103 | noto-fonts-cjk
104 | noto-fonts-emoji
105 | noto-fonts-extra
106 | npm
107 | nvimpager
108 | nvtop
109 | obs-studio
110 | onetbb
111 | openssh
112 | ouch
113 | pacman-contrib
114 | pandoc-bin
115 | paru
116 | pavucontrol
117 | pipes-rs-bin
118 | pipewire
119 | pipewire-alsa
120 | pipewire-jack
121 | pipewire-pulse
122 | playerctl
123 | polkit-kde-agent
124 | postgresql
125 | prettier
126 | pulsemixer
127 | python-pip
128 | python-pynvim
129 | qbittorrent
130 | rabbitmq
131 | redis
132 | ripgrep
133 | rocm-opencl-runtime
134 | rustup
135 | sd
136 | sddm
137 | shellcheck-bin
138 | shellharden
139 | slack-desktop-wayland
140 | slurp
141 | socat
142 | spotify-launcher
143 | spotifywm-git
144 | sqlc
145 | sqlfluff
146 | starship
147 | strongswan
148 | stylelint-config-recommended
149 | stylua
150 | swaylock
151 | tableplus-bin
152 | tailwindcss-bin
153 | tailwindcss-language-server
154 | taplo-cli
155 | teams
156 | texlive-basic
157 | texlive-bibtexextra
158 | texlive-binextra
159 | texlive-fontsextra
160 | texlive-formatsextra
161 | texlive-games
162 | texlive-humanities
163 | texlive-latexextra
164 | texlive-mathscience
165 | texlive-music
166 | texlive-pictures
167 | texlive-pstricks
168 | texlive-publishers
169 | thunar
170 | tldr
171 | trash-cli
172 | tree
173 | tree-sitter-cli
174 | ttf-fira-code
175 | ttf-hack
176 | ttf-jetbrains-mono
177 | ttf-nerd-fonts-symbols
178 | ttf-nerd-fonts-symbols-common
179 | ttfautohint-cli
180 | unrtf
181 | unzip
182 | usbutils
183 | v4l2loopback-dkms
184 | vial-appimage
185 | vidir
186 | vlc
187 | watchman-bin
188 | webcord-bin
189 | wev
190 | wf-recorder
191 | wget
192 | wireplumber
193 | wl-clipboard
194 | wofi
195 | wofi-emoji
196 | xdg-desktop-portal-gtk
197 | xdg-desktop-portal-hyprland
198 | xdg-desktop-portal-wlr
199 | xplr
200 | yarn
201 | yay-bin
202 | zathura
203 | zathura-pdf-mupdf
204 | zoom
205 | zoxide
206 | zram-generator
207 | zsh
208 |
--------------------------------------------------------------------------------
/etc/sddm.conf.d/autologin.conf:
--------------------------------------------------------------------------------
1 | [Autologin]
2 | User=cullyn
3 | Session=hyprland
4 |
--------------------------------------------------------------------------------
/etc/sddm.conf.d/hyprland.desktop:
--------------------------------------------------------------------------------
1 | [Desktop Entry]
2 | Name=Hyprland
3 | Comment=An intelligent dynamic tiling Wayland compositor
4 | Exec=hyprwrap
5 | Type=Application
6 |
--------------------------------------------------------------------------------
/etc/security/faillock.conf:
--------------------------------------------------------------------------------
1 | # Configuration for locking the user after multiple failed
2 | # authentication attempts.
3 | #
4 | # The directory where the user files with the failure records are kept.
5 | # The default is /var/run/faillock.
6 | # dir = /var/run/faillock
7 | #
8 | # Will log the user name into the system log if the user is not found.
9 | # Enabled if option is present.
10 | # audit
11 | #
12 | # Don't print informative messages.
13 | # Enabled if option is present.
14 | # silent
15 | #
16 | # Don't log informative messages via syslog.
17 | # Enabled if option is present.
18 | # no_log_info
19 | #
20 | # Only track failed user authentications attempts for local users
21 | # in /etc/passwd and ignore centralized (AD, IdM, LDAP, etc.) users.
22 | # The `faillock` command will also no longer track user failed
23 | # authentication attempts. Enabling this option will prevent a
24 | # double-lockout scenario where a user is locked out locally and
25 | # in the centralized mechanism.
26 | # Enabled if option is present.
27 | # local_users_only
28 | #
29 | # Deny access if the number of consecutive authentication failures
30 | # for this user during the recent interval exceeds n tries.
31 | # The default is 3.
32 | deny = 6
33 | #
34 | # The length of the interval during which the consecutive
35 | # authentication failures must happen for the user account
36 | # lock out is n seconds.
37 | # The default is 900 (15 minutes).
38 | fail_interval = 60
39 | #
40 | # The access will be re-enabled after n seconds after the lock out.
41 | # The value 0 has the same meaning as value `never` - the access
42 | # will not be re-enabled without resetting the faillock
43 | # entries by the `faillock` command.
44 | # The default is 600 (10 minutes).
45 | # unlock_time = 600
46 | #
47 | # Root account can become locked as well as regular accounts.
48 | # Enabled if option is present.
49 | # even_deny_root
50 | #
51 | # This option implies the `even_deny_root` option.
52 | # Allow access after n seconds to root account after the
53 | # account is locked. In case the option is not specified
54 | # the value is the same as of the `unlock_time` option.
55 | # root_unlock_time = 900
56 | #
57 | # If a group name is specified with this option, members
58 | # of the group will be handled by this module the same as
59 | # the root account (the options `even_deny_root>` and
60 | # `root_unlock_time` will apply to them.
61 | # By default, the option is not set.
62 | # admin_group =
63 |
--------------------------------------------------------------------------------
/etc/udev/81-bluetooth-hci.rules:
--------------------------------------------------------------------------------
1 | SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", ATTRS{idProduct}=="18ea", ATTR{authorized}="0"
2 |
--------------------------------------------------------------------------------
/etc/udev/92-viia.rules:
--------------------------------------------------------------------------------
1 | KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0666", TAG+="uaccess", TAG+="udev-acl"
--------------------------------------------------------------------------------
/etc/vail_keyboard_layout.vil:
--------------------------------------------------------------------------------
1 | {"version": 1, "uid": -1, "layout": [[["KC_TAB", "KC_Q", "KC_W", "KC_R", "KC_F", "KC_X"], ["KC_ESCAPE", "KC_A", "KC_S", "KC_E", "KC_T", "KC_G"], ["LCTL(KC_LSHIFT)", "KC_LGUI", "KC_B", "KC_C", "KC_D", "KC_COMMA"], [-1, -1, -1, "KC_LCTRL", "FN_MO13", "KC_LSHIFT"], ["KC_DELETE", "RCTL(KC_RSHIFT)", "KC_V", "KC_U", "KC_P", "KC_J"], ["KC_BSPACE", "KC_L", "KC_O", "KC_I", "KC_N", "KC_Y"], ["KC_RALT", "KC_Z", "KC_K", "KC_M", "KC_H", "KC_DOT"], [-1, -1, -1, "KC_ENTER", "FN_MO23", "KC_SPACE"]], [["LCTL(KC_BSPACE)", "KC_SPACE", "LSFT(KC_2)", "LSFT(KC_3)", "LSFT(KC_4)", "KC_F6"], ["KC_BSPACE", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5"], ["LCTL(KC_Y)", "LCTL(KC_Z)", "LCTL(KC_X)", "LCTL(KC_C)", "C_S(KC_V)", "LCTL(KC_V)"], [-1, -1, -1, "KC_TRNS", "FN_MO13", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "LSFT(KC_BSLASH)", "LSFT(KC_5)", "LSFT(KC_7)", "KC_TRNS"], ["KC_TRNS", "KC_0", "KC_9", "KC_8", "KC_7", "KC_6"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "LSFT(KC_QUOTE)", "KC_QUOTE", "KC_TRNS"], [-1, -1, -1, "LSFT(KC_ENTER)", "FN_MO23", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS", "LSFT(KC_1)", "LSFT(KC_MINUS)", "LSFT(KC_SLASH)", "KC_TRNS"], ["KC_TRNS", "LSFT(KC_9)", "LSFT(KC_LBRACKET)", "KC_LBRACKET", "KC_MINUS", "KC_SLASH"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "LSFT(KC_COMMA)", "LSFT(KC_DOT)", "KC_SCOLON"], [-1, -1, -1, "KC_TRNS", "FN_MO13", "LSFT(KC_GRAVE)"], ["KC_TRNS", "KC_TRNS", "LSFT(KC_6)", "LSFT(KC_8)", "LSFT(KC_EQUAL)", "KC_TRNS"], ["KC_TRNS", "LSFT(KC_0)", "LSFT(KC_RBRACKET)", "KC_RBRACKET", "KC_EQUAL", "KC_BSLASH"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "LSFT(KC_QUOTE)", "KC_GRAVE", "LSFT(KC_SCOLON)"], [-1, -1, -1, "KC_TRNS", "FN_MO23", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS", "KC_PGDOWN", "KC_UP", "KC_PGUP", "KC_TRNS"], ["KC_TRNS", "KC_HOME", "KC_LEFT", "KC_DOWN", "KC_RIGHT", "LCTL(KC_PGDOWN)"], ["KC_TRNS", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5"], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_F12", "KC_F11", "KC_F10", "KC_TRNS"], ["KC_TRNS", "KC_END", "LALT(KC_LGUI)", "KC_LSHIFT", "KC_LCTRL", "KC_LGUI"], ["KC_TRNS", "KC_TRNS", "KC_F9", "KC_F8", "KC_F7", "KC_F6"], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS"]]], "encoder_layout": [[], [], [], []], "layout_options": -1, "macro": [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []], "vial_protocol": -1, "via_protocol": 9, "tap_dance": [], "combo": [], "key_override": [], "settings": {}}
--------------------------------------------------------------------------------
/share/dotfiles-banner.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/dotfiles-banner.gif
--------------------------------------------------------------------------------
/share/example-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/example-1.png
--------------------------------------------------------------------------------
/share/example-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/example-2.png
--------------------------------------------------------------------------------
/share/example-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/example-3.png
--------------------------------------------------------------------------------
/share/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/favicon.ico
--------------------------------------------------------------------------------
/share/newtab.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | 行こう
10 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/share/obscure_shadows/ambedo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/obscure_shadows/ambedo.png
--------------------------------------------------------------------------------
/share/obscure_shadows/anemoia.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/obscure_shadows/anemoia.png
--------------------------------------------------------------------------------
/share/obscure_shadows/anoscetia.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/obscure_shadows/anoscetia.png
--------------------------------------------------------------------------------
/share/obscure_shadows/harmonoia.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/obscure_shadows/harmonoia.png
--------------------------------------------------------------------------------
/share/obscure_shadows/idewild.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/obscure_shadows/idewild.png
--------------------------------------------------------------------------------
/share/obscure_shadows/kinspec.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/obscure_shadows/kinspec.png
--------------------------------------------------------------------------------
/share/obscure_shadows/onsim.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/obscure_shadows/onsim.png
--------------------------------------------------------------------------------
/share/obscure_shadows/ringlorn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/obscure_shadows/ringlorn.png
--------------------------------------------------------------------------------
/share/obscure_shadows/solibra.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/obscure_shadows/solibra.png
--------------------------------------------------------------------------------
/share/obscure_shadows/trumspringa.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/obscure_shadows/trumspringa.png
--------------------------------------------------------------------------------
/share/obscure_shadows/vemodalen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/obscure_shadows/vemodalen.png
--------------------------------------------------------------------------------
/share/obscure_shadows/wangare.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/obscure_shadows/wangare.png
--------------------------------------------------------------------------------
/share/obscure_shadows/yuyi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/obscure_shadows/yuyi.png
--------------------------------------------------------------------------------
/share/obscure_shadows/zenosyne.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/obscure_shadows/zenosyne.png
--------------------------------------------------------------------------------
/share/social-preview.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/social-preview.jpg
--------------------------------------------------------------------------------
/share/sounds/discovery.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/sounds/discovery.ogg
--------------------------------------------------------------------------------
/share/sounds/fruit.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/sounds/fruit.ogg
--------------------------------------------------------------------------------
/share/sounds/gems.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/sounds/gems.ogg
--------------------------------------------------------------------------------
/share/sounds/jackpot.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/sounds/jackpot.ogg
--------------------------------------------------------------------------------
/share/sounds/knock.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/sounds/knock.ogg
--------------------------------------------------------------------------------
/share/sounds/moondrop.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/sounds/moondrop.ogg
--------------------------------------------------------------------------------
/share/sounds/reward.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/sounds/reward.ogg
--------------------------------------------------------------------------------
/share/videos/blackhole.webm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/videos/blackhole.webm
--------------------------------------------------------------------------------
/share/videos/dna-vf-blu.webm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/videos/dna-vf-blu.webm
--------------------------------------------------------------------------------
/share/videos/dna.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/videos/dna.mp4
--------------------------------------------------------------------------------
/share/videos/record.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nosvagor/dotfiles/aa0ff1df1157c27b5b3de75c1fb5b1d5d502bc17/share/videos/record.mp4
--------------------------------------------------------------------------------