mirror of
https://github.com/ksyasuda/dotfiles.git
synced 2026-06-12 09:13:31 -07:00
209 lines
9.2 KiB
Lua
209 lines
9.2 KiB
Lua
-- Set programs that you use
|
|
-- Generated by hyprlang2lua. Review TODOs before reloading Hyprland.
|
|
|
|
local terminal = "FONTCONFIG_FILE=/home/sudacode/.config/ghostty/ghostty-fonts.conf uwsm app -sa -- ghostty"
|
|
local fileManager = "uwsm app -sa -- thunar"
|
|
-- $menu = rofi -show drun
|
|
-- https://github.com/Vladimir-csp/uwsm#2-service-startup-notification-and-vars-set-by-compositor
|
|
-- $menu = rofi -show drun -run-command "uwsm app -- {cmd}"
|
|
local menu = "~/.config/rofi/launchers/type-6/launcher.sh 1"
|
|
-- See https://wiki.hyprland.org/Configuring/Keywords/
|
|
local mainMod = "ALT" -- Sets "Windows" key as main modifier
|
|
|
|
-- Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
|
hl.bind("SUPER + SUPER_L", hl.dsp.exec_cmd("~/.config/rofi/launchers/type-2/launcher.sh 10"))
|
|
hl.bind(mainMod .. " + RETURN", hl.dsp.exec_cmd(terminal))
|
|
hl.bind(mainMod .. " + Q", hl.dsp.window.close())
|
|
hl.bind(mainMod .. " + SHIFT + M", hl.dsp.exec_cmd("uwsm stop"))
|
|
hl.bind(mainMod .. " + E", hl.dsp.exec_cmd(fileManager))
|
|
hl.bind(mainMod .. " + V", hl.dsp.window.float({ action = "toggle" }))
|
|
hl.bind(mainMod .. " + d", hl.dsp.exec_cmd(menu))
|
|
-- bind = $mainMod, P, pseudo, # dwindle
|
|
hl.bind(mainMod .. " + SHIFT + p", hl.dsp.exec_cmd("~/.local/bin/hyprland-pin.sh"))
|
|
-- bind = $mainMod, t, togglesplit, # dwindle
|
|
hl.bind(mainMod .. " + f", hl.dsp.window.fullscreen(""))
|
|
hl.bind(mainMod .. " + i", hl.dsp.window.cycle_next(""))
|
|
|
|
-- Move focus with mainMod + arrow keys
|
|
hl.bind(mainMod .. " + h", hl.dsp.focus({ direction = "left" }))
|
|
hl.bind(mainMod .. " + l", hl.dsp.focus({ direction = "right" }))
|
|
hl.bind(mainMod .. " + k", hl.dsp.focus({ direction = "up" }))
|
|
hl.bind(mainMod .. " + j", hl.dsp.focus({ direction = "down" }))
|
|
|
|
hl.bind(mainMod .. " + SHIFT + j", hl.dsp.window.move({ direction = "d" }))
|
|
hl.bind(mainMod .. " + SHIFT + k", hl.dsp.window.move({ direction = "u" }))
|
|
hl.bind(mainMod .. " + SHIFT + h", hl.dsp.window.move({ direction = "l" }))
|
|
hl.bind(mainMod .. " + SHIFT + l", hl.dsp.window.move({ direction = "r" }))
|
|
hl.bind(mainMod .. " + SHIFT + c", hl.dsp.window.center())
|
|
|
|
-- Move focus to next monitor
|
|
hl.bind("CTRL+ALT + j", hl.dsp.focus({ monitor = "r" }))
|
|
hl.bind("CTRL+ALT + k", hl.dsp.focus({ monitor = "l" }))
|
|
|
|
-- Switch workspaces with mainMod + [0-9]
|
|
for i = 1, 10 do
|
|
local key = i % 10
|
|
hl.bind(
|
|
mainMod .. " + " .. key,
|
|
hl.dsp.focus({
|
|
workspace = i,
|
|
silent = true,
|
|
})
|
|
)
|
|
end
|
|
-- Move active window to a workspace with mainMod + SHIFT + [0-9]
|
|
for i = 1, 10 do
|
|
local key = i % 10 -- workspace 10 maps to key 0
|
|
hl.bind(
|
|
mainMod .. " + SHIFT + " .. key,
|
|
hl.dsp.window.move({
|
|
workspace = i,
|
|
follow = false,
|
|
silent = true,
|
|
})
|
|
)
|
|
end
|
|
|
|
-- Example special workspace (scratchpad)
|
|
-- hl.bind("SUPER + S", hl.dsp.workspace.toggle_special("magic"))
|
|
-- hl.bind("CTRL + SHIFT + S", hl.dsp.window.move({ workspace = "special:magic" }))
|
|
|
|
-- Scroll through existing workspaces with mainMod + scroll
|
|
hl.bind(mainMod .. " + mouse_down", hl.dsp.focus({ workspace = "e+1" }))
|
|
hl.bind(mainMod .. " + mouse_up", hl.dsp.focus({ workspace = "e-1" }))
|
|
|
|
-- Move/resize windows with mainMod + LMB/RMB and dragging
|
|
hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag())
|
|
hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize())
|
|
|
|
-- Laptop multimedia keys for volume and LCD brightness
|
|
hl.bind(
|
|
"XF86AudioRaiseVolume",
|
|
hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"),
|
|
{ locked = true, repeating = true }
|
|
)
|
|
hl.bind(
|
|
"XF86AudioLowerVolume",
|
|
hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"),
|
|
{ locked = true, repeating = true }
|
|
)
|
|
hl.bind(
|
|
"XF86AudioMute",
|
|
hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"),
|
|
{ locked = true, repeating = true }
|
|
)
|
|
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl s 10%+"), { locked = true, repeating = true })
|
|
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl s 10%-"), { locked = true, repeating = true })
|
|
hl.bind("F12", hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"), { locked = true, repeating = true })
|
|
hl.bind("F11", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), { locked = true, repeating = true })
|
|
hl.bind("F10", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), { locked = true, repeating = true })
|
|
|
|
-- Requires playerctl
|
|
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("mpc next"), { locked = true })
|
|
hl.bind("XF86AudioPause", hl.dsp.exec_cmd("mpc toggle"), { locked = true })
|
|
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("mpc toggle"), { locked = true })
|
|
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("mpc prev"), { locked = true })
|
|
hl.bind("F9", hl.dsp.exec_cmd("playerctl next"), { locked = true })
|
|
hl.bind("F8", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
|
|
hl.bind("F7", hl.dsp.exec_cmd("playerctl previous"), { locked = true })
|
|
-- bindl = , XF86AudioStop, exec, mpc stop
|
|
|
|
-- rofi
|
|
hl.bind(mainMod .. " + SHIFT + v", hl.dsp.exec_cmd("uwsm app -sb -- rofi-rbw"))
|
|
-- bind = $mainMod, w, exec, rofi -show window -theme $HOME/.config/rofi/launchers/type-2/style-2.rasi -dpi 96 -theme-str 'window {width: 35%;}'
|
|
hl.bind(mainMod .. " + SHIFT + w", hl.dsp.exec_cmd("~/.config/rofi/scripts/rofi-wallpaper.sh"))
|
|
hl.bind(mainMod .. " + SHIFT + d", hl.dsp.exec_cmd("~/.config/rofi/scripts/rofi-docs.sh"))
|
|
hl.bind("SUPER + SHIFT + j", hl.dsp.exec_cmd("~/.config/rofi/scripts/rofi-jellyfin-dir.sh"))
|
|
hl.bind("SUPER + t", hl.dsp.exec_cmd("~/.config/rofi/scripts/rofi-launch-texthooker-steam.sh"))
|
|
hl.bind(mainMod .. " + SHIFT + t", hl.dsp.exec_cmd("~/projects/scripts/popup-ai-translator.py"))
|
|
hl.bind("SUPER + SHIFT + g", hl.dsp.exec_cmd("~/.config/rofi/scripts/rofi-vn-helper.sh"))
|
|
hl.bind(mainMod .. " + SHIFT + i", hl.dsp.exec_cmd("~/.config/rofi/scripts/rofi-image-browser.sh"))
|
|
|
|
-- ncmcppp
|
|
hl.bind(mainMod .. " + n", hl.dsp.exec_cmd("uwsm app -sb -- ghostty --command=/usr/bin/ncmpcpp"))
|
|
|
|
-- notifications
|
|
hl.bind(mainMod .. " + SHIFT + n", hl.dsp.exec_cmd("swaync-client -t"))
|
|
|
|
-- mpv add
|
|
hl.bind("SUPER + m", hl.dsp.exec_cmd("~/.local/bin/mpv-add.sh"))
|
|
|
|
-- hl.bind("SUPER + SHIFT + s", hl.dsp.exec_cmd("slurp | grim -g - - | wl-copy"))
|
|
hl.bind("SUPER + SHIFT + s", hl.dsp.exec_cmd([[sh -c 'grim -g "$(slurp -d)" - | wl-copy']]))
|
|
hl.bind("code:107", hl.dsp.exec_cmd("~/.local/bin/screenshot"))
|
|
hl.bind("SHIFT + code:107", hl.dsp.exec_cmd("~/.local/bin/screenshot-active-window.sh"))
|
|
hl.bind("SUPER + code:107", hl.dsp.exec_cmd("~/.local/bin/screenshot-active-window.sh -s"))
|
|
hl.bind("SUPER + o", hl.dsp.exec_cmd("~/.local/bin/ocr.sh"))
|
|
hl.bind(mainMod .. " + o", hl.dsp.exec_cmd("~/.local/bin/rofi-open tab"))
|
|
-- bind = $mainMod SHIFT, o, exec, ~/.local/bin/rofi-open window
|
|
|
|
-- change wallpaper
|
|
hl.bind(mainMod .. " + CTRL + n", hl.dsp.exec_cmd("~/.local/bin/change-wallpaper"))
|
|
|
|
-- toggle focus between current and last focused window
|
|
-- hl.bind("ALT + Tab", hl.dsp.focus({ urgent_or_last = true }))
|
|
-- hl.bind("ALT + Tab", hl.dsp.window.cycle_next())
|
|
hl.bind("ALT + Tab", hl.dsp.focus({ last = true }))
|
|
|
|
hl.bind("CTRL + F9", hl.dsp.pass({ window = "class:^(com\\.obsproject\\.Studio)$" }))
|
|
hl.bind("CTRL + F10", hl.dsp.pass({ window = "class:^(com\\.obsproject\\.Studio)$" }))
|
|
|
|
hl.bind("CTRL + SHIFT + D", hl.dsp.exec_cmd("~/.local/bin/dragon"))
|
|
hl.bind("CTRL + ALT + F", hl.dsp.exec_cmd("~/.local/bin/favorite-wallpaper"))
|
|
|
|
hl.bind(mainMod .. " + z", hl.dsp.exec_cmd("uwsm app -sb -- zen-browser"))
|
|
|
|
hl.bind(
|
|
mainMod .. " + SHIFT + s",
|
|
hl.dsp.exec_cmd(
|
|
'rofi -show ssh -theme "'
|
|
.. "~/.config/rofi/launchers/type-2/style-2.rasi\" -terminal -theme-str 'window{width: 25%;} listview {columns: 1; lines: 10;}' ghostty -ssh-command \"ghostty --initial-command='TERM=kitty ssh {host}'\""
|
|
)
|
|
)
|
|
|
|
-- reload monitors
|
|
-- hl.bind(
|
|
-- "CTRL" .. mainMod .. " + SHIFT + R",
|
|
-- hl.dsp.exec_cmd("hyprctl dispatch dpms off && sleep 1 && hyprctl dispatch dpms on")
|
|
-- )
|
|
|
|
-- Disable keybinds with one master keybind
|
|
hl.bind(mainMod .. " + Page_Down", hl.dsp.submap("clean"))
|
|
hl.define_submap("clean", function()
|
|
-- Page Up: exit clean submap
|
|
hl.bind(mainMod .. " + Page_Up", hl.dsp.submap("reset"))
|
|
end)
|
|
|
|
hl.bind("SUPER + l", hl.dsp.exec_cmd("hyprlock"))
|
|
|
|
-- ANKI
|
|
hl.bind(mainMod .. " + a", hl.dsp.exec_cmd("~/.config/rofi/scripts/rofi-anki-script.sh"))
|
|
-- bind = $mainMod SHIFT, a, exec, ~/projects/scripts/screenshot-anki.sh -cdMinecraft
|
|
|
|
-- GSM
|
|
hl.bind("mouse:275", hl.dsp.exec_cmd("xdotool key alt+w"), { locked = true })
|
|
hl.bind("mouse:276", hl.dsp.exec_cmd("xdotool key alt+grave"), { locked = true })
|
|
hl.bind("ALT + g", hl.dsp.exec_cmd("/opt/mpv-yomitan/mpv-yomitan.AppImage --toggle"))
|
|
|
|
hl.bind("ALT + SHIFT + f", hl.dsp.exec_cmd("uwsm app -sb -- flameshot gui"))
|
|
|
|
-- F5
|
|
-- bind = ,code:71, exec, ~/projects/scripts/whisper_record_transcribe.py --mode toggle --output type
|
|
hl.bind(
|
|
"code:71",
|
|
hl.dsp.exec_cmd(
|
|
"uv run --directory ~/projects/scripts/faster-whisper-transcribe faster-whisper-transcribe --backend ctranslate2 --device cpu --mode toggle --output type"
|
|
)
|
|
)
|
|
|
|
-- SubMiner
|
|
hl.bind("ALT + SHIFT + O", hl.dsp.pass({ window = "class:^(SubMiner)$" }))
|
|
hl.bind("ALT + SHIFT + I", hl.dsp.pass({ window = "class:^(SubMiner)$" }))
|
|
hl.bind("ALT + SHIFT + C", hl.dsp.pass({ window = "class:^(SubMiner)$" }))
|
|
|
|
-- {{{ scrolling
|
|
hl.bind(mainMod .. " + comma", hl.dsp.layout("swapcol l"))
|
|
hl.bind(mainMod .. " + period", hl.dsp.layout("fit all"))
|
|
hl.bind(mainMod .. " + slash", hl.dsp.layout("fit active"))
|
|
-- }}}
|