many things changed
This commit is contained in:
parent
eefe4e4d13
commit
15babf9da3
@ -36,3 +36,10 @@ fi
|
|||||||
|
|
||||||
# ──────────────────────── zoxide (cd -> zoxide) ──────────────────────
|
# ──────────────────────── zoxide (cd -> zoxide) ──────────────────────
|
||||||
eval "$(zoxide init --cmd cd zsh)"
|
eval "$(zoxide init --cmd cd zsh)"
|
||||||
|
|
||||||
|
# ──────────────────────────────── gitea ──────────────────────────────
|
||||||
|
PROG=tea _CLI_ZSH_AUTOCOMPLETE_HACK=1 source "/home/goodhumored/.config/tea/autocomplete.zsh"
|
||||||
|
if command -v tea > /dev/null; then
|
||||||
|
alias tprl="tea pr list"
|
||||||
|
alias tprl="tea pr list"
|
||||||
|
fi
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
"bitoAI.codeCompletion.enableAutoCompletion": false,
|
"bitoAI.codeCompletion.enableAutoCompletion": false,
|
||||||
"bitoAI.codeCompletion.enableCommentToCode": true
|
"bitoAI.codeCompletion.enableCommentToCode": true,
|
||||||
|
"database-client.autoSync": true
|
||||||
}
|
}
|
@ -329,33 +329,6 @@
|
|||||||
# where there are multiple screens with very different dpi values.
|
# where there are multiple screens with very different dpi values.
|
||||||
per_monitor_dpi = false
|
per_monitor_dpi = false
|
||||||
|
|
||||||
|
|
||||||
[urgency_low]
|
|
||||||
# IMPORTANT: colors have to be defined in quotation marks.
|
|
||||||
# Otherwise the "#" and following would be interpreted as a comment.
|
|
||||||
background = "#222222"
|
|
||||||
foreground = "#888888"
|
|
||||||
timeout = 10
|
|
||||||
# Icon for notifications with low urgency, uncomment to enable
|
|
||||||
#default_icon = /path/to/icon
|
|
||||||
|
|
||||||
[urgency_normal]
|
|
||||||
background = "#00000077"
|
|
||||||
foreground = "#ffffff"
|
|
||||||
timeout = 10
|
|
||||||
override_pause_level = 30
|
|
||||||
# Icon for notifications with normal urgency, uncomment to enable
|
|
||||||
#default_icon = /path/to/icon
|
|
||||||
|
|
||||||
[urgency_critical]
|
|
||||||
background = "#900000"
|
|
||||||
foreground = "#ffffff"
|
|
||||||
frame_color = "#ff0000"
|
|
||||||
timeout = 0
|
|
||||||
override_pause_level = 60
|
|
||||||
# Icon for notifications with critical urgency, uncomment to enable
|
|
||||||
#default_icon = /path/to/icon
|
|
||||||
|
|
||||||
# Every section that isn't one of the above is interpreted as a rules to
|
# Every section that isn't one of the above is interpreted as a rules to
|
||||||
# override settings for certain messages.
|
# override settings for certain messages.
|
||||||
#
|
#
|
||||||
@ -484,10 +457,6 @@
|
|||||||
# set_stack_tag = "volume"
|
# set_stack_tag = "volume"
|
||||||
#
|
#
|
||||||
|
|
||||||
[notification_sound]
|
|
||||||
summary = "*"
|
|
||||||
script = ~/.config/dunst/play-notif-sound.sh
|
|
||||||
|
|
||||||
[pomodoro]
|
[pomodoro]
|
||||||
appname = "notify-send"
|
appname = "notify-send"
|
||||||
summary = "Timer *"
|
summary = "Timer *"
|
||||||
@ -495,16 +464,51 @@
|
|||||||
urgency = normal
|
urgency = normal
|
||||||
script = ~/.config/dunst/play-pomodoro.sh
|
script = ~/.config/dunst/play-pomodoro.sh
|
||||||
|
|
||||||
|
[pomodoro]
|
||||||
|
summary = "Timer *"
|
||||||
|
urgency = normal
|
||||||
|
script = ~/.config/dunst/play-pomodoro.sh
|
||||||
|
|
||||||
[low-battery]
|
[low-battery]
|
||||||
appname = "poweralertd"
|
appname = "poweralertd"
|
||||||
# summary = "Timer *"
|
# summary = "Timer *"
|
||||||
category = "power.low"
|
category = "power.low"
|
||||||
script = ~/.config/dunst/play-low-battery-sound.sh
|
script = ~/.config/dunst/play-low-battery-sound.sh
|
||||||
|
|
||||||
|
[proclickm]
|
||||||
|
summary = "ProClickM"
|
||||||
|
urgency = low
|
||||||
|
timeout = 1
|
||||||
|
history_ignore = yes
|
||||||
|
|
||||||
[critical-battery]
|
[critical-battery]
|
||||||
appname = "poweralertd"
|
appname = "poweralertd"
|
||||||
# summary = "Timer *"
|
# summary = "Timer *"
|
||||||
|
urgency = critical
|
||||||
category = "power.critical"
|
category = "power.critical"
|
||||||
script = ~/.config/dunst/play-low-battery-sound.sh
|
script = ~/.config/dunst/play-low-battery-sound.sh
|
||||||
|
|
||||||
|
[low-urgency]
|
||||||
|
background = "#222222"
|
||||||
|
foreground = "#888888"
|
||||||
|
frame_color = "#888888"
|
||||||
|
|
||||||
|
[medium-urgency]
|
||||||
|
msg_urgency = "normal"
|
||||||
|
background = "#00000077"
|
||||||
|
foreground = "#ffffff"
|
||||||
|
frame_color = "#ff4d00"
|
||||||
|
timeout = 10
|
||||||
|
override_pause_level = 30
|
||||||
|
script = ~/.config/dunst/play-notif-sound.sh
|
||||||
|
|
||||||
|
[critical-urgency]
|
||||||
|
msg_urgency = "critical"
|
||||||
|
background = "#900000"
|
||||||
|
foreground = "#ffffff"
|
||||||
|
frame_color = "#ff0000"
|
||||||
|
timeout = 0
|
||||||
|
override_pause_level = 60
|
||||||
|
script = ~/.config/dunst/play-error-sound.sh
|
||||||
|
|
||||||
# vim: ft=cfg
|
# vim: ft=cfg
|
||||||
|
1
.config/dunst/play-error-sound.sh
Executable file
1
.config/dunst/play-error-sound.sh
Executable file
@ -0,0 +1 @@
|
|||||||
|
paplay ~/.config/dunst/sounds/error.mp3
|
BIN
.config/dunst/sounds/error.mp3
Normal file
BIN
.config/dunst/sounds/error.mp3
Normal file
Binary file not shown.
@ -11,11 +11,12 @@ $mainMod = SUPER # Sets "Windows" key as main modifier
|
|||||||
|
|
||||||
# apps
|
# apps
|
||||||
bind = $mainMod, T, exec, $terminal # terminal
|
bind = $mainMod, T, exec, $terminal # terminal
|
||||||
bind = $mainMod SHIFT, T, exec, ~/.config/hypr/scripts/show-crow.sh
|
bind = $mainMod SHIFT, T, exec, crow
|
||||||
bind = $mainMod CTRL SHIFT, T, exec, ~/.config/hypr/scripts/translate-selection.sh
|
bind = $mainMod CTRL SHIFT, T, exec, ~/.config/hypr/scripts/translate-selection.sh
|
||||||
bind = $mainMod, E, exec, $fileManager # file manager
|
bind = $mainMod, E, exec, $fileManager # file manager
|
||||||
bind = $mainMod, A, exec, $toggle_menu_cmd # wofi
|
bind = $mainMod, A, exec, $toggle_menu_cmd # wofi
|
||||||
bind = $mainMod CTRL ALT, V, exec, ~/.config/hypr/scripts/dnd-clipboard.sh
|
bind = $mainMod CTRL ALT, V, exec, ~/.config/hypr/scripts/dnd-clipboard.sh
|
||||||
|
bind = $mainMod CTRL SHIFT ALT, H, exec, ~/.config/hypr/scripts/toggle_hdr.sh
|
||||||
|
|
||||||
# ─────────────────────────── switch wallpaper ───────────────────────────
|
# ─────────────────────────── switch wallpaper ───────────────────────────
|
||||||
bind = $mainMod SHIFT CTRL ALT, R, exec, ~/.config/hypr/scripts/cycle-wp.sh
|
bind = $mainMod SHIFT CTRL ALT, R, exec, ~/.config/hypr/scripts/cycle-wp.sh
|
||||||
@ -29,7 +30,7 @@ bind = $mainMod, V, togglefloating, # toggle float
|
|||||||
bind = $mainMod, P, pseudo, # pseudo
|
bind = $mainMod, P, pseudo, # pseudo
|
||||||
bind = $mainMod, DELETE, exit, # pseudo
|
bind = $mainMod, DELETE, exit, # pseudo
|
||||||
bind = $mainMod, R, togglesplit, # toggle split
|
bind = $mainMod, R, togglesplit, # toggle split
|
||||||
bind = $mainMod CTRL, L, exec, hyprlock # lock screen
|
bind = $mainMod CTRL, L, exec, ~/.config/hypr/scripts/update-hyprlock-wp.sh && hyprctl switchxkblayout all 0 && hyprlock # lock screen
|
||||||
|
|
||||||
# ─────────────────────────── move workspaces ─────────────────────────
|
# ─────────────────────────── move workspaces ─────────────────────────
|
||||||
bind = CTRL ALT $mainMod SHIFT CTRL ALT, H, movecurrentworkspacetomonitor, l
|
bind = CTRL ALT $mainMod SHIFT CTRL ALT, H, movecurrentworkspacetomonitor, l
|
||||||
@ -95,6 +96,11 @@ bind = SHIFT, Print, exec, grimblast copy screen --freeze --notify --cursor
|
|||||||
# ───────────────────────────────── OCR ───────────────────────────────
|
# ───────────────────────────────── OCR ───────────────────────────────
|
||||||
bind = $mainMod SHIFT, C, exec, wl-copy $(grimblast save area - | magick png:- pgm:- | gocr -)
|
bind = $mainMod SHIFT, C, exec, wl-copy $(grimblast save area - | magick png:- pgm:- | gocr -)
|
||||||
|
|
||||||
|
# ───────────────────────────────── vpn ───────────────────────────────
|
||||||
|
bind = $mainMod SHIFT CTRL ALT, V, exec, ~/.config/scripts/select-vpn.sh
|
||||||
|
|
||||||
|
# ──────────────────────────────── pass ───────────────────────────────
|
||||||
|
bind = $mainMod SHIFT CTRL ALT, p, exec, ~/.config/scripts/copy-pass.sh
|
||||||
|
|
||||||
# ╭──────────────────────────────────────────────────────────╮
|
# ╭──────────────────────────────────────────────────────────╮
|
||||||
# │ mediakeys │
|
# │ mediakeys │
|
||||||
@ -115,6 +121,23 @@ bindl=, XF86AudioPrev, exec, playerctl --player=$(cat ~/.config/chosen_player) p
|
|||||||
bindl= CTRL ALT SHIFT, H, exec, playerctl --player=$(cat ~/.config/chosen_player) previous
|
bindl= CTRL ALT SHIFT, H, exec, playerctl --player=$(cat ~/.config/chosen_player) previous
|
||||||
bindl= CTRL ALT SHIFT, L, exec, playerctl --player=$(cat ~/.config/chosen_player) next
|
bindl= CTRL ALT SHIFT, L, exec, playerctl --player=$(cat ~/.config/chosen_player) next
|
||||||
bindl= CTRL ALT SHIFT, SPACE, exec, playerctl --player=$(cat ~/.config/chosen_player) play-pause
|
bindl= CTRL ALT SHIFT, SPACE, exec, playerctl --player=$(cat ~/.config/chosen_player) play-pause
|
||||||
|
# ─────────────────── win + press roller = play-pause ─────────────────
|
||||||
|
bindl=$mainMod, XF86AudioMute, exec, playerctl --player=$(cat ~/.config/chosen_player) play-pause
|
||||||
|
# ────────────────────── win + roller = brightness ────────────────────
|
||||||
|
bindle=$mainMod, XF86AudioRaiseVolume, exec, ~/.config/scripts/set_brightness.sh +10%
|
||||||
|
bindle=$mainMod, XF86AudioLowerVolume, exec, ~/.config/scripts/set_brightness.sh 10%-
|
||||||
|
# ────────────────────── win + alt + roller = monitor brightness ────────────────────
|
||||||
|
bindle=$mainMod ALT, XF86AudioRaiseVolume, exec, ~/.config/scripts/set_brightness_other_monitors.sh +10
|
||||||
|
bindle=$mainMod ALT, XF86AudioLowerVolume, exec, ~/.config/scripts/set_brightness_other_monitors.sh -10
|
||||||
|
# ───────────── win + ctrl + alt + shift + roller = playback ─────────────
|
||||||
|
bindle=$mainMod ALT SHIFT CTRL, XF86AudioRaiseVolume, exec, playerctl --player=$(cat ~/.config/chosen_player) position 1+
|
||||||
|
bindle=$mainMod ALT SHIFT CTRL, XF86AudioLowerVolume, exec, playerctl --player=$(cat ~/.config/chosen_player) position 1-
|
||||||
|
# ────────────────────── alt + roller = vert scroll ──────────────────────
|
||||||
|
bindle=ALT, XF86AudioLowerVolume, exec, xdotool click 4
|
||||||
|
bindle=ALT, XF86AudioRaiseVolume, exec, xdotool click 5
|
||||||
|
# ────────────────── alt + shift + roller = hor scroll ──────────────────
|
||||||
|
bindle=ALT SHIFT, XF86AudioLowerVolume, exec, xdotool click 6
|
||||||
|
bindle=ALT SHIFT, XF86AudioRaiseVolume, exec, xdotool click 7
|
||||||
|
|
||||||
# ─────────────────────── select pulseaudio output ───────────────────────
|
# ─────────────────────── select pulseaudio output ───────────────────────
|
||||||
bind=CTRL ALT SHIFT, O, exec, ~/.config/hypr/scripts/wofi-pulse-output.sh
|
bind=CTRL ALT SHIFT, O, exec, ~/.config/hypr/scripts/wofi-pulse-output.sh
|
||||||
@ -126,5 +149,9 @@ bind= CTRL ALT SHIFT, P, exec, ~/.config/hypr/scripts/wofi-player.sh
|
|||||||
bindm = $mainMod, mouse:272, movewindow
|
bindm = $mainMod, mouse:272, movewindow
|
||||||
bindm = $mainMod, mouse:273, resizewindow
|
bindm = $mainMod, mouse:273, resizewindow
|
||||||
|
|
||||||
|
# ─────────────────────────── LID MONITOR OFF ─────────────────────────
|
||||||
|
# При закрытии крышки (Lid Switch включён)
|
||||||
|
bindl = , switch:on:Lid Switch, exec, hyprctl keyword monitor "eDP-1, disable"
|
||||||
|
|
||||||
|
# При открытии крышки (Lid Switch выключён)
|
||||||
|
bindl = , switch:off:Lid Switch, exec, hyprctl keyword monitor "eDP-1, preferred, auto, 1"
|
||||||
|
4
.config/hypr/experimental_features.conf
Normal file
4
.config/hypr/experimental_features.conf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
experimental {
|
||||||
|
xx_color_management_v4 = false
|
||||||
|
}
|
||||||
|
|
@ -21,6 +21,14 @@ $terminal = kitty
|
|||||||
$fileManager = $terminal tmux new-session -s tmp-file-manager 'yazi'
|
$fileManager = $terminal tmux new-session -s tmp-file-manager 'yazi'
|
||||||
$toggle_menu_cmd = pgrep wofi >/dev/null 2>&1 && killall wofi || wofi --show drun
|
$toggle_menu_cmd = pgrep wofi >/dev/null 2>&1 && killall wofi || wofi --show drun
|
||||||
|
|
||||||
|
# experimental features (HDR)
|
||||||
|
source = ./experimental_features.conf
|
||||||
|
|
||||||
|
render {
|
||||||
|
cm_fs_passthrough = 1
|
||||||
|
cm_enabled = true
|
||||||
|
}
|
||||||
|
|
||||||
# ╭──────────────────────────────────────────────────────────╮
|
# ╭──────────────────────────────────────────────────────────╮
|
||||||
# │ AUTOSTART │
|
# │ AUTOSTART │
|
||||||
# ╰──────────────────────────────────────────────────────────╯
|
# ╰──────────────────────────────────────────────────────────╯
|
||||||
@ -158,9 +166,9 @@ source = ./conf/keybindings.conf
|
|||||||
# │ WINDOWRULES │
|
# │ WINDOWRULES │
|
||||||
# ╰──────────────────────────────────────────────────────────╯
|
# ╰──────────────────────────────────────────────────────────╯
|
||||||
# ──────────────────────────────── copyq ──────────────────────────────
|
# ──────────────────────────────── copyq ──────────────────────────────
|
||||||
windowrule = size 300 400,^(copyq)$
|
windowrule = size 300 400,class:^(copyq)$
|
||||||
windowrule = float,com.github.hluk.copyq
|
windowrule = float,class:com.github.hluk.copyq
|
||||||
windowrule = move onscreen cursor,com.github.hluk.copyq
|
windowrule = move onscreen cursor,class:com.github.hluk.copyq
|
||||||
|
|
||||||
# ────────────────────── Browser Picture in Picture ──────────────────────
|
# ────────────────────── Browser Picture in Picture ──────────────────────
|
||||||
windowrulev2 = float, title:^(Picture-in-Picture)$
|
windowrulev2 = float, title:^(Picture-in-Picture)$
|
||||||
@ -172,25 +180,25 @@ windowrulev2 = float, title:(Media viewer)
|
|||||||
windowrulev2 = fullscreen, title:^(Media viewer)$
|
windowrulev2 = fullscreen, title:^(Media viewer)$
|
||||||
|
|
||||||
# different floating modals
|
# different floating modals
|
||||||
windowrule = maxsize 400 300, (blueman|io.crow_translate.CrowTranslate)
|
windowrule = maxsize 400 300, class:(blueman|org.kde.CrowTranslate)
|
||||||
windowrule = float, (pavucontrol|blueman-manager|wofi|rofi|imv|io.crow_translate.CrowTranslate)
|
windowrule = float, class:(pavucontrol|blueman-manager|wofi|Rofi|imv|org.kde.CrowTranslate)
|
||||||
windowrule = pin, (pavucontrol|blueman-manager|wofi|rofi|io.crow_translate.CrowTranslate)
|
windowrule = pin, class:(pavucontrol|blueman-manager|wofi|Rofi|org.kde.CrowTranslate)
|
||||||
windowrule = stayfocused, (pavucontrol|blueman-manager|wofi|rofi|io.crow_translate.CrowTranslate)
|
windowrule = stayfocused, class:(pavucontrol|blueman-manager|wofi|Rofi|org.kde.CrowTranslate)
|
||||||
windowrule = move onscreen cursor,(pavucontrol|blueman-manager|imv|io.crow_translate.CrowTranslate)
|
windowrule = move onscreen cursor,class:(pavucontrol|blueman-manager|imv|org.kde.CrowTranslate)
|
||||||
|
|
||||||
windowrule = center, (wofi)
|
windowrule = center, class:(wofi)
|
||||||
windowrule = workspace 3, title:^(.*)(Telegram)(.*)$
|
windowrule = workspace 3, title:^(.*)(Telegram)(.*)$
|
||||||
windowrule = workspace 1, title:^(.*)(Firefox)(.*)$
|
windowrule = workspace 1, title:^(.*)(Firefox)(.*)$
|
||||||
windowrule = workspace special:music, title:(.*)((M|m)usic|(М|м)узыка)(.*)
|
windowrule = workspace special:music, title:(.*)((M|m)usic|(М|м)узыка)(.*)
|
||||||
windowrule = float, title:(.*)((M|m)usic|(М|м)узыка)(.*)
|
windowrule = float, title:(.*)((M|m)usic|(М|м)узыка)(.*)
|
||||||
windowrule = size 1500 900, title:(.*)((M|m)usic|(М|м)узыка)(.*)
|
windowrule = size 1500 900, title:(.*)((M|m)usic|(М|м)узыка)(.*)
|
||||||
# Example windowrule v2
|
# Example windowrule v2
|
||||||
windowrulev2 = float,class:^(cursor-float)$
|
windowrule = float,class:^(cursor-float)$
|
||||||
windowrulev2 = move onscreen cursor,class:^(cursor-float)$
|
windowrule = move onscreen cursor,class:^(cursor-float)$
|
||||||
|
|
||||||
windowrulev2 = float,class:^(dmenu)$
|
windowrule = float,class:^(dmenu)$
|
||||||
windowrulev2 = pin,class:^(dmenu)$
|
windowrule = pin,class:^(dmenu)$
|
||||||
windowrulev2 = stayfocused,class:^(dmenu)$
|
windowrule = stayfocused,class:^(dmenu)$
|
||||||
# windowrulev2 = move onscreen cursor,class:^(dmenu)$
|
# windowrulev2 = move onscreen cursor,class:^(dmenu)$
|
||||||
#
|
#
|
||||||
|
|
||||||
@ -199,13 +207,12 @@ windowrule = tile, class:(.*)(MATLAB)(.*)
|
|||||||
windowrule = workspace 6, class:(.*)(MATLAB)(.*)
|
windowrule = workspace 6, class:(.*)(MATLAB)(.*)
|
||||||
windowrule = size 400 400, class:(.*)(MATLAB)(.*)
|
windowrule = size 400 400, class:(.*)(MATLAB)(.*)
|
||||||
|
|
||||||
windowrule = tile, (.*)(Figure)(.*)
|
windowrule = tile, class:(.*)(Figure)(.*)
|
||||||
windowrule = workspace 6, (.*)(Figure)(.*)
|
windowrule = workspace 6, class:(.*)(Figure)(.*)
|
||||||
windowrule = size 400 400, (.*)(Figure)(.*)
|
windowrule = size 400 400, class:(.*)(Figure)(.*)
|
||||||
|
|
||||||
|
|
||||||
windowrulev2 = suppressevent maximize, class:.* # You'll probably like this.
|
windowrule = suppressevent maximize, class:.* # You'll probably like this.
|
||||||
|
|
||||||
|
|
||||||
workspace = special:music, opacity:0.5
|
workspace = special:music, opacity:0.5
|
||||||
workspace = opacity 0.5, onworkspace:name:special:music
|
workspace = opacity 0.5, onworkspace:name:special:music
|
||||||
|
9
.config/hypr/hyprlock-bg.conf
Normal file
9
.config/hypr/hyprlock-bg.conf
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
background {
|
||||||
|
monitor = eDP-1
|
||||||
|
path = /home/goodhumored/wallpapers/3.png
|
||||||
|
}
|
||||||
|
background {
|
||||||
|
monitor = DP-2
|
||||||
|
path = /home/goodhumored/wallpapers/3.png
|
||||||
|
}
|
||||||
|
|
@ -5,11 +5,8 @@
|
|||||||
# |_| |_|\__, | .__/|_| |_|\___/ \___|_|\_\
|
# |_| |_|\__, | .__/|_| |_|\___/ \___|_|\_\
|
||||||
# |___/|_|
|
# |___/|_|
|
||||||
#
|
#
|
||||||
|
#
|
||||||
background {
|
source = ./hyprlock-bg.conf
|
||||||
monitor =
|
|
||||||
path = $HOME/wallpapers/isaac_cathedral.jpg
|
|
||||||
}
|
|
||||||
|
|
||||||
label {
|
label {
|
||||||
monitor =
|
monitor =
|
||||||
@ -43,7 +40,7 @@ input-field {
|
|||||||
rounding = -1 # -1 means complete rounding (circle/oval)
|
rounding = -1 # -1 means complete rounding (circle/oval)
|
||||||
check_color = rgb(204, 136, 34)
|
check_color = rgb(204, 136, 34)
|
||||||
fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color
|
fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color
|
||||||
fail_text = Неправильно, попробуй ещё раз! (попыток осталось: $ATTEMPTS) # can be set to empty
|
fail_text = Неправильно, попробуй ещё раз! (Попытка $ATTEMPTS из 3) # can be set to empty
|
||||||
fail_transition = 300 # transition time in ms between normal outer_color and fail_color
|
fail_transition = 300 # transition time in ms between normal outer_color and fail_color
|
||||||
capslock_color = rgb(150, 34, 34)
|
capslock_color = rgb(150, 34, 34)
|
||||||
numlock_color = -1
|
numlock_color = -1
|
||||||
|
@ -21,4 +21,5 @@ monitor=desc:Iiyama North America PL3270Q 1155103721286,2560x1440@59.95,-640x-14
|
|||||||
# Домашний монитор
|
# Домашний монитор
|
||||||
monitor=desc:BNQ BenQ G925HDA 29A01966019,prefered,auto,1.0
|
monitor=desc:BNQ BenQ G925HDA 29A01966019,prefered,auto,1.0
|
||||||
monitor=desc:HJW MACROSILICON 0x0002E842,prefered,320x-720,1.0
|
monitor=desc:HJW MACROSILICON 0x0002E842,prefered,320x-720,1.0
|
||||||
monitor=desc:Huawei Technologies Co. Inc. ZQE-CBA 0xC080F622,3440x1440@99.98Hz,-760x-1440,1,bitdepth
|
monitor=desc:Huawei Technologies Co. Inc. ZQE-CBA 0xC080F622,3440x1440@100Hz,-760x-1440,1,bitdepth,10, cm, hdr
|
||||||
|
monitor=desc:Huawei Technologies Co. Inc. ZQE-CBA 0xC080F622,3440x1440@100Hz,-760x-1440,1,bitdepth,10
|
||||||
|
36
.config/hypr/scripts/scroll.py
Normal file
36
.config/hypr/scripts/scroll.py
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
from evdev import UInput, ecodes as e
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# Определяем возможности устройства
|
||||||
|
capabilities = {
|
||||||
|
e.EV_REL: [e.REL_WHEEL, e.REL_HWHEEL], # Список кодов для EV_REL
|
||||||
|
e.EV_SYN: [e.SYN_REPORT], # Список кодов для EV_SYN
|
||||||
|
}
|
||||||
|
|
||||||
|
# Создаём виртуальное устройство
|
||||||
|
ui = UInput(capabilities, name="virtual-scroll-device")
|
||||||
|
|
||||||
|
def scroll(direction, horizontal=False):
|
||||||
|
if horizontal:
|
||||||
|
ui.write(e.EV_REL, e.REL_HWHEEL, direction)
|
||||||
|
else:
|
||||||
|
ui.write(e.EV_REL, e.REL_WHEEL, direction)
|
||||||
|
ui.syn()
|
||||||
|
|
||||||
|
# Обработка аргументов
|
||||||
|
if len(sys.argv) < 2:
|
||||||
|
print("Usage: scroll.py <up|down|left|right>")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
cmd = sys.argv[1]
|
||||||
|
if cmd == "up":
|
||||||
|
scroll(1)
|
||||||
|
elif cmd == "down":
|
||||||
|
scroll(-1)
|
||||||
|
elif cmd == "left":
|
||||||
|
scroll(-1, horizontal=True)
|
||||||
|
elif cmd == "right":
|
||||||
|
scroll(1, horizontal=True)
|
||||||
|
|
||||||
|
ui.close()
|
30
.config/hypr/scripts/toggle_hdr.sh
Executable file
30
.config/hypr/scripts/toggle_hdr.sh
Executable file
@ -0,0 +1,30 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Path to the file storing the variables
|
||||||
|
SETTINGS_FILE="$HOME/.config/hypr/experimental_features.conf"
|
||||||
|
|
||||||
|
# Read the current values from the file
|
||||||
|
HDR=$(grep -oP 'hdr\s*=\s*\K(true|false)' "$SETTINGS_FILE")
|
||||||
|
WIDE_COLOR=$(grep -oP 'wide_color_gamut\s*=\s*\K(true|false)' "$SETTINGS_FILE")
|
||||||
|
XX_COLOR=$(grep -oP 'xx_color_management_v4\s*=\s*\K(true|false)' "$SETTINGS_FILE")
|
||||||
|
|
||||||
|
# Toggle the values
|
||||||
|
TOGGLE() {
|
||||||
|
if [ "$1" == "true" ]; then
|
||||||
|
echo "false"
|
||||||
|
else
|
||||||
|
echo "true"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
NEW_HDR=$(TOGGLE "$HDR")
|
||||||
|
NEW_WIDE_COLOR=$(TOGGLE "$WIDE_COLOR")
|
||||||
|
NEW_XX_COLOR=$(TOGGLE "$XX_COLOR")
|
||||||
|
|
||||||
|
# Update the file with the new values
|
||||||
|
sed -i "s/hdr\s*=\s*$HDR/hdr = $NEW_HDR/" "$SETTINGS_FILE"
|
||||||
|
sed -i "s/wide_color_gamut\s*=\s*$WIDE_COLOR/wide_color_gamut = $NEW_WIDE_COLOR/" "$SETTINGS_FILE"
|
||||||
|
sed -i "s/xx_color_management_v4\s*=\s*$XX_COLOR/xx_color_management_v4 = $NEW_XX_COLOR/" "$SETTINGS_FILE"
|
||||||
|
|
||||||
|
# Optional: Notify the user of the new values
|
||||||
|
notify-send "Experimental Settings Toggled" "hdr = $NEW_HDR\nwide_color_gamut = $NEW_WIDE_COLOR\nxx_color_management_v4 = $NEW_XX_COLOR"
|
40
.config/hypr/scripts/update-hyprlock-wp.sh
Executable file
40
.config/hypr/scripts/update-hyprlock-wp.sh
Executable file
@ -0,0 +1,40 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Get the wallpaper information from hyprctl
|
||||||
|
hyprctl_output=$(hyprctl hyprpaper listactive)
|
||||||
|
|
||||||
|
echo "$hyprctl_output"
|
||||||
|
|
||||||
|
# Read the lines into an array and reverse their order
|
||||||
|
mapfile -t lines <<< "$hyprctl_output"
|
||||||
|
reversed_lines=()
|
||||||
|
for ((i=${#lines[@]}-1; i>=0; i--)); do
|
||||||
|
reversed_lines+=("${lines[i]}")
|
||||||
|
done
|
||||||
|
|
||||||
|
# Generate the config content
|
||||||
|
config_content=""
|
||||||
|
for line in "${reversed_lines[@]}"; do
|
||||||
|
# Split line into monitor and path parts
|
||||||
|
IFS='=' read -r monitor_part path_part <<< "$line"
|
||||||
|
|
||||||
|
# Trim whitespace from both parts
|
||||||
|
monitor=$(echo "$monitor_part" | xargs)
|
||||||
|
path=$(echo "$path_part" | xargs)
|
||||||
|
|
||||||
|
# Skip entries with empty monitor names
|
||||||
|
[[ -z "$monitor" ]] && continue
|
||||||
|
|
||||||
|
# Append to the config content
|
||||||
|
config_content+="background {
|
||||||
|
monitor = $monitor
|
||||||
|
path = $path
|
||||||
|
}
|
||||||
|
"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Write to the configuration file
|
||||||
|
config_file="$HOME/.config/hypr/hyprlock-bg.conf"
|
||||||
|
echo "$config_content" > "$config_file"
|
||||||
|
|
||||||
|
echo "Generated hyprlock background config at: $config_file"
|
@ -0,0 +1,56 @@
|
|||||||
|
return {
|
||||||
|
"kevinhwang91/nvim-ufo",
|
||||||
|
dependencies = { "kevinhwang91/promise-async" },
|
||||||
|
config = function()
|
||||||
|
vim.o.foldcolumn = "1" -- '0' is not bad
|
||||||
|
vim.o.foldlevel = 99 -- Using ufo provider need a large value, feel free to decrease the value
|
||||||
|
vim.o.foldlevelstart = 99
|
||||||
|
vim.o.foldenable = true
|
||||||
|
|
||||||
|
-- Using ufo provider need remap `zR` and `zM`. If Neovim is 0.6.1, remap yourself
|
||||||
|
vim.keymap.set("n", "zR", require("ufo").openAllFolds)
|
||||||
|
vim.keymap.set("n", "zM", require("ufo").closeAllFolds)
|
||||||
|
|
||||||
|
-- Option 1: coc.nvim as LSP client
|
||||||
|
-- use({ "neoclide/coc.nvim", branch = "master", run = "yarn install --frozen-lockfile" })
|
||||||
|
-- require("ufo").setup()
|
||||||
|
--
|
||||||
|
|
||||||
|
-- Option 2: nvim lsp as LSP client
|
||||||
|
-- Tell the server the capability of foldingRange,
|
||||||
|
-- Neovim hasn't added foldingRange to default capabilities, users must add it manually
|
||||||
|
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
capabilities.textDocument.foldingRange = {
|
||||||
|
dynamicRegistration = false,
|
||||||
|
lineFoldingOnly = true,
|
||||||
|
}
|
||||||
|
local language_servers = vim.lsp.get_clients() -- or list servers manually like {'gopls', 'clangd'}
|
||||||
|
for _, ls in ipairs(language_servers) do
|
||||||
|
require("lspconfig")[ls].setup({
|
||||||
|
capabilities = capabilities,
|
||||||
|
-- you can add other fields for setting up lsp server in this table
|
||||||
|
})
|
||||||
|
end
|
||||||
|
require("ufo").setup()
|
||||||
|
--
|
||||||
|
|
||||||
|
-- Option 3: treesitter as a main provider instead
|
||||||
|
-- (Note: the `nvim-treesitter` plugin is *not* needed.)
|
||||||
|
-- ufo uses the same query files for folding (queries/<lang>/folds.scm)
|
||||||
|
-- performance and stability are better than `foldmethod=nvim_treesitter#foldexpr()`
|
||||||
|
-- require("ufo").setup({
|
||||||
|
-- provider_selector = function(bufnr, filetype, buftype)
|
||||||
|
-- return { "treesitter", "indent" }
|
||||||
|
-- end,
|
||||||
|
-- })
|
||||||
|
--
|
||||||
|
|
||||||
|
-- Option 4: disable all providers for all buffers
|
||||||
|
-- Not recommend, AFAIK, the ufo's providers are the best performance in Neovim
|
||||||
|
-- require("ufo").setup({
|
||||||
|
-- provider_selector = function(bufnr, filetype, buftype)
|
||||||
|
-- return ""
|
||||||
|
-- end,
|
||||||
|
-- })
|
||||||
|
end,
|
||||||
|
}
|
@ -63,6 +63,9 @@ vim.keymap.set("n", "th", ":tabprev<CR>", { desc = "[T]ab left", noremap = true,
|
|||||||
vim.keymap.set("n", "tj", ":tabfirst<CR>", { desc = "[T]ab home", noremap = true, silent = true })
|
vim.keymap.set("n", "tj", ":tabfirst<CR>", { desc = "[T]ab home", noremap = true, silent = true })
|
||||||
vim.keymap.set("n", "tk", ":tablast<CR>", { desc = "[T]ab end", noremap = true, silent = true })
|
vim.keymap.set("n", "tk", ":tablast<CR>", { desc = "[T]ab end", noremap = true, silent = true })
|
||||||
|
|
||||||
|
-- ───────────────────────── close other buffers ─────────────────────────
|
||||||
|
vim.keymap.set("n", "<A-S-c>", ':%bdelete|edit #|normal `"<CR>', { noremap = true, silent = true })
|
||||||
|
|
||||||
-- ╭─────────────────────────────────────────────────────────╮
|
-- ╭─────────────────────────────────────────────────────────╮
|
||||||
-- │ Moving lines │
|
-- │ Moving lines │
|
||||||
-- ╰─────────────────────────────────────────────────────────╯
|
-- ╰─────────────────────────────────────────────────────────╯
|
||||||
|
@ -113,6 +113,54 @@ return {
|
|||||||
protocol = "inspector",
|
protocol = "inspector",
|
||||||
console = "integratedTerminal",
|
console = "integratedTerminal",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
type = "pwa-node",
|
||||||
|
request = "launch",
|
||||||
|
name = "Launch NestJS App (Watch Mode with Pino)",
|
||||||
|
runtimeExecutable = "sh",
|
||||||
|
runtimeArgs = {
|
||||||
|
"-c",
|
||||||
|
"ts-node-dev --respawn --watch ${workspaceFolder}/src ${workspaceFolder}/src/main.ts | npx pino-pretty",
|
||||||
|
},
|
||||||
|
envFile = "${workspaceFolder}/.env",
|
||||||
|
trace = true,
|
||||||
|
cwd = "${workspaceFolder}",
|
||||||
|
sourceMaps = true,
|
||||||
|
protocol = "inspector",
|
||||||
|
console = "integratedTerminal",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type = "pwa-node",
|
||||||
|
request = "launch",
|
||||||
|
name = "Launch NestJS App (Watch Mode with Pino) no crash",
|
||||||
|
runtimeExecutable = "sh",
|
||||||
|
runtimeArgs = {
|
||||||
|
"-c",
|
||||||
|
"ts-node-dev --respawn --watch ${workspaceFolder}/src ${workspaceFolder}/src/main.ts | npx pino-pretty",
|
||||||
|
},
|
||||||
|
envFile = "${workspaceFolder}/.env",
|
||||||
|
trace = true,
|
||||||
|
cwd = "${workspaceFolder}",
|
||||||
|
sourceMaps = true,
|
||||||
|
protocol = "inspector",
|
||||||
|
console = "integratedTerminal",
|
||||||
|
restart = true,
|
||||||
|
autoContinue = false,
|
||||||
|
outputCapture = "std",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type = "pwa-node",
|
||||||
|
request = "attach",
|
||||||
|
name = "Attach to NestJS App (Watch Mode)",
|
||||||
|
port = 9229, -- Порт по умолчанию для --inspect
|
||||||
|
address = "localhost",
|
||||||
|
cwd = "${workspaceFolder}",
|
||||||
|
sourceMaps = true,
|
||||||
|
protocol = "inspector",
|
||||||
|
restart = true, -- Переподключение при рестарте процесса
|
||||||
|
trace = true,
|
||||||
|
console = "integratedTerminal",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
type = "pwa-node",
|
type = "pwa-node",
|
||||||
request = "launch",
|
request = "launch",
|
||||||
|
@ -66,6 +66,7 @@ return { -- Autocompletion
|
|||||||
-- This will auto-import if your LSP supports it.
|
-- This will auto-import if your LSP supports it.
|
||||||
-- This will expand snippets if the LSP sent a snippet.
|
-- This will expand snippets if the LSP sent a snippet.
|
||||||
["<C-y>"] = cmp.mapping.confirm({ select = true }),
|
["<C-y>"] = cmp.mapping.confirm({ select = true }),
|
||||||
|
["<C-e>"] = cmp.mapping.abort(),
|
||||||
|
|
||||||
-- If you prefer more traditional completion keymaps,
|
-- If you prefer more traditional completion keymaps,
|
||||||
-- you can uncomment the following lines
|
-- you can uncomment the following lines
|
||||||
@ -76,7 +77,7 @@ return { -- Autocompletion
|
|||||||
-- Manually trigger a completion from nvim-cmp.
|
-- Manually trigger a completion from nvim-cmp.
|
||||||
-- Generally you don't need this, because nvim-cmp will display
|
-- Generally you don't need this, because nvim-cmp will display
|
||||||
-- completions whenever it has completion options available.
|
-- completions whenever it has completion options available.
|
||||||
["<C-;>"] = cmp.mapping.complete(),
|
["<C-k>"] = cmp.mapping.complete(),
|
||||||
|
|
||||||
-- Think of <c-l> as moving to the right of your snippet expansion.
|
-- Think of <c-l> as moving to the right of your snippet expansion.
|
||||||
-- So if you have a snippet that's like:
|
-- So if you have a snippet that's like:
|
||||||
|
@ -0,0 +1,10 @@
|
|||||||
|
return {
|
||||||
|
"dhruvasagar/vim-table-mode",
|
||||||
|
config = function()
|
||||||
|
-- -- Set table_mode_corner_corner to '+'
|
||||||
|
-- vim.g.table_mode_corner_corner = "+"
|
||||||
|
--
|
||||||
|
-- -- Set table_mode_header_fillchar to '='
|
||||||
|
-- vim.g.table_mode_header_fillchar = "="
|
||||||
|
end,
|
||||||
|
}
|
@ -12,8 +12,8 @@ return {
|
|||||||
load = {
|
load = {
|
||||||
["core.defaults"] = {},
|
["core.defaults"] = {},
|
||||||
["core.concealer"] = {},
|
["core.concealer"] = {},
|
||||||
["core.integrations.image"] = {},
|
-- ["core.integrations.image"] = {},
|
||||||
["core.latex.renderer"] = {},
|
-- ["core.latex.renderer"] = {},
|
||||||
["core.export"] = {
|
["core.export"] = {
|
||||||
config = { -- Note that this table is optional and doesn't need to be provided
|
config = { -- Note that this table is optional and doesn't need to be provided
|
||||||
-- Configuration here
|
-- Configuration here
|
||||||
|
@ -16,6 +16,7 @@ local languagesPlugins = require("goodhumored.languages")
|
|||||||
require("lazy").setup({
|
require("lazy").setup({
|
||||||
{ import = "goodhumored.appearance.code" },
|
{ import = "goodhumored.appearance.code" },
|
||||||
{ import = "goodhumored.appearance.theme" },
|
{ import = "goodhumored.appearance.theme" },
|
||||||
|
{ import = "goodhumored.snacks.snacks-nvim" },
|
||||||
{ import = "goodhumored.appearance.ui" },
|
{ import = "goodhumored.appearance.ui" },
|
||||||
{ import = "goodhumored.appearance.tint-unfocused" },
|
{ import = "goodhumored.appearance.tint-unfocused" },
|
||||||
{ import = "goodhumored.comfort-features" },
|
{ import = "goodhumored.comfort-features" },
|
||||||
|
175
.config/nvim/lua/goodhumored/snacks/snacks-nvim.lua
Normal file
175
.config/nvim/lua/goodhumored/snacks/snacks-nvim.lua
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
return {
|
||||||
|
"folke/snacks.nvim",
|
||||||
|
priority = 1000,
|
||||||
|
lazy = false,
|
||||||
|
---@type snacks.Config
|
||||||
|
opts = {
|
||||||
|
-- your configuration comes here
|
||||||
|
-- or leave it empty to use the default settings
|
||||||
|
-- refer to the configuration section below
|
||||||
|
bigfile = { enabled = true },
|
||||||
|
bufdelete = { enabled = true },
|
||||||
|
dashboard = { enabled = true },
|
||||||
|
debug = { enabled = true },
|
||||||
|
image = {
|
||||||
|
enabled = true,
|
||||||
|
formats = {
|
||||||
|
"png",
|
||||||
|
"jpg",
|
||||||
|
"jpeg",
|
||||||
|
"gif",
|
||||||
|
"bmp",
|
||||||
|
"webp",
|
||||||
|
"tiff",
|
||||||
|
"heic",
|
||||||
|
"avif",
|
||||||
|
"mp4",
|
||||||
|
"mov",
|
||||||
|
"avi",
|
||||||
|
"mkv",
|
||||||
|
"webm",
|
||||||
|
"pdf",
|
||||||
|
},
|
||||||
|
force = false, -- try displaying the image, even if the terminal does not support it
|
||||||
|
doc = {
|
||||||
|
-- enable image viewer for documents
|
||||||
|
-- a treesitter parser must be available for the enabled languages.
|
||||||
|
enabled = true,
|
||||||
|
-- render the image inline in the buffer
|
||||||
|
-- if your env doesn't support unicode placeholders, this will be disabled
|
||||||
|
-- takes precedence over `opts.float` on supported terminals
|
||||||
|
inline = true,
|
||||||
|
-- render the image in a floating window
|
||||||
|
-- only used if `opts.inline` is disabled
|
||||||
|
float = true,
|
||||||
|
max_width = 80,
|
||||||
|
max_height = 40,
|
||||||
|
-- Set to `true`, to conceal the image text when rendering inline.
|
||||||
|
conceal = false, -- (experimental)
|
||||||
|
},
|
||||||
|
img_dirs = { "img", "images", "assets", "static", "public", "media", "attachments" },
|
||||||
|
-- window options applied to windows displaying image buffers
|
||||||
|
-- an image buffer is a buffer with `filetype=image`
|
||||||
|
wo = {
|
||||||
|
wrap = false,
|
||||||
|
number = false,
|
||||||
|
relativenumber = false,
|
||||||
|
cursorcolumn = false,
|
||||||
|
signcolumn = "no",
|
||||||
|
foldcolumn = "0",
|
||||||
|
list = false,
|
||||||
|
spell = false,
|
||||||
|
statuscolumn = "",
|
||||||
|
},
|
||||||
|
cache = vim.fn.stdpath("cache") .. "/snacks/image",
|
||||||
|
debug = {
|
||||||
|
request = false,
|
||||||
|
convert = false,
|
||||||
|
placement = false,
|
||||||
|
},
|
||||||
|
env = {},
|
||||||
|
---@class snacks.image.convert.Config
|
||||||
|
convert = {
|
||||||
|
notify = true, -- show a notification on error
|
||||||
|
---@type snacks.image.args
|
||||||
|
mermaid = function()
|
||||||
|
local theme = vim.o.background == "light" and "neutral" or "dark"
|
||||||
|
return { "-i", "{src}", "-o", "{file}", "-b", "transparent", "-t", theme, "-s", "{scale}" }
|
||||||
|
end,
|
||||||
|
---@type table<string,snacks.image.args>
|
||||||
|
magick = {
|
||||||
|
default = { "{src}[0]", "-scale", "1920x1080>" }, -- default for raster images
|
||||||
|
vector = { "-density", 192, "{src}[0]" }, -- used by vector images like svg
|
||||||
|
math = { "-density", 192, "{src}[0]", "-trim" },
|
||||||
|
pdf = { "-density", 192, "{src}[0]", "-background", "white", "-alpha", "remove", "-trim" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
math = {
|
||||||
|
enabled = true, -- enable math expression rendering
|
||||||
|
-- in the templates below, `${header}` comes from any section in your document,
|
||||||
|
-- between a start/end header comment. Comment syntax is language-specific.
|
||||||
|
-- * start comment: `// snacks: header start`
|
||||||
|
-- * end comment: `// snacks: header end`
|
||||||
|
typst = {
|
||||||
|
tpl = [[
|
||||||
|
#set page(width: auto, height: auto, margin: (x: 2pt, y: 2pt))
|
||||||
|
#show math.equation.where(block: false): set text(top-edge: "bounds", bottom-edge: "bounds")
|
||||||
|
#set text(size: 12pt, fill: rgb("${color}"))
|
||||||
|
${header}
|
||||||
|
${content}]],
|
||||||
|
},
|
||||||
|
latex = {
|
||||||
|
font_size = "Large", -- see https://www.sascha-frank.com/latex-font-size.html
|
||||||
|
-- for latex documents, the doc packages are included automatically,
|
||||||
|
-- but you can add more packages here. Useful for markdown documents.
|
||||||
|
packages = { "amsmath", "amssymb", "amsfonts", "amscd", "mathtools" },
|
||||||
|
tpl = [[
|
||||||
|
\documentclass[preview,border=2pt,varwidth,12pt]{standalone}
|
||||||
|
\usepackage{${packages}}
|
||||||
|
\begin{document}
|
||||||
|
${header}
|
||||||
|
{ \${font_size} \selectfont
|
||||||
|
\color[HTML]{${color}}
|
||||||
|
${content}}
|
||||||
|
\end{document}]],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
explorer = { enabled = true },
|
||||||
|
git = { enabled = true },
|
||||||
|
indent = { enabled = true },
|
||||||
|
-- input = { enabled = true },
|
||||||
|
-- picker = { enabled = true },
|
||||||
|
-- notifier = { enabled = true },
|
||||||
|
-- quickfile = { enabled = true },
|
||||||
|
-- scope = { enabled = true },
|
||||||
|
scratch = { enabled = true }, -- https://github.com/folke/snacks.nvim/blob/main/docs/scratch.md
|
||||||
|
win = { enabled = true },
|
||||||
|
terminal = { enabled = true }, -- https://github.com/folke/snacks.nvim/blob/main/docs/terminal.md
|
||||||
|
animate = { enabled = true },
|
||||||
|
scroll = {
|
||||||
|
enabled = true,
|
||||||
|
animate = {
|
||||||
|
duration = { step = 5, total = 50 },
|
||||||
|
easing = "linear",
|
||||||
|
},
|
||||||
|
-- faster animation when repeating scroll after delay
|
||||||
|
animate_repeat = {
|
||||||
|
delay = 100, -- delay in ms before using the repeat animation
|
||||||
|
duration = { step = 1, total = 25 },
|
||||||
|
easing = "linear",
|
||||||
|
},
|
||||||
|
-- what buffers to animate
|
||||||
|
filter = function(buf)
|
||||||
|
return vim.g.snacks_scroll ~= false
|
||||||
|
and vim.b[buf].snacks_scroll ~= false
|
||||||
|
and vim.bo[buf].buftype ~= "terminal"
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
-- statuscolumn = { enabled = true },
|
||||||
|
words = { enabled = true },
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
"<leader>gb",
|
||||||
|
function()
|
||||||
|
require("snacks").git.blame_line()
|
||||||
|
end,
|
||||||
|
desc = "[G]it [B]lame",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>.",
|
||||||
|
function()
|
||||||
|
require("snacks").scratch()
|
||||||
|
end,
|
||||||
|
desc = "Toggle Scratch Buffer",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>S",
|
||||||
|
function()
|
||||||
|
require("snacks").scratch.select()
|
||||||
|
end,
|
||||||
|
desc = "Select Scratch Buffer",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
@ -67,17 +67,17 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"react prop": {
|
"react prop": {
|
||||||
"scope": "typescript",
|
"scope": "typescriptreact",
|
||||||
"prefix": "comp",
|
"prefix": "comp",
|
||||||
"body": [
|
"body": [
|
||||||
"import React from \"react\";",
|
"import React from \"react\";",
|
||||||
"",
|
"",
|
||||||
"export default function ${1:name}({ className }: { className?: string }) {",
|
"export default function ${1:name}({ className }: { className?: string }) {",
|
||||||
" return (",
|
" return (",
|
||||||
" <${2:div} className={`${className}`}>",
|
" <${2:div} className={`\\${className}`}>",
|
||||||
" $0",
|
|
||||||
" </${2:div}>",
|
" </${2:div}>",
|
||||||
" )",
|
" )",
|
||||||
|
" ${0:{\/* asdf *\/}}",
|
||||||
"}"
|
"}"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
32
.config/scripts/copy-pass.sh
Executable file
32
.config/scripts/copy-pass.sh
Executable file
@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Проверяем, установлена ли утилита pass
|
||||||
|
if ! command -v pass &> /dev/null; then
|
||||||
|
notify-send "Password Manager" "pass utility not found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Получаем список паролей (убираем расширение .gpg и путь до password-store)
|
||||||
|
password_list=$(find ~/.password-store/ -type f -name "*.gpg" | sed "s|$HOME/.password-store/||g" | sed 's/\.gpg$//')
|
||||||
|
|
||||||
|
# Проверяем, есть ли пароли
|
||||||
|
if [ -z "$password_list" ]; then
|
||||||
|
notify-send "Password Manager" "No passwords found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Показываем меню rofi и получаем выбор пользователя
|
||||||
|
selected_pass=$(echo "$password_list" | rofi -dmenu -p "Select Password:")
|
||||||
|
|
||||||
|
# Если пользователь что-то выбрал
|
||||||
|
if [ -n "$selected_pass" ]; then
|
||||||
|
# Получаем пароль и копируем его в буфер обмена
|
||||||
|
error_output=$(pass show -c "$selected_pass" 2>&1)
|
||||||
|
|
||||||
|
# Проверяем статус выполнения
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
notify-send "Password Manager" "Password for $selected_pass copied to clipboard"
|
||||||
|
else
|
||||||
|
notify-send "Password Manager" "Failed to get password for $selected_pass: \n\n$error_output" -u critical
|
||||||
|
fi
|
||||||
|
fi
|
@ -18,7 +18,7 @@ getFlagEmoji() {
|
|||||||
}
|
}
|
||||||
# TODO: get keyboard name dynamically
|
# TODO: get keyboard name dynamically
|
||||||
countryCode=$(hyprctl devices -j |
|
countryCode=$(hyprctl devices -j |
|
||||||
jq -r '.keyboards[] | select(.name == "at-translated-set-2-keyboard") | .active_keymap' |
|
jq -r '.keyboards[] | select(.main == true) | .active_keymap' |
|
||||||
cut -c1-2 |
|
cut -c1-2 |
|
||||||
tr 'a-z' 'A-Z')
|
tr 'a-z' 'A-Z')
|
||||||
|
|
||||||
|
31
.config/scripts/select-vpn.sh
Executable file
31
.config/scripts/select-vpn.sh
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Получаем список VPN соединений
|
||||||
|
vpn_list=$(nmcli -t -f NAME,TYPE connection show | grep vpn | cut -d':' -f1)
|
||||||
|
|
||||||
|
# Проверяем, есть ли VPN соединения
|
||||||
|
if [ -z "$vpn_list" ]; then
|
||||||
|
notify-send "VPN" "No VPN connections found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Преобразуем список в формат, подходящий для rofi (каждая строка отдельно)
|
||||||
|
# vpn_options=$(echo "$vpn_list" | tr ' ' '\n')
|
||||||
|
|
||||||
|
# Показываем меню rofi и получаем выбор пользователя
|
||||||
|
selected_vpn=$(echo "$vpn_list" | rofi -dmenu -p "Select VPN:")
|
||||||
|
|
||||||
|
# Если пользователь что-то выбрал
|
||||||
|
if [ -n "$selected_vpn" ]; then
|
||||||
|
# Активируем выбранное VPN соединение
|
||||||
|
error_output=$(nmcli connection up "$selected_vpn" 2>&1)
|
||||||
|
|
||||||
|
# Проверяем статус выполнения
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
notify-send "VPN" "Connected to $selected_vpn successfully"
|
||||||
|
else
|
||||||
|
notify-send "VPN" "Failed to connect to $selected_vpn: \n\n$error_output"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
81
.config/scripts/set_brightness_other_monitors.sh
Executable file
81
.config/scripts/set_brightness_other_monitors.sh
Executable file
@ -0,0 +1,81 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Проверяем, передан ли аргумент (например, +10, -10 или абсолютное значение)
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
echo "Ошибка: укажи изменение яркости (например, +10, -10 или 50)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Временный файл для хранения значения яркости
|
||||||
|
TEMP_FILE="/tmp/ddc_brightness_value"
|
||||||
|
DEBOUNCE_FILE="/tmp/ddc_brightness_debounce"
|
||||||
|
|
||||||
|
# Функция для получения текущей яркости
|
||||||
|
get_current_brightness() {
|
||||||
|
ddcutil getvcp 10 | grep -oP '(?<=current value = )\s*\d+' | tr -d ' '
|
||||||
|
}
|
||||||
|
|
||||||
|
# Читаем текущее значение из файла или получаем с монитора, если файла нет
|
||||||
|
if [ -f "$TEMP_FILE" ]; then
|
||||||
|
CURRENT_VALUE=$(cat "$TEMP_FILE")
|
||||||
|
else
|
||||||
|
CURRENT_VALUE=$(get_current_brightness)
|
||||||
|
echo "$CURRENT_VALUE" > "$TEMP_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Вычисляем новое значение
|
||||||
|
if [[ "$1" =~ ^[+-] ]]; then
|
||||||
|
NEW_VALUE=$((CURRENT_VALUE + $1))
|
||||||
|
else
|
||||||
|
NEW_VALUE="$1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ограничиваем значение в пределах 0-100
|
||||||
|
if [ "$NEW_VALUE" -lt 0 ]; then
|
||||||
|
NEW_VALUE=0
|
||||||
|
elif [ "$NEW_VALUE" -gt 100 ]; then
|
||||||
|
NEW_VALUE=100
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Записываем новое значение во временный файл
|
||||||
|
echo "$NEW_VALUE" > "$TEMP_FILE"
|
||||||
|
echo "$NEW_VALUE" >> /tmp/wobpipe
|
||||||
|
|
||||||
|
# Обновляем метку времени для debounce
|
||||||
|
touch "$DEBOUNCE_FILE"
|
||||||
|
|
||||||
|
# Функция для установки яркости с debounce
|
||||||
|
apply_brightness() {
|
||||||
|
# Ждём 0.5 секунды после последнего изменения
|
||||||
|
sleep 0.5
|
||||||
|
|
||||||
|
# Проверяем, не изменился ли файл с тех пор
|
||||||
|
NOW=$(date +%s%3N)
|
||||||
|
LAST_CHANGE=$(cat "$TIMESTAMP_FILE" 2>/dev/null || echo 0)
|
||||||
|
|
||||||
|
# Проверяем, прошло ли 500 мс (0.5 с) с последнего изменения
|
||||||
|
if [ $((NOW - LAST_CHANGE)) -lt 500 ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Читаем финальное значение из файла
|
||||||
|
FINAL_VALUE=$(cat "$TEMP_FILE")
|
||||||
|
|
||||||
|
# Устанавливаем яркость
|
||||||
|
ddcutil setvcp 10 "$FINAL_VALUE" > /tmp/ddcutil_output 2>&1
|
||||||
|
|
||||||
|
# Получаем текущую яркость для вывода
|
||||||
|
RESULT="$(ddcutil getvcp 10)"
|
||||||
|
CURRENT_PERC="$(echo "$RESULT" | grep -oP '(?<=current value = )\s*\d+' | tr -d ' ')"
|
||||||
|
|
||||||
|
# Выводим результат и записываем в wobpipe
|
||||||
|
echo "$RESULT"
|
||||||
|
echo "\"$CURRENT_PERC\""
|
||||||
|
}
|
||||||
|
|
||||||
|
# Запускаем применение яркости в фоновом режиме, если ещё не запущено
|
||||||
|
if ! pgrep -f "apply_brightness" > /dev/null; then
|
||||||
|
apply_brightness &
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
@ -18,7 +18,7 @@ getFlagEmoji() {
|
|||||||
}
|
}
|
||||||
# TODO: get keyboard name dynamically
|
# TODO: get keyboard name dynamically
|
||||||
countryCode=$(hyprctl devices -j |
|
countryCode=$(hyprctl devices -j |
|
||||||
jq -r '.keyboards[] | select(.name == "at-translated-set-2-keyboard") | .active_keymap' |
|
jq -r '.keyboards[] | select(.main == true) | .active_keymap' |
|
||||||
cut -c1-2 |
|
cut -c1-2 |
|
||||||
tr 'a-z' 'A-Z')
|
tr 'a-z' 'A-Z')
|
||||||
|
|
||||||
|
@ -152,8 +152,8 @@
|
|||||||
},
|
},
|
||||||
"custom/layout": {
|
"custom/layout": {
|
||||||
"exec": "~/.config/waybar/get_layout.sh",
|
"exec": "~/.config/waybar/get_layout.sh",
|
||||||
"on-click": "hyprctl switchxkblayout at-translated-set-2-keyboard next",
|
"on-click": "hyprctl switchxkblayout all next",
|
||||||
"on-click-right": "hyprctl switchxkblayout at-translated-set-2-keyboard prev",
|
"on-click-right": "hyprctl switchxkblayout all prev",
|
||||||
"interval": 1
|
"interval": 1
|
||||||
},
|
},
|
||||||
// Wofi Application Launcher
|
// Wofi Application Launcher
|
||||||
|
@ -5,6 +5,8 @@
|
|||||||
unbind C-b
|
unbind C-b
|
||||||
set -g prefix C-Space
|
set -g prefix C-Space
|
||||||
|
|
||||||
|
bind-key -n C-\; send-keys C-\;
|
||||||
|
|
||||||
# ────────────────── prefix ctrl+a for nested sessions ────────────────
|
# ────────────────── prefix ctrl+a for nested sessions ────────────────
|
||||||
bind-key -n C-a send-prefix
|
bind-key -n C-a send-prefix
|
||||||
|
|
||||||
|
6
.zshrc
6
.zshrc
@ -43,6 +43,12 @@ case ":$PATH:" in
|
|||||||
*) export PATH="$PNPM_HOME:$PATH" ;;
|
*) export PATH="$PNPM_HOME:$PATH" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
GO_HOME="$(go env GOPATH)/bin"
|
||||||
|
case ":$PATH:" in
|
||||||
|
*":$GO_HOME:"*) ;;
|
||||||
|
*) export PATH="$GO_HOME:$PATH" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
# fzf customization
|
# fzf customization
|
||||||
if command -v fd > /dev/null; then
|
if command -v fd > /dev/null; then
|
||||||
export FZF_DEFAULT_COMMAND="fd --hidden --strip-cwd-prefix --exclude .git"
|
export FZF_DEFAULT_COMMAND="fd --hidden --strip-cwd-prefix --exclude .git"
|
||||||
|
BIN
Profile1.bcf
Normal file
BIN
Profile1.bcf
Normal file
Binary file not shown.
0
journal/2025/03/23.norg
Normal file
0
journal/2025/03/23.norg
Normal file
Loading…
x
Reference in New Issue
Block a user