diff --git a/.bash_exports b/.bash_exports
index f56c124..ae650a9 100644
--- a/.bash_exports
+++ b/.bash_exports
@@ -1,3 +1,24 @@
+# editor
+export EDITOR=nvim
+
+# infinite bash history
+# remove '-1' in both places if your bash version < 4.3
+export HISTFILESIZE=-1
+export HISTSIZE=-1
+
+# writes bash history after every command
+export PROMPT_COMMAND="history -a"
+
+
+# pyenv
+if command -v pyenv >/dev/null 2>&1; then
+ export PYENV_ROOT="$HOME/.pyenv"
+ [[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
+ eval "$(pyenv init - bash)"
+fi
+
+
+# android-sdk
export ANDROID_SDK_ROOT=/opt/android-sdk
export PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin
export PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools
diff --git a/.bashrc b/.bashrc
index 00945bd..4f0d248 100644
--- a/.bashrc
+++ b/.bashrc
@@ -1,21 +1,4 @@
-# Configs
-export EDITOR=nvim
-
-# infinite bash history
-# remove '-1' in both places if your bash version < 4.3
-export HISTFILESIZE=-1
-export HISTSIZE=-1
-
-# writes bash history after every command
-export PROMPT_COMMAND="history -a"
-
-# pyenv
-if command -v pyenv >/dev/null 2>&1; then
- export PYENV_ROOT="$HOME/.pyenv"
- [[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
- eval "$(pyenv init - bash)"
-fi
-
+# additional aliases
if [ -f "$HOME/.bash_private" ]; then
. "$HOME/.bash_private"
fi
@@ -45,13 +28,14 @@ alias t='cd ~/tmp'
alias cleartmp='rm -r ~/tmp/*'
# edit configs aliases
-alias cfghypr='nvim ~/.config/hypr'
-alias cfgkitty='nvim ~/.config/kitty'
-alias cfgnvim='nvim ~/.config/nvim'
-alias cfgrofi='nvim ~/.config/rofi'
-alias cfgwaybar='nvim ~/.config/waybar'
-alias cfgdunst='nvim ~/.config/dunst'
-alias cfgyazi='nvim ~/.config/yazi'
+alias cfghypr='(nvim ~/.config/hypr)'
+alias cfgkitty='(nvim ~/.config/kitty)'
+alias cfgnvim='(nvim ~/.config/nvim)'
+alias cfgrofi='(nvim ~/.config/rofi)'
+alias cfgwaybar='(nvim ~/.config/waybar)'
+alias cfgdunst='(nvim ~/.config/dunst)'
+alias cfgyazi='(nvim ~/.config/yazi)'
+alias cfgfastfetch='(nvim ~/.config/fastfetch)'
# utils aliases
alias y='yazi'
@@ -63,13 +47,16 @@ alias hload='hyprctl reload'
alias shy='start-hyprland'
alias wifi-reload='nmcli r wifi off && nmcli r wifi on'
alias swagger-docs='sudo host-docs'
+alias share='python3 -m http.server'
+alias download='aria2c -x16 -s16'
# kitty aliases
alias ssh='kitty +kitten ssh'
alias edit-in-kitty='kitten edit-in-kitty'
-# yay aliases
+# yay/pacman aliases
alias pzf='yay -Qq | fzf --preview '\''yay -Qil {}'\'' --layout reverse --bind '\''enter:execute(yay -Qil {} | less)'\'' --bind '\''ctrl-r:execute(yay -R {} | less)'\'''
+alias paclean='sudo pacman -Rs '
# fun aliases
alias ff='fastfetch'
diff --git a/.config/hypr/Wallpapers/Arcane/airship.png b/.config/hypr/Wallpapers/Arcane/airship.png
new file mode 100755
index 0000000..9d3fbcd
Binary files /dev/null and b/.config/hypr/Wallpapers/Arcane/airship.png differ
diff --git a/.config/hypr/Wallpapers/Arcane/boom.png b/.config/hypr/Wallpapers/Arcane/boom.png
new file mode 100755
index 0000000..1d4eba3
Binary files /dev/null and b/.config/hypr/Wallpapers/Arcane/boom.png differ
diff --git a/.config/hypr/Wallpapers/Arcane/jinx-chill.png b/.config/hypr/Wallpapers/Arcane/jinx-chill.png
new file mode 100755
index 0000000..fc69a9d
Binary files /dev/null and b/.config/hypr/Wallpapers/Arcane/jinx-chill.png differ
diff --git a/.config/hypr/Wallpapers/Arcane/jinx-fog.png b/.config/hypr/Wallpapers/Arcane/jinx-fog.png
new file mode 100755
index 0000000..ca28e0b
Binary files /dev/null and b/.config/hypr/Wallpapers/Arcane/jinx-fog.png differ
diff --git a/.config/hypr/Wallpapers/Arcane/jinx-grenade.png b/.config/hypr/Wallpapers/Arcane/jinx-grenade.png
new file mode 100755
index 0000000..34fdcce
Binary files /dev/null and b/.config/hypr/Wallpapers/Arcane/jinx-grenade.png differ
diff --git a/.config/hypr/Wallpapers/Arcane/jinx-hexgem.png b/.config/hypr/Wallpapers/Arcane/jinx-hexgem.png
new file mode 100755
index 0000000..dc10a02
Binary files /dev/null and b/.config/hypr/Wallpapers/Arcane/jinx-hexgem.png differ
diff --git a/.config/hypr/Wallpapers/Arcane/jinx-lighter.png b/.config/hypr/Wallpapers/Arcane/jinx-lighter.png
new file mode 100755
index 0000000..f1d67af
Binary files /dev/null and b/.config/hypr/Wallpapers/Arcane/jinx-lighter.png differ
diff --git a/.config/hypr/Wallpapers/Arcane/jinx-poow.png b/.config/hypr/Wallpapers/Arcane/jinx-poow.png
new file mode 100755
index 0000000..25fdc32
Binary files /dev/null and b/.config/hypr/Wallpapers/Arcane/jinx-poow.png differ
diff --git a/.config/hypr/Wallpapers/Arcane/jinx-puff.png b/.config/hypr/Wallpapers/Arcane/jinx-puff.png
new file mode 100755
index 0000000..9511ab1
Binary files /dev/null and b/.config/hypr/Wallpapers/Arcane/jinx-puff.png differ
diff --git a/.config/hypr/Wallpapers/Arcane/jinx-silco.png b/.config/hypr/Wallpapers/Arcane/jinx-silco.png
new file mode 100755
index 0000000..561cd67
Binary files /dev/null and b/.config/hypr/Wallpapers/Arcane/jinx-silco.png differ
diff --git a/.config/hypr/Wallpapers/Arcane/jinx-unbraided.png b/.config/hypr/Wallpapers/Arcane/jinx-unbraided.png
new file mode 100755
index 0000000..5664d58
Binary files /dev/null and b/.config/hypr/Wallpapers/Arcane/jinx-unbraided.png differ
diff --git a/.config/hypr/Wallpapers/gamer.jpg b/.config/hypr/Wallpapers/Unsorted/gamer.jpg
similarity index 100%
rename from .config/hypr/Wallpapers/gamer.jpg
rename to .config/hypr/Wallpapers/Unsorted/gamer.jpg
diff --git a/.config/hypr/Wallpapers/kita.png b/.config/hypr/Wallpapers/Unsorted/kita.png
similarity index 100%
rename from .config/hypr/Wallpapers/kita.png
rename to .config/hypr/Wallpapers/Unsorted/kita.png
diff --git a/.config/hypr/Wallpapers/kotamota2.png b/.config/hypr/Wallpapers/Unsorted/kotamota.png
similarity index 100%
rename from .config/hypr/Wallpapers/kotamota2.png
rename to .config/hypr/Wallpapers/Unsorted/kotamota.png
diff --git a/.config/hypr/Wallpapers/pink.png b/.config/hypr/Wallpapers/Unsorted/pink.png
similarity index 100%
rename from .config/hypr/Wallpapers/pink.png
rename to .config/hypr/Wallpapers/Unsorted/pink.png
diff --git a/.config/hypr/config/arbitary_settings.conf b/.config/hypr/config/arbitary_settings.conf
new file mode 100644
index 0000000..f3e9124
--- /dev/null
+++ b/.config/hypr/config/arbitary_settings.conf
@@ -0,0 +1,10 @@
+# Wallpaper
+env = WALLPAPER,$HOME/.config/hypr/Wallpapers/Arcane/jinx-fog.png
+
+# Lockscreen wallpaper
+env = LOCK_WALLPAPER,$HOME/.config/hypr/Wallpapers/Arcane/airship.png
+env = LOCK_BLUR_PASSES,0 # 0 disable blurring
+
+
+# Custom env to switch between default hyprland workspace switching style and hyprnome style
+env = GNOME_STYLE_WORKSPACES,true
diff --git a/.config/hypr/config/autostart.conf b/.config/hypr/config/autostart.conf
index d5618e4..f2cda4d 100644
--- a/.config/hypr/config/autostart.conf
+++ b/.config/hypr/config/autostart.conf
@@ -1,3 +1,6 @@
+# TODO: testing
+exec-once = bash -c "sleep 1 && for monitor in $(hyprctl monitors -j | jq -r '.[].name'); do hyprctl dispatch workspace 100 && hyprctl dispatch focusworkspaceoncurrentmonitor 100; done"
+
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = uwsm app -- /usr/lib/xdg-desktop-portal-hyprland
@@ -6,9 +9,8 @@ exec-once = uwsm app -- /usr/lib/xdg-desktop-portal-gtk
exec-once = uwsm app -- hypridle
-# exec-once = uwsm app -- hyprpaper
exec-once = uwsm app -- swww-daemon
-exec-once = swww img "$WALLPAPER"
+exec-once = uwsm app -- swww img "$WALLPAPER"
exec-once = uwsm app -- waybar
exec-once = uwsm app -- dunst
diff --git a/.config/hypr/config/binds.conf b/.config/hypr/config/binds.conf
index 72d6fb6..90cb95f 100644
--- a/.config/hypr/config/binds.conf
+++ b/.config/hypr/config/binds.conf
@@ -3,17 +3,19 @@ $mainMod = SUPER
# navigation binds
-bind = $mainMod SHIFT, C, killactive,
-bind = $mainMod SHIFT, M, exit,
-bind = $mainMod SHIFT, V, togglefloating,
+bind = $mainMod SHIFT, C, killactive
+bind = $mainMod SHIFT, M, exit
+
+
+# window special
+bind = $mainMod SHIFT, P, togglefloating
bind = $mainMod, F, fullscreen, 1
bind = $mainMod SHIFT, F, fullscreen, 0
-
# dwindle
-bind = $mainMod, P, pseudo,
-bind = $mainMod, T, togglesplit,
-bind = $mainMod SHIFT, T, swapsplit,
+bind = $mainMod, P, pseudo
+bind = $mainMod, T, layoutmsg, togglesplit
+bind = $mainMod SHIFT, T, layoutmsg, swapsplit
# apps binds
@@ -24,7 +26,7 @@ bind = $mainMod SHIFT, R, exec, .config/rofi/network-manager/run-manager.sh
# copy binds
-bind = $mainMod, V, exec, rofi -modi clipboard:/$HOME/.config/rofi/cliphist-rofi-img.sh -show clipboard -show-icon
+bind = $mainMod, V, exec, rofi -modi clipboard:/$HOME/.config/rofi/clipboard/cliphist-rofi-img.sh -show clipboard -show-icon -config ~/.config/rofi/clipboard-config.rasi
# -config $HOME/.config/rofi/clipboard-config.rasi
bind = $mainMod SHIFT, S, exec, IMG=~/Pictures/Screenshots/$(date +%Y-%m-%d_%H-%m-%s).png && grim -g "$(slurp)" $IMG && wl-copy < $IMG
bind = , PRINT, exec, grim - | wl-copy
@@ -102,41 +104,26 @@ bindm = $mainMod, mouse:273, resizewindow
bindm = $mainMod SHIFT, mouse:272, resizewindow
+# Resize with keyboard
+bind = $mainMod CTRL, h, resizeactive, -30 0
+bind = $mainMod CTRL, l, resizeactive, 30 0
+bind = $mainMod CTRL, j, resizeactive, 0 30
+bind = $mainMod CTRL, k, resizeactive, 0 -30
+
+
# Switch workspaces
-bind = $mainMod, A, focusworkspaceoncurrentmonitor, r-1
-bind = $mainMod, D, focusworkspaceoncurrentmonitor, r+1
+bind = $mainMod, A, exec, .config/hypr/scripts/workspace-handler.sh change previous
+bind = $mainMod, D, exec, .config/hypr/scripts/workspace-handler.sh change next
+bind = $mainMod CTRL, A, focusworkspaceoncurrentmonitor, r-1
+bind = $mainMod CTRL, D, focusworkspaceoncurrentmonitor, r+1
-# Move active window to the next or previous workspace
-bind = $mainMod SHIFT, A, movetoworkspace, r-1
-bind = $mainMod SHIFT, D, movetoworkspace, r+1
+# Move active window between workspaces
+bind = $mainMod SHIFT, A, exec, .config/hypr/scripts/workspace-handler.sh move previous
+bind = $mainMod SHIFT, D, exec, .config/hypr/scripts/workspace-handler.sh move next
+bind = $mainMod CTRL SHIFT, A, movetoworkspace, r-1
+bind = $mainMod CTRL SHIFT, D, movetoworkspace, r+1
# Swap worlspaces between monitors
bind = $mainMod, TAB, swapactiveworkspaces, 1 0
-
-
-# Switch workspaces with mainMod + [0-9]
-bind = $mainMod, 1, focusworkspaceoncurrentmonitor, 1
-bind = $mainMod, 2, focusworkspaceoncurrentmonitor, 2
-bind = $mainMod, 3, focusworkspaceoncurrentmonitor, 3
-bind = $mainMod, 4, focusworkspaceoncurrentmonitor, 4
-bind = $mainMod, 5, focusworkspaceoncurrentmonitor, 5
-bind = $mainMod, 6, focusworkspaceoncurrentmonitor, 6
-bind = $mainMod, 7, focusworkspaceoncurrentmonitor, 7
-bind = $mainMod, 8, focusworkspaceoncurrentmonitor, 8
-bind = $mainMod, 9, focusworkspaceoncurrentmonitor, 9
-bind = $mainMod, 0, focusworkspaceoncurrentmonitor, 0
-
-
-# Move active window to a workspace with mainMod + SHIFT + [0-9]
-bind = $mainMod SHIFT, 1, movetoworkspace, 1
-bind = $mainMod SHIFT, 2, movetoworkspace, 2
-bind = $mainMod SHIFT, 3, movetoworkspace, 3
-bind = $mainMod SHIFT, 4, movetoworkspace, 4
-bind = $mainMod SHIFT, 5, movetoworkspace, 5
-bind = $mainMod SHIFT, 6, movetoworkspace, 6
-bind = $mainMod SHIFT, 7, movetoworkspace, 7
-bind = $mainMod SHIFT, 8, movetoworkspace, 8
-bind = $mainMod SHIFT, 9, movetoworkspace, 9
-bind = $mainMod SHIFT, 0, movetoworkspace, 0
diff --git a/.config/hypr/config/env.conf b/.config/hypr/config/env.conf
index 7f0fcb7..f6d24b0 100644
--- a/.config/hypr/config/env.conf
+++ b/.config/hypr/config/env.conf
@@ -12,6 +12,7 @@ exec = gsettings set org.gnome.desktop.interface gtk-theme "adw-gtk3-dark"
env = XCURSOR_SIZE,24
env = ELECTRON_OZONE_PLATFORM_HINT,wayland
+env = MOZ_ENABLE_WAYLAND,1
# env = chrome,--enable-features=TouchpadOverscrollHistoryNavigation
env = GDK_SCALE,1
diff --git a/.config/hypr/config/style.conf b/.config/hypr/config/style.conf
index c2673be..49b5398 100644
--- a/.config/hypr/config/style.conf
+++ b/.config/hypr/config/style.conf
@@ -1,3 +1,4 @@
+# Splashes
ecosystem {
no_update_news = true
no_donation_nag = true
@@ -5,24 +6,31 @@ ecosystem {
misc {
disable_hyprland_logo = true
- disable_splash_rendering = true
-
+ disable_splash_rendering = true
}
+# General config
general {
gaps_in = 3
gaps_out = 5
border_size = 2
- col.active_border = rgba(33ccffee) rgba(bd93f9ee) 45deg
+ col.active_border = rgba(6aa0d2ff) rgba(cb7194ff) 24deg
col.inactive_border = rgba(595959aa)
layout = dwindle
}
+dwindle {
+ pseudotile = yes
+ preserve_split = yes
+}
+
cursor {
inactive_timeout = 2
}
+
+# Window styling
decoration {
rounding = 10
blur {
@@ -67,13 +75,6 @@ animations {
# animation = workspaces, 1, 6, myBezier, slide
}
-
-dwindle {
- pseudotile = yes
- preserve_split = yes
-}
-
-
group {
col.border_active = rgba(33ccffee) rgba(bd93f9ee) 45deg
groupbar {
diff --git a/.config/hypr/config/wallpaper.conf b/.config/hypr/config/wallpaper.conf
deleted file mode 100644
index 0cdc21b..0000000
--- a/.config/hypr/config/wallpaper.conf
+++ /dev/null
@@ -1 +0,0 @@
-env = WALLPAPER_PATH,$HOME/.config/hypr/Wallpapers/kotamota2.png
diff --git a/.config/hypr/config/window_rules.conf b/.config/hypr/config/window_rules.conf
index 4611e15..f93f3f0 100644
--- a/.config/hypr/config/window_rules.conf
+++ b/.config/hypr/config/window_rules.conf
@@ -17,6 +17,7 @@ windowrule = tag +tools, match:class ^([Dd][Bb]eaver|[Dd][Bb]eaver-ce|[Dd][Bb]ea
windowrule = opacity 0.85 0.75, match:tag tools*
+
# jetbrains
windowrule = no_initial_focus on, match:class (jetbrains-idea), match:title ^win.*
windowrule = no_initial_focus on, match:class (jetbrains-studio), match:title ^win(.*)
@@ -24,6 +25,12 @@ windowrule = no_initial_focus on, match:class (jetbrains-goland), match:title ^
windowrule = no_initial_focus on, match:class (jetbrains-toolbox), match:float yes
windowrule = no_initial_focus on, match:class (jetbrains-goland), match:float yes, match:title ^$, match:initial_title ^$
+
# other
# windowrule = float, center, match:class ^(xfce-polkit)$
# windowrule = float, center, match:class ^(file-roller)$
+
+
+# Permanent
+# windowrule = size 800 400,match:float yes
+# set
diff --git a/.config/hypr/docs/colors.md b/.config/hypr/docs/colors.md
new file mode 100644
index 0000000..3bdbace
--- /dev/null
+++ b/.config/hypr/docs/colors.md
@@ -0,0 +1,40 @@
+## Sources
+https://colorscheme.ru/color-converter.html
+http://maketintsandshades.com/#colors=0661b4,a9124d&hashtag=0&steps=10
+https://meyerweb.com/eric/tools/color-blend/#0661B4:A9124D:4:hex
+
+## Original colors:
+### Jinx Blue
+`#0661b4`
+
+### Vi Red
+`#a9124d`
+
+
+## Gradients:
+### Jinx Blue -> Vi Red
+`#0661b4`
+`#27519f`
+`#47418b`
+`#683276`
+`#882262`
+`#a9124d`
+
+### Jinx Blue ^
+`#0661b4`
+`#3881c3`
+`#6aa0d2`
+`#9bc0e1`
+`#cddff0`
+
+### Vi Red ^
+`#a9124d`
+`#ba4171`
+`#cb7194`
+`#dda0b8`
+`#eed0db`
+
+
+## Most used:
+Blue: `#6aa0d2`
+Red: `#cb7194`
diff --git a/.config/hypr/hyprlock.conf b/.config/hypr/hyprlock.conf
index 85f2a91..6c1ebb2 100644
--- a/.config/hypr/hyprlock.conf
+++ b/.config/hypr/hyprlock.conf
@@ -1,10 +1,16 @@
+# General
general {
fail_timeout = 300
}
+animations {
+ animation = fadeIn, 0
+ animation = fadeOut, 0
+}
+
background {
- path = $HOME/.config/hypr/Wallpapers/kita.png
- blur_passes = 1 # 0 disables blurring
+ path = $LOCK_WALLPAPER
+ blur_passes = $LOCK_BLUR_PASSES
blur_size = 3
noise = 0.0117
contrast = 0.8916
@@ -13,34 +19,50 @@ background {
vibrancy_darkness = 0.0
}
-input-field {
- size = 250, 60
- outline_thickness = 4
- dots_size = 0.2
- dots_spacing = 0.2
- dots_center = true
- outer_color = rgba(51, 204, 255, 0.93)
- inner_color = rgba(10, 0, 30, 0)
- font_color = rgb(200, 200, 200)
- fade_on_empty = false
- font_family = JetBrains Mono Nerd Font Mono
- placeholder_text = Мур Кусь
- hide_input = false
- position = 0, -280
- halign = center
- valign = center
-}
+# Positioning
+# Time
label {
text = cmd[update:1000] echo "$(date +"%R")"
color = $foreground
font_size = 60
font_family = JetBrains Mono Nerd Font Mono ExtraBold
- position = 0, -180
- halign = center
+ position = 210, 240
+ halign = left
valign = center
}
+# Date
+label {
+ text = cmd[update:1000] echo -e "$(date +"%A, %B %d")"
+ color = rgba(216, 222, 233, 0.75)
+ font_size = 20
+ font_family = SF Pro Display Bold
+ position = 202, 175
+ halign = left
+ valign = center
+}
+
+# Input
+input-field {
+ size = 350, 55
+ outline_thickness = 2
+ dots_size = 0.2
+ dots_spacing = 0.2
+ dots_center = true
+ outer_color = rgba(56, 129, 195, 0.94)
+ inner_color = rgba(10, 0, 30, 0.3)
+ font_color = rgb(200, 200, 200)
+ fade_on_empty = false
+ font_family = JetBrains Mono Nerd Font Mono
+ placeholder_text = Poow
+ hide_input = false
+ position = 160, 40
+ halign = left
+ valign = center
+}
+
+# Player (TODO: fix it)
label {
text = cmd[update:1000] echo "$($HOME/.config/hypr/scripts/player-status.sh)"
color = $foreground
@@ -51,7 +73,3 @@ label {
valign = bottom
}
-animations {
- animation = fadeIn, 0
- animation = fadeOut, 0
-}
diff --git a/.config/hypr/scripts/workspace-handler.sh b/.config/hypr/scripts/workspace-handler.sh
new file mode 100755
index 0000000..2aa7801
--- /dev/null
+++ b/.config/hypr/scripts/workspace-handler.sh
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+# Usage: workspace-handler.sh
+# mode: "change" | "move"
+# direction: "next" | "previous"
+
+mode="$1"
+direction="$2"
+
+if [[ -z "$mode" || -z "$direction" ]]; then
+ exit 1
+fi
+
+if [[ "$mode" != "change" && "$mode" != "move" ]]; then
+ exit 1
+fi
+
+if [[ "$direction" != "next" && "$direction" != "previous" ]]; then
+ exit 1
+fi
+
+if [[ "$GNOME_STYLE_WORKSPACES" == "true" ]] && command -v hyprnome &>/dev/null; then
+ # Hyprnome style
+ if [[ "$mode" == "change" ]]; then
+ if [[ "$direction" == "previous" ]]; then
+ exec hyprnome --previous
+ else
+ exec hyprnome
+ fi
+ else
+ if [[ "$direction" == "previous" ]]; then
+ exec hyprnome --previous --move
+ else
+ exec hyprnome --move
+ fi
+ fi
+else
+ # Hyprland style
+ if [[ "$mode" == "change" ]]; then
+ if [[ "$direction" == "previous" ]]; then
+ exec hyprctl dispatch focusworkspaceoncurrentmonitor r-1
+ else
+ exec hyprctl dispatch focusworkspaceoncurrentmonitor r+1
+ fi
+ else
+ if [[ "$direction" == "previous" ]]; then
+ exec hyprctl dispatch movetoworkspace r-1
+ else
+ exec hyprctl dispatch movetoworkspace r+1
+ fi
+ fi
+fi
diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf
index ca996a4..d1131d4 100644
--- a/.config/kitty/kitty.conf
+++ b/.config/kitty/kitty.conf
@@ -1,78 +1,38 @@
linux_display_server wayland
-# wayland_titlebar_color background
+# Coloring
+# BEGIN_KITTY_THEME
+# Catppuccin-Mocha
+include current-theme.conf
+# END_KITTY_THEME
+
+# The color for highlighting URLs on mouse-over
+url color #5de4c7
+
+
+# Fonts
font_family JetBrainsMono Nerd Font
bold_font auto
italic_font auto
bold_italic_font auto
-
font_size 14
-background_opacity 0.4
-
disable_ligatures always
-# window settings
+
+# Styling
+# Opacity
+background_opacity 0.4
+
+# Curor trail
+cursor_trail 4
+cursor_trail_decay 0.1 0.4
+
+# Window settings
initial_window_width 95c
initial_window_height 35c
window_padding_width 20
confirm_os_window_close 0
-# Upstream colors {{{
-
-# Special
-# background #14151e
-# foreground #98b0d3
-
-# Black
-# color0 #151720
-# color8 #4f5572
-
-# Red
-# color1 #dd6777
-# color9 #e26c7c
-
-# Green
-# color2 #90ceaa
-# color10 #95d3af
-
-# Yellow
-# color3 #ecd3a0
-# color11 #f1d8a5
-
-# Blue
-# color4 #86aaec
-# color12 #8baff1
-
-# Magenta
-# color5 #c296eb
-# color13 #c79bf0
-
-# Cyan
-# color6 #93cee9
-# color14 #98d3ee
-
-# White
-# color7 #cbced3
-# color15 #d0d3d8
-
-# Cursor
-# cursor #cbced3
-# cursor_text_color #a5b6cf
-
-# Selection highlight
-# selection_foreground #a5b6cf
-# selection_background #1c1e27
-
-
-# The color for highlighting URLs on mouse-over
-# url_color #9ece6a
-url color #5de4c7
-
-# Window borders
-# active_border_color #3d59a1
-# inactive_border_color #101014
-# bell_border_color #fffac2
-
# Tab bar
tab_bar_style fade
tab_fade 1
@@ -84,18 +44,12 @@ active_tab_font_style bold
inactive_tab_font_style bold
# tab_bar_background #101014
-# Title bar
-# macos_titlebar_color #16161e
-
-# Keyboard bindings
-map kitty_mod+t new_tab_with_cwd
-map ctrl+v paste_from_clipboard
+# Binds
# Mouse bindings
mouse_map b4 press grabbed,ungrabbed send_key ctrl+o
mouse_map b5 press grabbed,ungrabbed send_key ctrl+shift+i
-# BEGIN_KITTY_THEME
-# Catppuccin-Mocha
-include current-theme.conf
-# END_KITTY_THEME
+# Keyboard bindings
+map kitty_mod+t new_tab_with_cwd
+map ctrl+v paste_from_clipboard
diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua
index 4f2768f..b77d42c 100644
--- a/.config/nvim/init.lua
+++ b/.config/nvim/init.lua
@@ -2,4 +2,4 @@ require("config.lazy")
require("config.config")
require("config.options")
require("config.key_binds")
-require("config.osc52")
+require("config.clipboard")
diff --git a/.config/nvim/lua/config/clipboard.lua b/.config/nvim/lua/config/clipboard.lua
new file mode 100644
index 0000000..9c789de
--- /dev/null
+++ b/.config/nvim/lua/config/clipboard.lua
@@ -0,0 +1,9 @@
+vim.o.clipboard = "unnamedplus"
+-- vim.api.nvim_create_autocmd("TextYankPost", {
+-- callback = function()
+-- local copy_to_unnamedplus = require("vim.ui.clipboard.osc52").copy("+")
+-- copy_to_unnamedplus(vim.v.event.regcontents)
+-- local copy_to_unnamed = require("vim.ui.clipboard.osc52").copy("*")
+-- copy_to_unnamed(vim.v.event.regcontents)
+-- end,
+-- })
diff --git a/.config/nvim/lua/config/key_binds.lua b/.config/nvim/lua/config/key_binds.lua
index 5e9780b..6a097f5 100644
--- a/.config/nvim/lua/config/key_binds.lua
+++ b/.config/nvim/lua/config/key_binds.lua
@@ -1,18 +1,34 @@
+-- Also check plugins/neo-tree.lua for binds
vim.cmd([[
- tnoremap h
- tnoremap k
- tnoremap l
- tnoremap j
+ tnoremap h
+ tnoremap k
+ tnoremap l
+ tnoremap j
- nnoremap h
- nnoremap k
- nnoremap l
- nnoremap j
+ " Moving between windows
+ nnoremap h
+ nnoremap k
+ nnoremap l
+ nnoremap j
- nnoremap @q
- nnoremap
- vnoremap
- vnoremap e :!sh
+ " I don't remember
+ nnoremap
+ vnoremap
- nnoremap ' @q
+ " Paste shell command output
+ vnoremap e :!sh
+
+ " Quick qq macros
+ nnoremap ' @q
+
+ " Clear search
+ nnoremap @/ :noh
+
+ " Copy relative path to clipboard (from infile)
+ nnoremap :let @+ = expand("%:f")
+ " Copy filename to clipboard (from infile)
+ nnoremap :let @+ = expand("%:t")
+
+ " Delete trailing spaces
+ nnoremap w :let _s=@/:%s/\s\+$//e:let @/=_s:nohl
]])
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index 7e5f3d8..e92ceb2 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -1,7 +1,4 @@
-vim.opt.clipboard = "unnamedplus"
-
vim.opt.fixeol = true
-
vim.opt.list = true
vim.opt.listchars = {
trail = "·",
diff --git a/.config/nvim/lua/config/osc52.lua b/.config/nvim/lua/config/osc52.lua
deleted file mode 100644
index e0218c5..0000000
--- a/.config/nvim/lua/config/osc52.lua
+++ /dev/null
@@ -1,27 +0,0 @@
-vim.g.osc_enabled = false
-vim.api.nvim_create_user_command("ToggleOsc", function(input)
- if not vim.g.osc_enabled then
- vim.g.clipboard = {
- name = "osc 52",
- copy = {
- ["+"] = require("vim.ui.clipboard.osc52").copy("+"),
- ["*"] = require("vim.ui.clipboard.osc52").copy("*"),
- },
- paste = {
- ["+"] = function()
- return { vim.fn.split(vim.fn.getreg(""), "\n"), vim.fn.getregtype("") }
- end,
- ["*"] = function()
- return { vim.fn.split(vim.fn.getreg(""), "\n"), vim.fn.getregtype("") }
- end,
- },
- }
- vim.g.osc_enabled = true
- vim.api.nvim_echo({ { "OSC 52 Clipboard Enabled", "Normal" } }, true, {})
- else
- vim.g.clipboard = nil
- vim.g.osc_enabled = false
- vim.api.nvim_echo({ { "OSC 52 Clipboard Disabled", "Normal" } }, true, {})
- end
-end, {})
-vim.keymap.set("n", "H", vim.cmd.ToggleOsc, { desc = "Toggle OSC 52 clipboard" })
diff --git a/.config/nvim/lua/plugins/neo-tree.lua b/.config/nvim/lua/plugins/neo-tree.lua
index a6c7ff0..b300cfd 100644
--- a/.config/nvim/lua/plugins/neo-tree.lua
+++ b/.config/nvim/lua/plugins/neo-tree.lua
@@ -9,6 +9,9 @@ return {
local tree = require("neo-tree")
tree.setup({
+ clipboard = {
+ sync = "universal",
+ },
document_symbols = {
custom_kinds = {},
},
@@ -19,8 +22,31 @@ return {
["h"] = "close_node",
[""] = "open",
[""] = "close_node",
+ ["C"] = "convert_to_directory",
},
},
+ commands = {
+ convert_to_directory = function(state)
+ local node = state.tree:get_node()
+ local path = node.path
+
+ if node.type ~= "file" then
+ print("Node is not a file")
+ return
+ end
+
+ local confirm = vim.fn.confirm("Convert " .. node.name .. " to directory?", "&Yes\n&No", 2)
+ if confirm ~= 1 then
+ return
+ end
+
+ vim.fn.delete(path)
+ vim.fn.mkdir(path, "p")
+
+ require("neo-tree.sources.manager").refresh(state.name)
+ print("Converted to directory: " .. path)
+ end,
+ },
})
vim.keymap.set("n", "", "Neotree toggle")
end,
diff --git a/.config/rofi/clipboard-config.rasi b/.config/rofi/clipboard-config.rasi
index 83701b6..26c13cd 100644
--- a/.config/rofi/clipboard-config.rasi
+++ b/.config/rofi/clipboard-config.rasi
@@ -1,22 +1,26 @@
// Configuration
configuration {
- modi: "drun,run,filebrowser,window";
+ modi: "clipboard";
show-icons: true;
- display-drun: " ";
- display-run: " ";
- display-filebrowser: " ";
- display-window: " ";
+ display-clipboard: " Clipboard";
drun-display-format: "{name}";
window-format: "{w} · {c} · {t}";
// binds
- // kb-row-up: "Up,Control+k,Shift+Tab,Shift+ISO_Left_Tab";
- // kb-row-down: "Down,Control+j";
+ kb-row-up: "Up,Control+k,Shift+Tab,Shift+ISO_Left_Tab";
+ kb-row-down: "Down,Control+j";
+ kb-accept-entry: "Control+m,Return,KP_Enter";
+ terminal: "mate-terminal";
+ kb-remove-to-eol: "Control+Shift+e";
+ kb-mode-complete: "Control+Shift+t";
+ kb-mode-next: "Shift+Right,Control+Tab,Control+l";
+ kb-mode-previous: "Shift+Left,Control+Shift+Tab,Control+h";
+ kb-remove-char-back: "BackSpace";
}
// Global Properties
-@import "./colors.rasi"
-@import "./fonts.rasi"
+@import "./themes/colors.rasi"
+@import "./themes/fonts.rasi"
* {
border-color: var(border);
diff --git a/.config/rofi/cliphist-rofi-img.sh b/.config/rofi/clipboard/cliphist-rofi-img.sh
similarity index 100%
rename from .config/rofi/cliphist-rofi-img.sh
rename to .config/rofi/clipboard/cliphist-rofi-img.sh
diff --git a/.config/rofi/config.rasi b/.config/rofi/config.rasi
index 45739df..dd756c4 100644
--- a/.config/rofi/config.rasi
+++ b/.config/rofi/config.rasi
@@ -1,10 +1,8 @@
// Configuration
configuration {
- modi: "drun,run,filebrowser,window";
+ modi: "drun,window";
show-icons: false;
display-drun: " ";
- display-run: " ";
- display-filebrowser: " ";
display-window: " ";
drun-display-format: "{name}";
window-format: "{w} · {c} · {t}";
@@ -22,8 +20,8 @@ configuration {
}
// Global Properties
-@import "./colors.rasi"
-@import "./fonts.rasi"
+@import "./themes/colors.rasi"
+@import "./themes/fonts.rasi"
* {
border-color: var(border);
diff --git a/.config/rofi/rofi.cfg b/.config/rofi/rofi.cfg
deleted file mode 100644
index 0536cc2..0000000
--- a/.config/rofi/rofi.cfg
+++ /dev/null
@@ -1,9 +0,0 @@
-# rofi.kb-row-up: Up,Control+k,Shift+Tab,Shift+ISO_Left_Tab
-# rofi.kb-row-down: Down,Control+j
-rofi.kb-accept-entry: Control+m,Return,KP_Enter
-rofi.terminal: mate-terminal
-rofi.kb-remove-to-eol: Control+Shift+e
-rofi.kb-mode-complete: Control+Shift+t
-rofi.kb-mode-next: Shift+Right,Control+Tab,Control+l
-rofi.kb-mode-previous: Shift+Left,Control+Shift+Tab,Control+h
-rofi.kb-remove-char-back: BackSpace
diff --git a/.config/rofi/colors.rasi b/.config/rofi/themes/colors.rasi
similarity index 76%
rename from .config/rofi/colors.rasi
rename to .config/rofi/themes/colors.rasi
index 736c7bb..23d6720 100644
--- a/.config/rofi/colors.rasi
+++ b/.config/rofi/themes/colors.rasi
@@ -3,8 +3,8 @@
sel-foreground: #111218;
background-alt: #282B3C00;
foreground: #DADAFF;
- selected: #87B2F6;
+ selected: #6aa0d2;
active: #33CCFF;
urgent: #50FA7B;
- border: #87B2F6;
+ border: #0661b4;
}
diff --git a/.config/rofi/fonts.rasi b/.config/rofi/themes/fonts.rasi
similarity index 100%
rename from .config/rofi/fonts.rasi
rename to .config/rofi/themes/fonts.rasi
diff --git a/.config/waybar/config.jsonc b/.config/waybar/config.jsonc
index a8ea3ff..fe0cc75 100644
--- a/.config/waybar/config.jsonc
+++ b/.config/waybar/config.jsonc
@@ -1,19 +1,23 @@
{
"position": "bottom",
"layer": "top",
- "modules-left": ["group/workspaces-group", "custom/media"],
- "modules-center": [],
- "modules-right": [
+ "modules-left": [
+ "~/.config/waybar/modules/tray.jsonc",
"tray",
+ "custom/media",
+ ],
+ "modules-center": [
+ "group/workspaces-group",
+ ],
+ "modules-right": [
"group/pulseaudio-group",
- "group/network-group",
"group/power-group",
+ "group/network-group",
"clock",
],
"include": [
"~/.config/waybar/modules/workspaces.jsonc",
"~/.config/waybar/modules/network.jsonc",
- "~/.config/waybar/modules/tray.jsonc",
"~/.config/waybar/modules/pulseaudio.jsonc",
"~/.config/waybar/modules/power.jsonc",
"~/.config/waybar/modules/mediaplayer.jsonc",
diff --git a/.config/waybar/modules/add/waybar-date.sh b/.config/waybar/modules/add/waybar-date.sh
deleted file mode 100755
index b6924cf..0000000
--- a/.config/waybar/modules/add/waybar-date.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/bash
-date +"%a %d"
diff --git a/.config/waybar/modules/clock.jsonc b/.config/waybar/modules/clock.jsonc
index 04a0d10..2b9f0f0 100644
--- a/.config/waybar/modules/clock.jsonc
+++ b/.config/waybar/modules/clock.jsonc
@@ -1,5 +1,23 @@
{
"clock": {
- "format": " {:%H:%M}",
+ "format": "{:%H:%M}",
+ "tooltip-format": "{calendar}",
+ "calendar": {
+ "mode": "month",
+ "mode-mon-col": 3,
+ "on-scroll": 1,
+ "on-click-right": "mode",
+ "format": {
+ "months": "{}",
+ "weekdays": "{}",
+ "today": "{}"
+ }
+ },
+ "actions": {
+ "on-click": "shift_reset",
+ "on-click-right": "mode",
+ "on-scroll-up": "shift_up",
+ "on-scroll-down": "shift_down"
+ },
},
}
diff --git a/.config/waybar/modules/language.jsonc b/.config/waybar/modules/language.jsonc
deleted file mode 100644
index 65727ba..0000000
--- a/.config/waybar/modules/language.jsonc
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "hyprland/language": {
- "format": " {}",
- "format-en": "en",
- "format-ru": "ru",
- },
-}
diff --git a/.config/waybar/modules/network.jsonc b/.config/waybar/modules/network.jsonc
index 852029e..d2003e9 100644
--- a/.config/waybar/modules/network.jsonc
+++ b/.config/waybar/modules/network.jsonc
@@ -5,19 +5,19 @@
},
"bluetooth": {
- "format": "",
- "format-disabled": "Bd",
- "format-connected": " ",
+ "format": "",
+ "format-disabled": "",
+ "format-connected": "",
"on-click": "kitty bluetui",
"tooltip-format": "{device_enumerate}",
"tooltip-format-enumerate-connected": "{device_alias}",
},
"network": {
"format": "{ifname}",
- "format-disabled": "Wd",
- "format-wifi": " ",
- "format-ethernet": " ",
- "format-disconnected": " ",
+ "format-disabled": "",
+ "format-wifi": "",
+ "format-ethernet": "",
+ "format-disconnected": "",
"tooltip-format-wifi": "{essid}",
"tooltip-format-ethernet": "{ipaddr}",
"on-click": "~/.config/rofi/network-manager/run_manager.sh",
diff --git a/.config/waybar/modules/power.jsonc b/.config/waybar/modules/power.jsonc
index 46696fd..8bba755 100644
--- a/.config/waybar/modules/power.jsonc
+++ b/.config/waybar/modules/power.jsonc
@@ -6,15 +6,16 @@
"battery": {
"format": "{icon}",
- "format-icons": [" ", " ", " ", " ", " "],
- "format-charging": " ",
+ // "format-icons": [" ", " ", " ", " ", " "],
+ "format-icons": ["", "", "", "", "", "", "", "", "", "", ""],
+ "format-charging": " {capacity}%",
"tooltip-format": "{capacity}% {timeTo}",
},
"backlight": {
"device": "intel_backlight",
"format": "{icon}",
"format-icons": ["", "", "", "", "", "", "", "", ""],
- "smooth-scrolling-threshold": 1, // This value was tested using a trackpad, it should be lowered if using a mouse.
+ "smooth-scrolling-threshold": 1,
"on-scroll-down": "brightnessctl --class='backlight' set 5%+",
"on-scroll-up": "brightnessctl --class='backlight' set 5%-",
"on-click": "python $HOME/.config/hypr/scripts/swww.py",
diff --git a/.config/waybar/modules/tray.jsonc b/.config/waybar/modules/tray.jsonc
index eea7f9b..ae15254 100644
--- a/.config/waybar/modules/tray.jsonc
+++ b/.config/waybar/modules/tray.jsonc
@@ -2,11 +2,9 @@
"tray": {
"icon-size": 14,
"spacing": 10,
+ "show-passive-items": true,
"icons": {
"Spotify": " ",
- "Steam": "",
- "Telegram Desktop": "",
- "Mattermost Desktop": "",
},
},
}
diff --git a/.config/waybar/modules/workspaces.jsonc b/.config/waybar/modules/workspaces.jsonc
index 61fc35f..f1733a4 100644
--- a/.config/waybar/modules/workspaces.jsonc
+++ b/.config/waybar/modules/workspaces.jsonc
@@ -12,18 +12,18 @@
"empty": "",
},
"all-outputs": false,
- "on-scroll-up": "hyprctl dispatch focusworkspaceoncurrentmonitor r-1",
- "on-scroll-down": "hyprctl dispatch focusworkspaceoncurrentmonitor r+1",
+ "on-scroll-up": "workspace-change next",
+ "on-scroll-down": "workspace-change previous",
"format-icons": {
- "active": "",
- "default": "",
+ "active": "", //
+ "default": "", //
},
},
"hyprland/windowcount": {
- "format": "{}",
+ "format": "{icon}",
"format-empty": "{}",
"format-windowed": "{}",
"separate-outputs": true,
- "on-click": "rofi -show window",
+ "on-click": "rofi -show",
},
}
diff --git a/.config/waybar/style.css b/.config/waybar/style.css
index be226d9..7cf9439 100644
--- a/.config/waybar/style.css
+++ b/.config/waybar/style.css
@@ -1,3 +1,11 @@
+/* Colors */
+@define-color primary_fg rgba(205, 223, 240, 1);
+@define-color primary_bg rgba(44, 44, 44, 0.42);
+@define-color primary_bd rgba(205, 223, 240, 0.3);
+@define-color tooltip_bg rgba(32, 33, 44, 0.6);
+
+
+/* General */
* {
border: none;
font-family: "JetBrains Mono Nerd Font";
@@ -5,78 +13,126 @@
font-weight: 700;
font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
min-height: 20px;
- color: #c0caf5;
+ color: @primary_fg;
}
window#waybar {
background: transparent;
}
+
+/* Common */
tooltip,
#clock,
#tray,
-#language,
#custom-media,
#network-group,
#pulseaudio-group,
#workspaces-group,
#power-group {
- border: 2px solid rgba(192, 202, 245, 0.5);
+ border: 2px solid @primary_bd;
border-radius: 11px;
- background-color: rgba(32, 33, 44, 0.42);
+ background-color: @primary_bg;
padding-top: 1px;
margin-bottom: 2px;
margin-top: 1px;
}
+
+/* Tooltip */
tooltip {
- background: rgba(32, 33, 44, 0.82);
+ background: @tooltip_bg;
}
tooltip label {
}
-#hyprland-group,
-#custom-media {
+
+/* Groups */
+#hyprland-group {
margin-left: 5px;
}
-#clock,
-#power-group,
-#network-group,
-#pulseaudio-group,
-#tray {
+#pulseaudio-group {
margin-right: 5px;
}
-#pulseaudio,
-#custom-media,
-#network,
-#battery,
-#clock,
-#tray,
-#language,
-#backlight,
-#bluetooth,
-#windowcount {
+#power-group {
+ margin-right: 5px;
+}
+
+#network-group {
+ margin-right: 5px;
+}
+
+
+/* Parts */
+#tray * {
+ /* margin-right: 5px; */
+ padding-left: 4px;
+ padding-right: 4px;
+}
+
+#tray {
+ margin-right: 5px;
+ padding-left: 8px;
+ padding-right: 8px;
+}
+
+#custom-media {
+ margin-left: 5px;
padding-left: 12px;
padding-right: 12px;
}
+
+#windowcount {
+ padding-left: 12px;
+ padding-right: 4px;
+}
+
#workspaces button {
padding-left: 4px;
- padding-left: 4px;
}
-#windowcount {
- padding-right: 4px;
-}
-#network,
-#battery {
- padding-left: 6px;
-}
-#workspaces,
-#pulseaudio.input,
-#backlight,
-#bluetooth {
+#workspaces {
padding-right: 6px;
}
+
+
+#pulseaudio {
+ padding-left: 8px;
+ padding-right: 6px;
+}
+
+#pulseaudio.input {
+ padding-right: 6px;
+}
+
+
+#backlight {
+ padding-left: 12px;
+ padding-right: 6px;
+}
+
+#battery {
+ padding-right: 12px;
+ padding-left: 6px;
+}
+
+
+#bluetooth {
+ padding-left: 12px;
+ padding-right: 6px;
+}
+
+#network {
+ padding-left: 6px;
+ padding-right: 17px;
+}
+
+
+#clock {
+ margin-right: 5px;
+ padding-left: 12px;
+ padding-right: 12px;
+}
diff --git a/.config/yazi/keymap.toml b/.config/yazi/keymap.toml
index 3ae67e6..cbe43cc 100644
--- a/.config/yazi/keymap.toml
+++ b/.config/yazi/keymap.toml
@@ -1,29 +1,85 @@
-[mgr]
-prepend_keymap = [
- {on = [ ";" ], run = 'shell "$SHELL" --block --confirm', desc = "Open shell here"},
+[[mgr.prepend_keymap]]
+on = [ ";" ]
+run = 'shell "$SHELL" --block --confirm'
+desc = "Open shell here"
- {on = [ ":","q","a","" ], run = 'quit', desc = "Close the current tab"},
- {on = [ ":","q","" ], run = 'close', desc = "Close the current tab"},
+[[mgr.prepend_keymap]]
+on = [ ":","q","a","" ]
+run = 'quit'
+desc = "Close the current tab"
+[[mgr.prepend_keymap]]
+on = [ ":","q","" ]
+run = 'close'
+desc = "Close the current tab"
- # Makes "Enter" key necessary to press
- {on = [ ":","q","a","" ], run = 'echo meow', desc = ""},
+# Makes "Enter" key necessary to press
+[[mgr.prepend_keymap]]
+on = [ ":","q","a","" ]
+run = 'echo meow'
+desc = ""
- {on = [ "q" ], run = 'noop'},
+[[mgr.prepend_keymap]]
+on = [ "q" ]
+run = 'noop'
- {on = [ "g","e" ], run = 'cd /etc', desc = "Go to /etc"},
- {on = [ "g","r" ], run = 'cd /', desc = "Go to /"},
- {on = [ "g","s" ], run = 'cd /srv', desc = "Go to /srv"},
- {on = [ "g","u" ], run = 'cd /usr', desc = "Go to /usr"},
- {on = [ "g","v" ], run = 'cd /var', desc = "Go to /var"},
- {on = [ "g","c" ], run = 'cd ~/.config', desc = "Go to .config"},
- {on = [ "v" ], run = 'select_all --state=true', desc = "Select all files"},
- {on = [ "V" ], run = 'visual_mode', desc = "Enter visual mode"},
+[[mgr.prepend_keymap]]
+on = [ "g","r" ]
+run = 'cd /'
+desc = "Go to /"
+[[mgr.prepend_keymap]]
+on = [ "g","u" ]
+run = 'cd /usr'
+desc = "Go to /usr"
+[[mgr.prepend_keymap]]
+on = [ "g","e" ]
+run = 'cd /etc'
+desc = "Go to /etc"
+[[mgr.prepend_keymap]]
+on = [ "g","v" ]
+run = 'cd /var'
+desc = "Go to /var"
- {on = [ "y" ], run = [
- 'shell -- for path in "$@"; do echo "file://$path"; done | wl-copy -t text/uri-list',
- "yank"
- ]},
+[[mgr.prepend_keymap]]
+on = [ "g","a" ]
+run = 'cd /run/media/eugenebee'
+desc = "Go to attached devices"
- {on = [ "D", "" ], run = 'remove --force --permanently', desc = "Permanently delete"},
+[[mgr.prepend_keymap]]
+on = [ "g","c" ]
+run = 'cd ~/.config'
+desc = "Go to .config"
+[[mgr.prepend_keymap]]
+on = [ "g","d" ]
+run = 'cd ~/Downloads'
+desc = "Go to Downloads"
+[[mgr.prepend_keymap]]
+on = [ "g","p" ]
+run = 'cd ~/Pictures'
+desc = "Go to Pictures"
+
+
+[[mgr.prepend_keymap]]
+on = [ "v" ]
+run = 'select_all --state=true'
+desc = "Select all files"
+[[mgr.prepend_keymap]]
+on = [ "V" ]
+run = 'visual_mode'
+desc = "Enter visual mode"
+
+[[mgr.prepend_keymap]]
+on = [ "y" ]
+run = [
+'shell -- for path in "$@"; do echo "file://$path"; done | wl-copy -t text/uri-list',
+"yank"
]
+
+[[mgr.prepend_keymap]]
+on = ""
+run = ["plugin wl-clipboard"]
+
+[[mgr.prepend_keymap]]
+on = [ "D", "" ]
+run = 'remove --force --permanently'
+desc = "Permanently delete"
diff --git a/.config/yazi/oldstyle-keymap.toml b/.config/yazi/oldstyle-keymap.toml
new file mode 100644
index 0000000..3ae67e6
--- /dev/null
+++ b/.config/yazi/oldstyle-keymap.toml
@@ -0,0 +1,29 @@
+[mgr]
+prepend_keymap = [
+ {on = [ ";" ], run = 'shell "$SHELL" --block --confirm', desc = "Open shell here"},
+
+ {on = [ ":","q","a","" ], run = 'quit', desc = "Close the current tab"},
+ {on = [ ":","q","" ], run = 'close', desc = "Close the current tab"},
+
+ # Makes "Enter" key necessary to press
+ {on = [ ":","q","a","" ], run = 'echo meow', desc = ""},
+
+ {on = [ "q" ], run = 'noop'},
+
+ {on = [ "g","e" ], run = 'cd /etc', desc = "Go to /etc"},
+ {on = [ "g","r" ], run = 'cd /', desc = "Go to /"},
+ {on = [ "g","s" ], run = 'cd /srv', desc = "Go to /srv"},
+ {on = [ "g","u" ], run = 'cd /usr', desc = "Go to /usr"},
+ {on = [ "g","v" ], run = 'cd /var', desc = "Go to /var"},
+ {on = [ "g","c" ], run = 'cd ~/.config', desc = "Go to .config"},
+
+ {on = [ "v" ], run = 'select_all --state=true', desc = "Select all files"},
+ {on = [ "V" ], run = 'visual_mode', desc = "Enter visual mode"},
+
+ {on = [ "y" ], run = [
+ 'shell -- for path in "$@"; do echo "file://$path"; done | wl-copy -t text/uri-list',
+ "yank"
+ ]},
+
+ {on = [ "D", "" ], run = 'remove --force --permanently', desc = "Permanently delete"},
+]
diff --git a/.config/yazi/package.toml b/.config/yazi/package.toml
new file mode 100644
index 0000000..723911b
--- /dev/null
+++ b/.config/yazi/package.toml
@@ -0,0 +1,7 @@
+[[plugin.deps]]
+use = "grappas/wl-clipboard"
+rev = "e9a38e4"
+hash = "6b8e5d6b09626facec713923d3ddb54b"
+
+[flavor]
+deps = []
diff --git a/.config/yazi/plugins/wl-clipboard.yazi/LICENSE b/.config/yazi/plugins/wl-clipboard.yazi/LICENSE
new file mode 100644
index 0000000..ef43362
--- /dev/null
+++ b/.config/yazi/plugins/wl-clipboard.yazi/LICENSE
@@ -0,0 +1,7 @@
+Copyright 2024 grappas
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/.config/yazi/plugins/wl-clipboard.yazi/README.md b/.config/yazi/plugins/wl-clipboard.yazi/README.md
new file mode 100644
index 0000000..8712c5f
--- /dev/null
+++ b/.config/yazi/plugins/wl-clipboard.yazi/README.md
@@ -0,0 +1,34 @@
+# wl-clipboard.yazi
+
+Forked from: [orhnk/system-clipboard.yazi](https://github.com/orhnk/system-clipboard.yazi) to work with wayland compositors.
+
+## Demo
+
+
+
+## Config
+
+> [!NOTE]
+> You need yazi 3.x for this plugin to work.
+
+> [!Important]
+> This plugin utilizes ["wl-clipboard" project](https://github.com/bugaevc/wl-clipboard).
+> You need to have it installed on your system. (Make sure that It's on your $PATH)
+
+## Installation
+
+```bash
+ya pkg add grappas/wl-clipboard
+```
+
+## Configuration
+
+Copy or install this plugin and add the following keymap to your `manager.prepend_keymap`:
+
+```toml
+on = ""
+run = ["plugin wl-clipboard"]
+```
+
+> [!Tip]
+> If you want to use this plugin with yazi's default yanking behaviour you should use `cx.yanked` instead of `tab.selected` in `init.lua` (See [#1487](https://github.com/sxyazi/yazi/issues/1487))
diff --git a/.config/yazi/plugins/wl-clipboard.yazi/main.lua b/.config/yazi/plugins/wl-clipboard.yazi/main.lua
new file mode 100644
index 0000000..1c737b2
--- /dev/null
+++ b/.config/yazi/plugins/wl-clipboard.yazi/main.lua
@@ -0,0 +1,60 @@
+-- Meant to run at async context. (yazi system-clipboard)
+
+local selected_or_hovered = ya.sync(function()
+ local tab, paths = cx.active, {}
+ for _, u in pairs(tab.selected) do
+ paths[#paths + 1] = tostring(u)
+ end
+ if #paths == 0 and tab.current.hovered then
+ paths[1] = tostring(tab.current.hovered.url)
+ end
+ return paths
+end)
+
+return {
+ entry = function()
+ ya.manager_emit("escape", { visual = true })
+
+ local urls = selected_or_hovered()
+
+ if #urls == 0 then
+ return ya.notify({ title = "System Clipboard", content = "No file selected", level = "warn", timeout = 5 })
+ end
+
+ -- ya.notify({ title = #urls, content = table.concat(urls, " "), level = "info", timeout = 5 })
+
+ -- Format the URLs for `text/uri-list` specification
+ local function encode_uri(uri)
+ return uri:gsub("([^%w%-%._~:/])", function(c)
+ return string.format("%%%02X", string.byte(c))
+ end)
+ end
+
+ local file_list_formatted = ""
+ for _, path in ipairs(urls) do
+ -- Each file path must be URI-encoded and prefixed with "file://"
+ file_list_formatted = file_list_formatted .. "file://" .. encode_uri(path) .. "\r\n"
+ end
+
+ local status, err =
+ Command("wl-copy"):arg("--type"):arg("text/uri-list"):arg(file_list_formatted):spawn():wait()
+
+ if status or status.succes then
+ ya.notify({
+ title = "System Clipboard",
+ content = "Succesfully copied the file(s) to system clipboard",
+ level = "info",
+ timeout = 5,
+ })
+ end
+
+ if not status or not status.success then
+ ya.notify({
+ title = "System Clipboard",
+ content = string.format("Could not copy selected file(s) %s", status and status.code or err),
+ level = "error",
+ timeout = 5,
+ })
+ end
+ end,
+}