many things changed
This commit is contained in:
parent
eefe4e4d13
commit
15babf9da3
@ -36,3 +36,10 @@ fi
|
||||
|
||||
# ──────────────────────── zoxide (cd -> zoxide) ──────────────────────
|
||||
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.enableCommentToCode": true
|
||||
"bitoAI.codeCompletion.enableCommentToCode": true,
|
||||
"database-client.autoSync": true
|
||||
}
|
@ -329,33 +329,6 @@
|
||||
# where there are multiple screens with very different dpi values.
|
||||
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
|
||||
# override settings for certain messages.
|
||||
#
|
||||
@ -484,10 +457,6 @@
|
||||
# set_stack_tag = "volume"
|
||||
#
|
||||
|
||||
[notification_sound]
|
||||
summary = "*"
|
||||
script = ~/.config/dunst/play-notif-sound.sh
|
||||
|
||||
[pomodoro]
|
||||
appname = "notify-send"
|
||||
summary = "Timer *"
|
||||
@ -495,16 +464,51 @@
|
||||
urgency = normal
|
||||
script = ~/.config/dunst/play-pomodoro.sh
|
||||
|
||||
[pomodoro]
|
||||
summary = "Timer *"
|
||||
urgency = normal
|
||||
script = ~/.config/dunst/play-pomodoro.sh
|
||||
|
||||
[low-battery]
|
||||
appname = "poweralertd"
|
||||
# summary = "Timer *"
|
||||
category = "power.low"
|
||||
script = ~/.config/dunst/play-low-battery-sound.sh
|
||||
|
||||
[proclickm]
|
||||
summary = "ProClickM"
|
||||
urgency = low
|
||||
timeout = 1
|
||||
history_ignore = yes
|
||||
|
||||
[critical-battery]
|
||||
appname = "poweralertd"
|
||||
# summary = "Timer *"
|
||||
urgency = critical
|
||||
category = "power.critical"
|
||||
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
|
||||
|
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
|
||||
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, E, exec, $fileManager # file manager
|
||||
bind = $mainMod, A, exec, $toggle_menu_cmd # wofi
|
||||
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 ───────────────────────────
|
||||
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, DELETE, exit, # pseudo
|
||||
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 ─────────────────────────
|
||||
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 ───────────────────────────────
|
||||
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 │
|
||||
@ -115,9 +121,26 @@ 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, L, exec, playerctl --player=$(cat ~/.config/chosen_player) next
|
||||
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 ───────────────────────
|
||||
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
|
||||
|
||||
# ─────────────────────── select playerctl player ─────────────────────
|
||||
bind= CTRL ALT SHIFT, P, exec, ~/.config/hypr/scripts/wofi-player.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: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'
|
||||
$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 │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
@ -158,9 +166,9 @@ source = ./conf/keybindings.conf
|
||||
# │ WINDOWRULES │
|
||||
# ╰──────────────────────────────────────────────────────────╯
|
||||
# ──────────────────────────────── copyq ──────────────────────────────
|
||||
windowrule = size 300 400,^(copyq)$
|
||||
windowrule = float,com.github.hluk.copyq
|
||||
windowrule = move onscreen cursor,com.github.hluk.copyq
|
||||
windowrule = size 300 400,class:^(copyq)$
|
||||
windowrule = float,class:com.github.hluk.copyq
|
||||
windowrule = move onscreen cursor,class:com.github.hluk.copyq
|
||||
|
||||
# ────────────────────── Browser Picture in Picture ──────────────────────
|
||||
windowrulev2 = float, title:^(Picture-in-Picture)$
|
||||
@ -172,25 +180,25 @@ windowrulev2 = float, title:(Media viewer)
|
||||
windowrulev2 = fullscreen, title:^(Media viewer)$
|
||||
|
||||
# different floating modals
|
||||
windowrule = maxsize 400 300, (blueman|io.crow_translate.CrowTranslate)
|
||||
windowrule = float, (pavucontrol|blueman-manager|wofi|rofi|imv|io.crow_translate.CrowTranslate)
|
||||
windowrule = pin, (pavucontrol|blueman-manager|wofi|rofi|io.crow_translate.CrowTranslate)
|
||||
windowrule = stayfocused, (pavucontrol|blueman-manager|wofi|rofi|io.crow_translate.CrowTranslate)
|
||||
windowrule = move onscreen cursor,(pavucontrol|blueman-manager|imv|io.crow_translate.CrowTranslate)
|
||||
windowrule = maxsize 400 300, class:(blueman|org.kde.CrowTranslate)
|
||||
windowrule = float, class:(pavucontrol|blueman-manager|wofi|Rofi|imv|org.kde.CrowTranslate)
|
||||
windowrule = pin, class:(pavucontrol|blueman-manager|wofi|Rofi|org.kde.CrowTranslate)
|
||||
windowrule = stayfocused, class:(pavucontrol|blueman-manager|wofi|Rofi|org.kde.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 1, title:^(.*)(Firefox)(.*)$
|
||||
windowrule = workspace special:music, title:(.*)((M|m)usic|(М|м)узыка)(.*)
|
||||
windowrule = float, title:(.*)((M|m)usic|(М|м)узыка)(.*)
|
||||
windowrule = size 1500 900, title:(.*)((M|m)usic|(М|м)узыка)(.*)
|
||||
# Example windowrule v2
|
||||
windowrulev2 = float,class:^(cursor-float)$
|
||||
windowrulev2 = move onscreen cursor,class:^(cursor-float)$
|
||||
windowrule = float,class:^(cursor-float)$
|
||||
windowrule = move onscreen cursor,class:^(cursor-float)$
|
||||
|
||||
windowrulev2 = float,class:^(dmenu)$
|
||||
windowrulev2 = pin,class:^(dmenu)$
|
||||
windowrulev2 = stayfocused,class:^(dmenu)$
|
||||
windowrule = float,class:^(dmenu)$
|
||||
windowrule = pin,class:^(dmenu)$
|
||||
windowrule = stayfocused,class:^(dmenu)$
|
||||
# windowrulev2 = move onscreen cursor,class:^(dmenu)$
|
||||
#
|
||||
|
||||
@ -199,13 +207,12 @@ windowrule = tile, class:(.*)(MATLAB)(.*)
|
||||
windowrule = workspace 6, class:(.*)(MATLAB)(.*)
|
||||
windowrule = size 400 400, class:(.*)(MATLAB)(.*)
|
||||
|
||||
windowrule = tile, (.*)(Figure)(.*)
|
||||
windowrule = workspace 6, (.*)(Figure)(.*)
|
||||
windowrule = size 400 400, (.*)(Figure)(.*)
|
||||
windowrule = tile, class:(.*)(Figure)(.*)
|
||||
windowrule = workspace 6, class:(.*)(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 = 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 {
|
||||
monitor =
|
||||
path = $HOME/wallpapers/isaac_cathedral.jpg
|
||||
}
|
||||
#
|
||||
source = ./hyprlock-bg.conf
|
||||
|
||||
label {
|
||||
monitor =
|
||||
@ -43,7 +40,7 @@ input-field {
|
||||
rounding = -1 # -1 means complete rounding (circle/oval)
|
||||
check_color = rgb(204, 136, 34)
|
||||
fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color
|
||||
fail_text = Неправильно, попробуй ещё раз! (попыток осталось: $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
|
||||
capslock_color = rgb(150, 34, 34)
|
||||
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: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", "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 │
|
||||
-- ╰─────────────────────────────────────────────────────────╯
|
||||
|
@ -113,6 +113,54 @@ return {
|
||||
protocol = "inspector",
|
||||
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",
|
||||
request = "launch",
|
||||
|
@ -66,6 +66,7 @@ return { -- Autocompletion
|
||||
-- This will auto-import if your LSP supports it.
|
||||
-- This will expand snippets if the LSP sent a snippet.
|
||||
["<C-y>"] = cmp.mapping.confirm({ select = true }),
|
||||
["<C-e>"] = cmp.mapping.abort(),
|
||||
|
||||
-- If you prefer more traditional completion keymaps,
|
||||
-- you can uncomment the following lines
|
||||
@ -76,7 +77,7 @@ return { -- Autocompletion
|
||||
-- Manually trigger a completion from nvim-cmp.
|
||||
-- Generally you don't need this, because nvim-cmp will display
|
||||
-- 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.
|
||||
-- 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 = {
|
||||
["core.defaults"] = {},
|
||||
["core.concealer"] = {},
|
||||
["core.integrations.image"] = {},
|
||||
["core.latex.renderer"] = {},
|
||||
-- ["core.integrations.image"] = {},
|
||||
-- ["core.latex.renderer"] = {},
|
||||
["core.export"] = {
|
||||
config = { -- Note that this table is optional and doesn't need to be provided
|
||||
-- Configuration here
|
||||
|
@ -16,6 +16,7 @@ local languagesPlugins = require("goodhumored.languages")
|
||||
require("lazy").setup({
|
||||
{ import = "goodhumored.appearance.code" },
|
||||
{ import = "goodhumored.appearance.theme" },
|
||||
{ import = "goodhumored.snacks.snacks-nvim" },
|
||||
{ import = "goodhumored.appearance.ui" },
|
||||
{ import = "goodhumored.appearance.tint-unfocused" },
|
||||
{ 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": {
|
||||
"scope": "typescript",
|
||||
"scope": "typescriptreact",
|
||||
"prefix": "comp",
|
||||
"body": [
|
||||
"import React from \"react\";",
|
||||
"",
|
||||
"export default function ${1:name}({className}: {className?: string}) {",
|
||||
"export default function ${1:name}({ className }: { className?: string }) {",
|
||||
" return (",
|
||||
" <${2:div} className={`${className}`}>",
|
||||
" $0",
|
||||
" <${2:div} className={`\\${className}`}>",
|
||||
" </${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
|
||||
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 |
|
||||
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
|
||||
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 |
|
||||
tr 'a-z' 'A-Z')
|
||||
|
||||
|
@ -152,8 +152,8 @@
|
||||
},
|
||||
"custom/layout": {
|
||||
"exec": "~/.config/waybar/get_layout.sh",
|
||||
"on-click": "hyprctl switchxkblayout at-translated-set-2-keyboard next",
|
||||
"on-click-right": "hyprctl switchxkblayout at-translated-set-2-keyboard prev",
|
||||
"on-click": "hyprctl switchxkblayout all next",
|
||||
"on-click-right": "hyprctl switchxkblayout all prev",
|
||||
"interval": 1
|
||||
},
|
||||
// Wofi Application Launcher
|
||||
|
@ -5,6 +5,8 @@
|
||||
unbind C-b
|
||||
set -g prefix C-Space
|
||||
|
||||
bind-key -n C-\; send-keys C-\;
|
||||
|
||||
# ────────────────── prefix ctrl+a for nested sessions ────────────────
|
||||
bind-key -n C-a send-prefix
|
||||
|
||||
|
6
.zshrc
6
.zshrc
@ -43,6 +43,12 @@ case ":$PATH:" in
|
||||
*) export PATH="$PNPM_HOME:$PATH" ;;
|
||||
esac
|
||||
|
||||
GO_HOME="$(go env GOPATH)/bin"
|
||||
case ":$PATH:" in
|
||||
*":$GO_HOME:"*) ;;
|
||||
*) export PATH="$GO_HOME:$PATH" ;;
|
||||
esac
|
||||
|
||||
# fzf customization
|
||||
if command -v fd > /dev/null; then
|
||||
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