Compare commits

1 Commits
Author SHA1 Message Date
Honney 78acf6f6d2 Save current work 2026-06-14 19:47:24 +02:00
73 changed files with 1415 additions and 1609 deletions
+2 -3
View File
@@ -2,7 +2,6 @@
*.log *.log
hyprlock.conf hyprlock.conf
hyprpaper.conf hyprpaper.conf
user_config/*
config/autostart.conf
scripts/autostart/workspace scripts/autostart/workspace
config/color.lua
scripts/hypridle/screen_off.sh
scripts/hypridle/screen_on.sh
-3
View File
@@ -1,3 +0,0 @@
# Readme of the repository
## If hypridle screen turning off breaks
Remove scripts/hypridle/screen_off.sh and scripts/hypridle/screen_on.sh
-34
View File
@@ -1,34 +0,0 @@
hl.on("hyprland.start", function ()
hl.exec_cmd("systemctl --user start graphical-session.target")
hl.exec_cmd("nm-applet")
hl.exec_cmd("gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'")
hl.exec_cmd("dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP")
hl.exec_cmd("systemctl --user start hyprpolkitagent")
hl.exec_cmd("tmux new-session -d -s keyring '/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gpg'")
hl.exec_cmd("tmux new-session -d -s hypridle 'hypridle'")
hl.exec_cmd("tmux new-session -d -s hyprpaper 'hyprpaper'")
hl.exec_cmd("tmux new-session -d -s qs 'env QT_QPA_PLATFORMTHEME=qt6ct quickshell'")
if HOSTNAME == "honney-main" then
hl.exec_cmd("tmux new-session -d -s ydotool 'ydotoold'")
hl.exec_cmd("tmux new-session -d -s ollama '/usr/bin/ollama serve'")
hl.exec_cmd("tmux new-session -d -s fah 'cd ~/.local/share/fah && fah-client'")
hl.exec_cmd("tmux new-session -d -s carla 'carla -n /home/honney/Music/1Player.carxp'")
hl.exec_cmd("bash -c '~/.config/hypr/scripts/audio/1player.sh'")
hl.exec_cmd("bash -c '~/.config/hypr/scripts/goxlr/goxlr-start.sh > ~/.config/hypr/scripts/goxlr/goxlr-start.log'")
hl.exec_cmd("bash -c 'sleep 2 && ~/.config/hypr/scripts/wallpapers/random_wallpaper.sh > ~/.config/hypr/scripts/wallpapers/random_wallpaper.log'")
hl.exec_cmd("nextcloud")
hl.exec_cmd("librewolf")
hl.exec_cmd("thunderbird")
hl.exec_cmd("discord")
elseif HOSTNAME == "hp-laptop" then
hl.exec_cmd("bash -c 'sleep 2 && ~/.config/hypr/scripts/wallpapers/random_wallpaper.sh > ~/.config/hypr/scripts/wallpapers/random_wallpaper.log'")
hl.exec_cmd("tmux new-session -d -s ydotool 'ydotoold'")
hl.exec_cmd("tmux new-session -d -s ollama '/usr/bin/ollama serve'")
hl.exec_cmd("nextcloud")
hl.exec_cmd("discord")
end
hl.exec_cmd("bash -c '~/.config/hypr/scripts/autostart/autostart.sh > ~/.config/hypr/scripts/autostart/autostart.log'")
end)
+92
View File
@@ -0,0 +1,92 @@
# -- keybinds --
$mod = SUPER
bind = $mod, RETURN, exec, $terminal
bind = $mod, W, killactive, # "Quit"
bind = $mod, Q, killactive, # "Quit"
bind = $mod, F, fullscreen,
bind = $mod, V, togglefloating,
bind = $mod, D, exec, $menu # "Apps"
bind = $mod SHIFT, D, pseudo, # dwindle
# bind = $mod, J, togglesplit, # dwindle
# file manager
bind = $mod, E, exec, $fileManager
# hyprlock
bind = $mod, L, exec, hyprlock
# switch workspaces
bind = $mod, 1, workspace, 1
bind = $mod, 2, workspace, 2
bind = $mod, 3, workspace, 3
bind = $mod, 4, workspace, 4
bind = $mod, 5, workspace, 5
bind = $mod, 6, workspace, 6
bind = $mod, 7, workspace, 7
bind = $mod, 8, workspace, 8
bind = $mod, 9, workspace, 9
bind = $mod, 0, workspace, 10
bind = $mod, TAB, workspace, e+1
bind = $mod, F1, workspace, 401
# move active window to a workspace
bind = $mod SHIFT, 1, movetoworkspace, 1
bind = $mod SHIFT, 2, movetoworkspace, 2
bind = $mod SHIFT, 3, movetoworkspace, 3
bind = $mod SHIFT, 4, movetoworkspace, 4
bind = $mod SHIFT, 5, movetoworkspace, 5
bind = $mod SHIFT, 6, movetoworkspace, 6
bind = $mod SHIFT, 7, movetoworkspace, 7
bind = $mod SHIFT, 8, movetoworkspace, 8
bind = $mod SHIFT, 9, movetoworkspace, 9
bind = $mod SHIFT, 0, movetoworkspace, 10
bind = $mod SHIFT, F1, movetoworkspace, 401
# move focus
bind = $mod, left, movefocus, l
bind = $mod, right, movefocus, r
bind = $mod, up, movefocus, u
bind = $mod, down, movefocus, d
# scroll through existing workspaces
bind = $mod, mouse_down, workspace, e+1
bind = $mod, mouse_up, workspace, e-1
# move/resize windows
bindm = $mod, mouse:272, movewindow
bindm = $mod SHIFT, mouse:272, resizewindow
bind = $mod SHIFT, right, resizeactive, 30 0
bind = $mod SHIFT, left, resizeactive, -30 0
bind = $mod SHIFT, up, resizeactive, 0 -30
bind = $mod SHIFT, down, resizeactive, 0 30
bind = $mod SHIFT, L, moveactive, 30 0
bind = $mod SHIFT, I, moveactive, -30 0
bind = $mod SHIFT, O, moveactive, 0 -30
bind = $mod SHIFT, K, moveactive, 0 30
# screenshots
bind = $mod, P, exec, ~/.config/hypr/scripts/screenshot/screenshot_window.sh
bind = $mod ALT, P, exec, ~/.config/hypr/scripts/screenshot/screenshot_monitor.sh
bind = $mod SHIFT, P, exec, ~/.config/hypr/scripts/screenshot/screenshot_area.sh
bind = $mod SHIFT, S, exec, ~/.config/hypr/scripts/screenshot/screenshot_area_2.sh
# Scrolling
bind = $mod CTRL, left, layoutmsg, focus l
bind = $mod CTRL, right, layoutmsg, focus r
bind = $mod CTRL SHIFT, left, layoutmsg, swapcol l
bind = $mod CTRL SHIFT, right, layoutmsg, swapcol r
# Audio keys
bindel = , XF86AudioRaiseVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
bindel = , XF86AudioLowerVolume, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
# Video Keys
bindel = , XF86AudioPlay, exec, playerctl play-pause || playerctl play-pause
bindel = , XF86AudioNext, exec, playerctl next
bindel = , XF86AudioPrev, exec, playerctl previous
-125
View File
@@ -1,125 +0,0 @@
-- Set default applications
local terminal = "kitty"
local fileManager = "nautilus"
local menu = "wofi --show drun, run"
local lockscreen = "hyprlock"
-- open Software
hl.bind("SUPER + SHIFT + Q", hl.dsp.exec_cmd("firefox"))
hl.bind("SUPER+RETURN", hl.dsp.exec_cmd(terminal))
hl.bind("SUPER+D", hl.dsp.exec_cmd(menu))
hl.bind("SUPER+E", hl.dsp.exec_cmd(fileManager))
hl.bind("SUPER+L", hl.dsp.exec_cmd(lockscreen), { locked = true })
-- Hyprland hl.binds
-- Manipulating Windows/Software
hl.bind("SUPER+W", hl.dsp.window.close())
hl.bind("SUPER+Q", hl.dsp.window.close())
hl.bind("SUPER+SHIFT+Q", hl.dsp.window.kill())
hl.bind("SUPER+F", hl.dsp.window.fullscreen("maximized", "toggle"))
hl.bind("SUPER+V", hl.dsp.window.float({ action = "toggle" }))
hl.bind("SUPER+SHIFT+D", hl.dsp.window.pseudo)
-- Interacting with Workspaces
for i = 1, 9 do
if not (HOSTNAME == "honney-main" and i >= 1 and i <= 4) then
hl.bind("SUPER+" .. tostring(i), hl.dsp.focus({ workspace = tostring(i) }))
hl.bind("SUPER+CTRL+" .. tostring(i), hl.dsp.window.move({workspace = tostring(i), follow = false}))
hl.bind("SUPER+SHIFT+" .. tostring(i), hl.dsp.window.move({workspace = tostring(i), follow = true}))
end
end
hl.bind("SUPER+0", hl.dsp.focus({ workspace = "10" }))
hl.bind("SUPER+CTRL+0", hl.dsp.window.move({workspace = "10", follow = false}))
hl.bind("SUPER+SHIFT+0", hl.dsp.window.move({workspace = "10", follow = true}))
hl.bind("SUPER+F1", hl.dsp.focus({ workspace = "401" }))
hl.bind("SUPER+CTRL+F1", hl.dsp.window.move({workspace = "401", follow = false}))
hl.bind("SUPER+SHIFT+F1", hl.dsp.window.move({workspace = "401", follow = true}))
-- Scrolling
hl.bind("SUPER+CTRL+left", hl.dsp.layout("move -col"))
hl.bind("SUPER+CTRL+right", hl.dsp.layout("move +col"))
hl.bind("SUPER+mouse_left", hl.dsp.layout("move -col"))
hl.bind("SUPER+mouse_right", hl.dsp.layout("move +col"))
hl.bind("SUPER+CTRL+SHIFT+left", hl.dsp.layout("swapcol l"))
hl.bind("SUPER+CTRL+SHIFT+right", hl.dsp.layout("swapcol r"))
-- -- Resizing windows
-- hl.bind("SUPER+SHIFT+right", "resizeactive", "30 0")
-- hl.bind("SUPER+SHIFT+left", "resizeactive", "-30 0")
-- hl.bind("SUPER+SHIFT+up", "resizeactive", "0 -30")
-- hl.bind("SUPER+SHIFT+down", "resizeactive", "0 30")
-- Mouse Commands for moving windows
hl.bind("SUPER+mouse_down", hl.dsp.focus({ workspace = "e+1", on_current_monitor = false }))
hl.bind("SUPER+mouse_up", hl.dsp.focus({ workspace = "e+1", on_current_monitor = false }))
hl.bind("SUPER + mouse:272", hl.dsp.window.drag(), { mouse = true })
hl.bind("SUPER + mouse:273", hl.dsp.window.resize(), { mouse = true })
hl.bind("SUPER + SHIFT + mouse:272", hl.dsp.window.resize(), { mouse = true })
-- Move between workspaces/screens
hl.bind("SUPER+left" , hl.dsp.focus({ direction = "l" }))
hl.bind("SUPER+right", hl.dsp.focus({ direction = "r" }))
hl.bind("SUPER+up" , hl.dsp.focus({ direction = "u" }))
hl.bind("SUPER+down" , hl.dsp.focus({ direction = "d" }))
hl.bind("SUPER+TAB" , hl.dsp.focus({ workspace = "e+1", on_current_monitor = false }))
-- Screenshots
hl.bind("SUPER+P", hl.dsp.exec_cmd("~/.config/hypr/scripts/screenshot/screenshot_window.sh"))
hl.bind("SUPER+ALT+P", hl.dsp.exec_cmd("~/.config/hypr/scripts/screenshot/screenshot_monitor.sh"))
hl.bind("SUPER+SHIFT+P", hl.dsp.exec_cmd("~/.config/hypr/scripts/screenshot/screenshot_area.sh"))
hl.bind("SUPER+SHIFT+S", hl.dsp.exec_cmd("~/.config/hypr/scripts/screenshot/screenshot_area_2.sh"))
hl.bind("SUPER+CTRL+O", hl.dsp.exec_cmd("~/.config/hypr/scripts/screenshot/screenshot_ocr.sh"))
-- Audio Control
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"))
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ 0; wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"))
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"))
hl.bind("ALT+XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ 0; wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%+"))
hl.bind("ALT+XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ 0; wpctl set-volume @DEFAULT_AUDIO_SOURCE@ 5%-"))
hl.bind("ALT+XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"))
hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"))
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause || playerctl play-pause"))
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"))
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"))
-- German Umlaute
hl.bind("SUPER+a", hl.dsp.exec_cmd("wtype \"ä\""))
hl.bind("SUPER+SHIFT+a", hl.dsp.exec_cmd("wtype \"Ä\""))
hl.bind("SUPER+o", hl.dsp.exec_cmd("wtype \"ö\""))
hl.bind("SUPER+SHIFT+o", hl.dsp.exec_cmd("wtype \"Ö\""))
hl.bind("SUPER+u", hl.dsp.exec_cmd("wtype \"ü\""))
hl.bind("SUPER+SHIFT+u", hl.dsp.exec_cmd("wtype \"Ü\""))
hl.bind("SUPER+s", hl.dsp.exec_cmd("wtype \"ß\""))
hl.bind("SUPER+SHIFT+e", hl.dsp.exec_cmd("wtype \"\""))
-- Opening coder
hl.bind("SUPER+SHIFT+C", hl.dsp.exec_cmd("code --password-store=gnome-libsecret"))
hl.bind("SUPER+SHIFT+V", hl.dsp.exec_cmd("vscodium"))
-- device specifics
if HOSTNAME == "honney-main" then
for i = 1, 12 do
hl.bind("SUPER+SHIFT+CTRL+F"..tostring(i), hl.dsp.exec_cmd("~/.config/hypr/scripts/makropad/button"..string.format("%02d", i)..".sh"))
end
hl.bind("ALT+T", hl.dsp.exec_cmd("~/.config/hypr/scripts/writing/todo.sh"))
hl.bind("ALT+Y", hl.dsp.exec_cmd("~/.config/hypr/scripts/writing/tmdb.sh"))
end
if HOSTNAME == "honney-main" then
local script = "~/.config/hypr/scripts/cycle_workspace.sh"
for i = 1, 4 do
hl.bind("SUPER+" .. i, hl.dsp.exec_cmd(script .. " " .. i .. " focus"))
hl.bind("SUPER+CTRL+" .. i, hl.dsp.exec_cmd(script .. " " .. i .. " move"))
hl.bind("SUPER+SHIFT+" .. i, hl.dsp.exec_cmd(script .. " " .. i .. " move_follow"))
end
end
-- Quickshell
hl.bind("SUPER + SHIFT + W", hl.dsp.global("quickshell:Wallpaper"))
hl.bind("SUPER + SHIFT + J", hl.dsp.global("quickshell:JLearner"))
hl.bind("SUPER + SHIFT + L", hl.dsp.global("quickshell:WLogout"))
hl.bind("SUPER + SHIFT + R", hl.dsp.global("quickshell:QsReload"))
hl.bind("SUPER + SHIFT + N", hl.dsp.global("quickshell:NotificationHistory"))
+69
View File
@@ -0,0 +1,69 @@
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# Environment variables. See https://wiki.hyprland.org/Configuring/Environment-variables/
env = GTK_USE_PORTAL,1
# Set your defaults editor through ENV in ~/.config/hypr/UserConfigs/01-UserDefaults.conf
# environment-variables
# Toolkit Backend Variables
env = GDK_BACKEND,wayland,x11,*
#env = QT_QPA_PLATFORM,xcb
env = CLUTTER_BACKEND,wayland
#Run SDL2 applications on Wayland.
#Remove or set to x11 if games that provide older versions of SDL cause compatibility issues
#env = SDL_VIDEODRIVER,wayland
# xdg Specifications
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
# QT Variables
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = QT_QPA_PLATFORMTHEME,hyprqt6engine
env = QT_STYLE_OVERRIDE,kvantum # Maybe qt5-fix?
env = KVANTUM_THEME,ColloidDark
env = QT_ENABLE_HIGHDPI_SCALING,1
env = QT_QPA_PLATFORM,wayland
# hyprland-qt-support
env = QT_QUICK_CONTROLS_STYLE,org.hyprland.style
# xwayland apps scale fix (useful if you are use monitor scaling).
# Set same value if you use scaling in Monitors.conf
# 1 is 100% 1.5 is 150%
# see https://wiki.hyprland.org/Configuring/XWayland/
env = GDK_SCALE,1
env = QT_SCALE_FACTOR,1
# Bibata-Modern-Ice-Cursor
# NOTE! You must have the hyprcursor version to activate this.
# https://wiki.hyprland.org/Hypr-Ecosystem/hyprcursor/
#env = HYPRCURSOR_THEME,Bibata-Modern-Ice
#env = HYPRCURSOR_SIZE,24
# firefox
env = MOZ_ENABLE_WAYLAND,1
# electron >28 apps (may help) ##
# https://www.electronjs.org/docs/latest/api/environment-variables
env = ELECTRON_OZONE_PLATFORM_HINT,auto # auto selects Wayland if possible, X11 otherwise
# Aquamarine Environment Variables #### ( Hyprland > 0.45 )
# https://wiki.hyprland.org/Configuring/Environment-variables/#aquamarine-environment-variables----ref-httpsgithubcomhyprwmaquamarineblobmaindocsenvmd---
# env = AQ_TRACE,1 # Enables more verbose logging.
# env = AQ_DRM_DEVICES,/dev/dri/card1:/dev/dri/card0 # Set an explicit list of DRM devices (GPUs) to use. Its a colon-separated list of paths, with the first being the primary. E.g. /dev/dri/card1:/dev/dri/card0
# env = AQ_MGPU_NO_EXPLICIT,1 # Disables explicit syncing on mgpu buffers
# env = AQ_NO_MODIFIERS,1 # Disables modifiers for DRM buffers
#### Hyprland Environment Variables ####
# https://wiki.hyprland.org/Configuring/Environment-variables/#hyprland-environment-variables
# env = HYPRLAND_TRACE,1 # Enables more verbose logging.
# env = HYPRLAND_NO_RT,1 # Disables realtime priority setting by Hyprland.
# env = HYPRLAND_NO_SD_NOTIFY,1 # If systemd, disables the 'sd_notify' calls.
# env = HYPRLAND_NO_SD_VARS,1 # Disables management of variables in systemd and dbus activation environments.
-44
View File
@@ -1,44 +0,0 @@
-- Hyprland env
-- https://wiki.hypr.land/Configuring/Advanced-and-Cool/Environment-variables/
hl.env("HYPRLAND_TRACE", "1")
-- Toolkit Backend Variables
hl.env("GDK_BACKEND", "wayland,x11,*")
hl.env("QT_QPA_PLATFORM", "wayland;xcb")
hl.env("SDL_VIDEODRIVER", "wayland,x11") -- if older game fails set to x11
hl.env("CLUTTER_BACKEND", "wayland")
-- XDG Specifications
hl.env("XDG_CURRENT_DESKTOP", "Hyprland")
hl.env("XDG_SESSION_TYPE", "wayland")
hl.env("XDG_SESSION_DESKTOP", "Hyprland")
-- Qt Variables
hl.env("QT_AUTO_SCREEN_SCALE_FACTOR", "1")
hl.env("QT_WAYLAND_DISABLE_WINDOWDECORATION", "1")
-- enable hyprqt6engine
hl.env("QT_QPA_PLATFORMTHEME", "hyprqt6engine")
hl.env("QT_STYLE_OVERRIDE", "kvantum")
hl.env("QT_ENABLE_HIGHDPI_SCALING", "1")
-- hyprland-qt-support
hl.env("QT_ENABLE_HIGHDPI_SCALING", "1")
-- GDK Variables
hl.env("GTK_USE_PORTAL", "1")
hl.env("GDK_SCALE", "1")
-- Firefox
hl.env("MOZ_ENABLE_WAYLAND", "1")
-- electron
hl.env("ELECTRON_OZONE_PLATFORM_HINT", "auto")
-- -- set XDG
-- hl.env("XDG_DATA_DIRS", "/usr/local/share:/usr/share:~/.local/share:~/.icons")
-- nvidia fixes look here: https://wiki.hypr.land/Nvidia/
if HOSTNAME == "arch" then
hl.env("LIBVA_DRIVER_NAME", "nvidia")
hl.env("__GLX_VENDOR_LIBRARY_NAME", "nvidia")
hl.env("ELECTRON_OZONE_PLATFORM_HINT", "auto")
end
-14
View File
@@ -1,14 +0,0 @@
local f = io.popen("hostname 2>/dev/null")
HOSTNAME = "unknown"
if f then
HOSTNAME = (f:read("*l") or "unknown"):gsub("%s+", "")
f:close()
end
USER = "unknown"
if HOSTNAME ~= "unknown" then
if HOSTNAME == "honney-main" then
USER = "honney"
elseif HOSTNAME == "arch" then
USER = "teo"
end
end
-47
View File
@@ -1,47 +0,0 @@
hl.config({
input={
-- keyboard
kb_model = "",
kb_layout = "de",
kb_variant = "",
kb_options = "",
kb_rules = "",
kb_file = "",
numlock_by_default = true,
-- mouse
sensitivity = 0,
left_handed = false,
natural_scroll = false,
follow_mouse = 1,
touchpad = {
disable_while_typing = false,
natural_scroll = true,
scroll_factor = 0.15,
middle_button_emulation = true,
clickfinger_behavior = true,
drag_lock = 1,
tap_and_drag = true,
drag_3fg = 2,
},
}
})
if HOSTNAME == "honney-main" then
hl.config({
input={
kb_layout = "us",
}
})
end
-- To find the device names: hyprctl devices -j
hl.device({
name = "evision-rgb-keyboard",
kb_layout = "us"
})
for i = 1, 9 do
hl.device({
name = "evision-rgb-keyboard-" .. tostring(i),
kb_layout = "us"
})
end
+12
View File
@@ -0,0 +1,12 @@
# The config where the resolution, position and
# other monitor Stuff is set up
# monitor = name, resolution, position, scale
misc {
vrr = 2 # 0: off, 1: on, 2: fullscreen only
}
render {
cm_auto_hdr = 1 # 0: off, 1: on, 2: edid
}
-135
View File
@@ -1,135 +0,0 @@
if HOSTNAME == "honney-main" then
hl.monitor({
output = "desc:BNQ BenQ EX2710U Y8P00876019",
mode = "3840x2160@144",
position = "0x0",
scale = 1,
transform = 0,
-- bitdepth = 10,
-- cm = "srgb",
-- sdr_eotf = "default",
-- sdrbrightness = 1.0,
-- sdrsaturation = 1.0,
-- vrr = 0,
-- supports_wide_color = 1,
-- supports_hdr = 1,
-- sdr_min_luminance = 0.2,
-- sdr_max_luminance = 600,
})
hl.monitor({
output = "desc:ASUSTek COMPUTER INC PA279CRV S5LMSB007609",
mode = "3840x2160@60",
position = "-3840x0",
scale = 1,
transform = 0,
-- bitdepth = 10,
-- cm = "srgb",
-- sdr_eotf = "default",
-- sdrbrightness = 1.0,
-- sdrsaturation = 1.0,
-- vrr = 0,
-- supports_wide_color = 1,
-- supports_hdr = 1,
-- sdr_min_luminance = 0.2,
-- sdr_max_luminance = 400,
})
hl.monitor({
output = "desc:LG Electronics LG ULTRAFINE 503NTKF3L437",
mode = "3840x2160@60",
position = "0x-2160",
scale = 1,
transform = 2,
-- bitdepth = 10,
-- cm = "srgb",
-- sdr_eotf = "default",
-- sdrbrightness = 1.0,
-- sdrsaturation = 1.0,
-- vrr = 0,
-- supports_wide_color = 1,
-- supports_hdr = 1,
-- sdr_min_luminance = 0.2,
-- sdr_max_luminance = 400,
})
hl.monitor({
output = "desc:LG Electronics LG ULTRAGEAR 107MAKR2RE65",
mode = "1920x1080@144",
position = "-1920x-1080",
scale = 1,
transform = 2,
bitdepth = 10,
})
hl.monitor({
output = "desc:Dell Inc. DELL P2419H D4CN3Q2",
mode = "1920x1080@60",
position = "-1920x-2160",
scale = 1,
transform = 0,
})
elseif HOSTNAME == "hp-laptop" then
hl.monitor({
output = "desc:BNQ BenQ EX2710U 0000000000001",
mode = "3840x2160@120",
position = "960x-2160",
scale = 1,
transform = 0,
-- bitdepth = 10,
-- cm = "srgb",
-- sdr_eotf = "default",
-- sdrbrightness = 1.0,
-- sdrsaturation = 1.0,
-- vrr = 0,
-- supports_wide_color = 1,
-- supports_hdr = 1,
-- sdr_min_luminance = 0.2,
-- sdr_max_luminance = 600,
})
hl.monitor({
output = "desc:ASUSTek COMPUTER INC PA279CRV S5LMSB007609",
mode = "1920x1080@60",
position = "-960x-1080",
scale = 1,
transform = 0,
-- bitdepth = 10,
-- cm = "srgb",
-- sdr_eotf = "default",
-- sdrbrightness = 1.0,
-- sdrsaturation = 1.0,
-- vrr = 0,
-- supports_wide_color = 1,
-- supports_hdr = 1,
-- sdr_min_luminance = 0.2,
-- sdr_max_luminance = 400,
})
hl.monitor({
output = "desc:BOE 0x08A8",
mode = "1920x1080@60",
position = "0x0",
scale = 1,
transform = 0,
})
-- hl.monitor({
-- output = "desc:AOC 24B3HA2 AVKS29A004767",
-- mode = "1920x1080@120",
-- position = "-1920x0",
-- scale = 1,
-- transform = 0,
-- })
elseif HOSTNAME == "arch" then
hl.monitor({
output = "desc:AOC CU34G2XP 1Q1R4HA002436",
mode = "3440x1440@180",
position = "0x0",
scale = 1,
transform = 0,
})
hl.monitor({
output = "desc:AOC 24G1WG4 0x0001A57A",
mode = "1920x1080@60",
position = "-1920x0",
scale = 1,
transform = 0,
})
end
-- mirror string Output name to mirror
-- icc string Absolute path to an ICC profile
+76
View File
@@ -0,0 +1,76 @@
$GTK_THEME = "catppuccin-mocha-blue-standard+default"
$CURSOR_THEME = "DJ-FOX-C"
$ICON_THEME = "BeautyLine-Garuda"
$KVANTUM_THEME = "Catppuccin-Mocha-Blue"
# GTK Theming
env = GTK_THEME,Colloid-Dark
env = GTK_ICON_THEME,BeautyLine-Garuda
env = GTK_THEME_VARIANT,dark
env = XDG_CURRENT_DESKTOP,Hyprland
env = GDK_BACKEND,wayland,x11
env = GTK_USE_PORTAL,1
env = GTK_THEME_VARIANT,dark
# Qt/Kvantum Theming
# in env.conf
# Icons:
env = XDG_DATA_DIRS,/usr/local/share:/usr/share:~/.local/share:~/.icons
env = GTK_ICON_THEME,BeautyLine-Garuda
# Icons & Cursor
env = HYPRCURSOR_THEME,DJ-FOX-C
env = HYPRCURSOR_SIZE,24
env = XCURSOR_THEME,DJ-FOX-C
env = XCURSOR_SIZE,24
cursor {
no_hardware_cursors = true
}
# Window management
general {
gaps_in = 5
gaps_out = 8
border_size = 0
layout = dwindle
allow_tearing = false
}
decoration {
rounding = 5
active_opacity = 1
# inactive_opacity = 0.75
inactive_opacity = 1
fullscreen_opacity = 1
blur {
enabled = false
size = 3
passes = 1
}
}
animations {
enabled = yes
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = borderangle, 1, 8, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
misc {
force_default_wallpaper = 0
disable_hyprland_logo = true
}
scrolling {
column_width = 1
follow_focus = true
fullscreen_on_one_column = true
# explicit_column_widths = 0.17,0.3
}
-189
View File
@@ -1,189 +0,0 @@
hl.config({
general = {
border_size = 2,
gaps_in = 5,
gaps_out = 8,
float_gaps = 0,
gaps_workspaces = 0,
col = {
inactive_border = INACTIVE_COLOR,
-- active_border = { colors = { "rgba(ff0000ff)", "rgba(ffff00ff)", "rgba(00ff00ff)", "rgba(00ffffff)", "rgba(0000ffff)", "rgba(ff00ffff)" }, angle = 45 },
active_border = ACTIVE_COLOR,
nogroup_border = 0xffffaaff,
nogroup_border_active = 0xffff00ff,
},
layout = "dwindle",
no_focus_fallback = false,
resize_on_border = false,
extend_border_grab_area = 15,
hover_icon_on_border = true,
allow_tearing = false,
resize_corner = 0,
modal_parent_blocking = true,
locale = "de",
}
})
hl.config({
dwindle = {
force_split = 0,
preserve_split = false,
smart_split = false,
smart_resizing = true,
permanent_direction_override = false,
special_scale_factor = 1,
split_width_multiplier = 1.0,
use_active_for_splits = true,
default_split_ratio = 1.0,
split_bias = 0,
precise_mouse_move = false,
},
})
hl.config({
scrolling = {
fullscreen_on_one_column = false,
column_width = 0.9,
focus_fit_method = 0,
follow_focus = true,
follow_min_visible = 1,
explicit_column_widths = "0.05, 0.90, 0.05",
wrap_focus = true,
wrap_swapcol = true,
direction = "right",
},
})
if USER == "honney" then
hl.config({
decoration = {
rounding = 5,
active_opacity = 1,
inactive_opacity = 1,
dim_modal = true,
dim_inactive = true,
dim_strength = 0.35,
blur = {
enabled = true,
},
}
})
hl.config({
render = {
direct_scanout = 2,
cm_enabled = true,
cm_auto_hdr = 0,
}
})
elseif USER == "teo" then
hl.config({
decoration = {
rounding = 5,
active_opacity = 1,
inactive_opacity = 1,
dim_modal = false,
dim_inactive = false,
dim_strength = 0.35,
blur = {
enabled = true,
},
}
})
hl.config({
render = {
direct_scanout = 2,
cm_enabled = true,
cm_auto_hdr = 0,
}
})
else
hl.config({
decoration = {
rounding = 5,
active_opacity = 1,
inactive_opacity = 1,
dim_modal = true,
dim_inactive = true,
dim_strength = 0.35,
blur = {
enabled = true,
},
}
})
hl.config({
render = {
direct_scanout = 2,
cm_enabled = true,
cm_auto_hdr = 0,
}
})
end
-- MISC
hl.config({
misc = {
disable_hyprland_logo = true,
font_family = "CodeNewRoman Nerd Font",
splash_font_family = "CodeNewRoman Nerd Font",
force_default_wallpaper = 0,
vrr = 3,
animate_manual_resizes = true,
animate_mouse_windowdragging = true,
background_color = 0x000000,
on_focus_under_fullscreen = 0,
middle_click_paste = false,
key_press_enables_dpms = true,
mouse_move_enables_dpms = true
}
})
hl.config({
cursor ={
no_hardware_cursors = 1,
}
})
if HOSTNAME == "honney-main" then
hl.config({
cursor ={
default_monitor = "BNQ BenQ EX2710U Y8P00876019",
}
})
end
if USER == "honney" then
hl.config({
quirks ={
prefer_hdr = 0,
}
})
else
hl.config({
quirks ={
prefer_hdr = 0,
}
})
end
-- hl.config({
-- debug={
-- full_cm_proto = true,
-- }
-- })
-- Kvantum
hl.env("KVANTUM_THEME", "ColloidDark")
-- GTK
hl.env("GTK_THEME", "Colloid-Dark")
hl.env("GTK_ICON_THEME", "BeautyLine-Garuda")
hl.env("GTK_THEME_VARIANT", "dark")
-- Cursor
hl.env("HYPRCURSOR_THEME", "RosePine")
hl.env("HYPRCURSOR_SIZE", "36")
hl.env("XCURSOR_THEME", "RosePine")
hl.env("XCURSOR_SIZE", "36")
-136
View File
@@ -1,136 +0,0 @@
-- Recommended command for getting class/..:
-- sleep 2 && hyprctl activewindow
if HOSTNAME == "honney-main" then
--# Window rules on Monitor 3
hl.window_rule({
name = "Librewolf",
match = {
class = ".*librewolf.*"
},
workspace = "30 silent"
})
hl.window_rule({
name = "Mozilla Thunderbird",
match = {
class = ".*Thunderbird.*"
},
workspace = "31 silent"
})
--# Window rules on Monitor 4
hl.window_rule({
name = "Discord",
match = {
class = ".*discord.*"
},
workspace = "4 silent"
})
hl.window_rule({
name = "Signal",
match = {
class = ".*signal.*"
},
workspace = "4"
})
hl.window_rule({
name = "Nextcloud",
match = {
class = ".*nextcloud.*"
},
workspace = "40"
})
elseif HOSTNAME == "hp-laptop" then
hl.window_rule({
name = "Discord",
match = {
class = ".*discord.*"
},
workspace = "4 silent"
})
hl.window_rule({
name = "Signal",
match = {
class = ".*signal.*"
},
workspace = "4"
})
hl.window_rule({
name = "Nextcloud",
match = {
class = ".*nextcloud.*"
},
workspace = "40"
})
end
-- Videos
hl.window_rule({
name = "Youtube",
match = {
title = ".*YouTube — .*"
},
no_dim = true,
content = "video"
})
hl.window_rule({
name = "Crunchyroll",
match = {
title = ".*Crunchyroll — .*"
},
no_dim = true,
content = "video"
})
hl.window_rule({
name = "Fladder",
match = {
class = ".*fladder.*"
},
no_dim = true,
content = "video"
})
-- Images
hl.window_rule({
name = "Viewnior",
match = {
class = "viewnior"
},
no_dim = true,
content = "image"
})
hl.window_rule({
name = "Gimp",
match = {
class = "gimp"
},
no_dim = true,
content = "image"
})
-- Games
hl.window_rule({
name = "Steam Games",
match = {
class = "steam_app.*",
},
no_dim = true,
content = "game"
})
hl.window_rule({
name = "Eden",
match = {
class = ".*eden.*",
},
no_dim = true,
content = "game"
})
hl.window_rule({
name = "Minecraft",
match = {
class = ".*Minecraft.*",
},
no_dim = true,
content = "game"
})
-165
View File
@@ -1,165 +0,0 @@
if HOSTNAME == "honney-main" then
--# Workspaces on Monitor 1
hl.workspace_rule({
workspace = "1",
monitor = "desc:BNQ BenQ EX2710U Y8P00876019",
default = true,
layout = "scrolling",
persistent = true
})
hl.workspace_rule({
workspace = "10",
monitor = "desc:BNQ BenQ EX2710U Y8P00876019",
default = false,
persistent = true
})
hl.workspace_rule({
workspace = "11",
monitor = "desc:BNQ BenQ EX2710U Y8P00876019",
default = false,
persistent = true
})
hl.workspace_rule({
workspace = "12",
monitor = "desc:BNQ BenQ EX2710U Y8P00876019",
default = false,
persistent = true
})
--# Workspaces on Monitor 2
hl.workspace_rule({
workspace = "2",
monitor = "desc:ASUSTek COMPUTER INC PA279CRV S5LMSB007609",
default = true,
layout = "scrolling",
persistent = true
})
hl.workspace_rule({
workspace = "20",
monitor = "desc:ASUSTek COMPUTER INC PA279CRV S5LMSB007609",
default = false,
persistent = true
})
hl.workspace_rule({
workspace = "21",
monitor = "desc:ASUSTek COMPUTER INC PA279CRV S5LMSB007609",
default = false,
persistent = true
})
hl.workspace_rule({
workspace = "22",
monitor = "desc:ASUSTek COMPUTER INC PA279CRV S5LMSB007609",
default = false,
persistent = true
})
--# Workspaces on Monitor 3
hl.workspace_rule({
workspace = "3",
monitor = "desc:LG Electronics LG ULTRAFINE 503NTKF3L437",
default = true,
persistent = true
})
hl.workspace_rule({
workspace = "30",
monitor = "desc:LG Electronics LG ULTRAFINE 503NTKF3L437",
default = false,
persistent = true
})
hl.workspace_rule({
workspace = "31",
monitor = "desc:LG Electronics LG ULTRAFINE 503NTKF3L437",
default = false,
persistent = true
})
hl.workspace_rule({
workspace = "32",
monitor = "desc:LG Electronics LG ULTRAFINE 503NTKF3L437",
default = false,
persistent = true
})
--# Workspaces on Monitor 4
hl.workspace_rule({
workspace = "4",
monitor = "desc:LG Electronics LG ULTRAGEAR 107MAKR2RE65",
default = true,
persistent = true
})
hl.workspace_rule({
workspace = "40",
monitor = "desc:LG Electronics LG ULTRAGEAR 107MAKR2RE65",
default = false,
persistent = true
})
hl.workspace_rule({
workspace = "41",
monitor = "desc:LG Electronics LG ULTRAGEAR 107MAKR2RE65",
default = false,
persistent = true
})
hl.workspace_rule({
workspace = "42",
monitor = "desc:LG Electronics LG ULTRAGEAR 107MAKR2RE65",
default = false,
persistent = true
})
elseif HOSTNAME == "arch" then
hl.workspace_rule({
workspace = "1",
monitor = "desc:AOC CU34G2XP 1Q1R4HA002436",
persistent = true
})
hl.workspace_rule({
workspace = "2",
monitor = "desc:AOC CU34G2XP 1Q1R4HA002436",
persistent = true
})
hl.workspace_rule({
workspace = "3",
monitor = "desc:AOC CU34G2XP 1Q1R4HA002436",
persistent = true
})
hl.workspace_rule({
workspace = "4",
monitor = "desc:AOC CU34G2XP 1Q1R4HA002436",
persistent = true
})
hl.workspace_rule({
workspace = "5",
monitor = "desc:AOC 24G1WG4 0x0001A57A",
persistent = true
})
hl.workspace_rule({
workspace = "6",
monitor = "desc:AOC 24G1WG4 0x0001A57A",
persistent = true
})
hl.workspace_rule({
workspace = "7",
monitor = "desc:AOC 24G1WG4 0x0001A57A",
persistent = true
})
hl.workspace_rule({
workspace = "8",
monitor = "desc:AOC 24G1WG4 0x0001A57A",
persistent = true
})
else
hl.workspace_rule({
workspace = "1",
persistent = true
})
hl.workspace_rule({
workspace = "2",
persistent = true
})
hl.workspace_rule({
workspace = "3",
persistent = true
})
hl.workspace_rule({
workspace = "4",
persistent = true
})
end
+9
View File
@@ -0,0 +1,9 @@
# Needs To start first
exec-once = hypridle
exec-once = hyprpaper
# now via:
exec-once = bash -c 'sleep 2 && ~/.config/hypr/scripts/wallpapers/random_wallpaper.sh > ~/.config/hypr/scripts/wallpapers/random_wallpaper.log'
exec-once = gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = systemctl --user start hyprpolkitagent
exec-once = sleep 2 && hyprctl reload
+12
View File
@@ -0,0 +1,12 @@
# bind = modifier (win/shift/alt/CTRL), other_button, exec, command
# bind = $mod SHIFT, 1, movetoworkspace, 1
# Umlaute / German compatability on english Keyboard
bind = $mod, a, exec, wtype "ä"
bind = $mod SHIFT, a, exec, wtype "Ä"
bind = $mod, o, exec, wtype "ö"
bind = $mod SHIFT, o, exec, wtype "Ö"
bind = $mod, u, exec, wtype "ü"
bind = $mod SHIFT, u, exec, wtype "Ü"
bind = $mod, s, exec, wtype "ß"
bind = $mod SHIFT, e, exec, wtype "€"
-2
View File
@@ -1,2 +0,0 @@
ACTIVE_COLOR = 0xFFFF0000
INACTIVE_COLOR = 0xFF0000FF
Regular → Executable
+67
View File
@@ -0,0 +1,67 @@
general {
hide_cursor = true
no_fade_in = false
grace = 0
disable_loading_bar = true
}
background {
monitor =
path = ~/Pictures/Wallpapers/Static/blurred.jpg
blur_passes = 0
}
# -- time --
label {
monitor =
text = cmd[update:1000] echo "$(date +"%H:%M")"
color = 0xFFceca75
font_size = 80
font_family = JetBrains Mono ExtraBold
position = 0, 140
halign = center
valign = center
}
# -- quote --
label {
monitor =
text = - PAIN IS REAL, BUT SO IS HOPE -
color = 0xFFa5d0bb
font_size = 12
font_family = JetBrains Mono ExtraLight
position = 0, 80
halign = center
valign = center
}
# -- greeting --
label {
monitor =
text = Heya $USER :3
color = 0xFFceca75
font_size = 20
font_family = JetBrains Mono Light
position = 0, 0
halign = center
valign = center
}
# -- password input --
input-field {
monitor =
size = 230, 40
outline_thickness = 0
dots_size = 0.2
dots_spacing = 0.4
dots_center = true
inner_color = 0xFF4b4900
font_color = 0xFFceca75
fade_on_empty = false
placeholder_text = unlock the magic...
fail_color = 0xFFffb4ab
hide_input = false
position = 0, -50
halign = center
valign = center
}
+1 -1
View File
@@ -1,5 +1,5 @@
wallpaper { wallpaper {
monitor = * monitor = *
path = /home/honney/Pictures/Wallpapers/japan_old_emperor_stream_with_bridge.png path = /home/honney/Pictures/Wallpapers/Japanes_tempel_dark.png
fit_mode = cover fit_mode = cover
} }
+16
View File
@@ -0,0 +1,16 @@
input {
kb_layout = us
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
touchpad {
disable_while_typing = false
natural_scroll = true
scroll_factor = 0.15
tap-and-drag = true
}
sensitivity = 0 # -1.0 to 1.0; 0 means no modification.
numlock_by_default = true
}
+23
View File
@@ -0,0 +1,23 @@
monitor=,preferred,auto,auto
# Getting monitor info:
# hyprctl monitors -j
#
#
# Example:
# monitorv2 {
# output = desc:BNQ BenQ EX2710U Y8P00876019
# mode = 3840x2160@144
# position = 0x0
# scale = 1
# bitdepth = 10
# supports_hdr = 1
# transform = 0
# supports_wide_color = 1
# sdr_min_luminance = 1000
# sdr_max_luminance = 400
# }
#
# monitor = desc:LG Electronics LG ULTRAFINE 503NTKF3L437, 3840x2160@60, 0x-2160, 1, transform, 2, bitdepth, 10, cm, wide
#
# monitor = desc:LG Electronics LG ULTRAGEAR 107MAKR2RE65, 1920x1080@144, -1920x-1080, 1, transform, 2
+17
View File
@@ -0,0 +1,17 @@
# To get monitor names: hyprctl monitors -j
#
# To get the class/name: hyprctl clients -j | jq '.[] | select(.workspace.id == ID_OF_THE_WORKSPACE)'
# hyprctl clients -j | jq '.[] | select(.workspace.id == )'
#
# To enable scrolling
# workspace = 1, monitor:desc:BNQ BenQ EX2710U Y8P00876019, layout:scrolling, layoutopt:direction:right
#
# to put a specific workspace on a monitor
# workspace = 3, monitor:desc:LG Electronics LG ULTRAFINE 503NTKF3L437
#
# How to set windowrules:
# windowrule {
# name = Discord
# match:class = .*discord.*
# workspace = 4
# }
+2 -12
View File
@@ -1,10 +1,3 @@
# listener {
# timeout = 200
# on-timeout = notify-send -u low "You are idle!"
# on-resume = notify-send -u low "Welcome back!"
# ignore_inhibit = true
# }
listener { listener {
timeout = 300 timeout = 300
on-timeout = hyprlock on-timeout = hyprlock
@@ -12,9 +5,6 @@ listener {
listener { listener {
timeout = 360 timeout = 360
on-timeout = hyprctl dispatch "hl.dsp.dpms({action = 'off'})" on-timeout = bash -c 'for o in $(hyprctl monitors -j | jq -r ".[].name"); do wlopm --off "$o"; done'
on-resume = hyprctl dispatch "hl.dsp.dpms({action = 'on'})" on-resume = bash -c 'for o in $(hyprctl monitors -j | jq -r ".[].name"); do wlopm --on "$o"; done'
# alternative:
# on-timeout = wlopm --off '*'
# on-resume = wlopm --on '*'
} }
Executable
+18
View File
@@ -0,0 +1,18 @@
# _____ __ __ _____ _____ __ _____ _____ ____
# | | | | | _ | __ | | | _ | | | \
# | |_ _| __| -| |__| | | | | | |
# |__|__| |_| |__| |__|__|_____|__|__|_|___|____/
#
# by Bina & edited by Honney
# -- programs --
$terminal = kitty
$fileManager = nautilus# nemo # put your preffered fileManager here, choose keybind
$menu = wofi --show drun, run
# including all the sub configs
source = ~/.config/hypr/config/*
source = ~/.config/hypr/user_config/*
debug:disable_logs=false
debug:gl_debugging=true
-10
View File
@@ -1,10 +0,0 @@
require("config/hostname")
require("config/color")
require("config/bind")
require("config/env")
require("config/theme")
require("config/autostart")
require("config/monitor")
require("config/input")
require("config/workspacerules")
require("config/windowrules")
+28 -124
View File
@@ -1,132 +1,36 @@
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
WALLPAPER_DIR=$(scripts/install/wallpaper_dir.sh)
# ---------------------------- copy_missing() {
# UI helpers local dest="$1"
# ---------------------------- local filename
info() { echo -e "\033[1;34m[INFO]\033[0m $*"; } filename="$(basename "$dest")"
ok() { echo -e "\033[1;32m[ OK ]\033[0m $*"; } local src="$SCRIPT_DIR/examples/$filename.example"
warn() { echo -e "\033[1;33m[WARN]\033[0m $*"; }
fail() { echo -e "\033[1;31m[FAIL]\033[0m $*"; }
# ---------------------------- if [ -e "$dest" ]; then
# Packages echo "Already exists: $dest"
# ---------------------------- else
REQUIRED_PKGS=( echo "Creating: $dest"
hyprland-qt-support cp "$src" "$dest"
hyprcursor fi
hypridle
hyprlock
libnotify
jq
inetutils
tmux
grim
slurp
wl-clipboard
)
OPTIONAL_PKGS=(
hyprpaper "Wallpaper daemon" OFF
carla "Audio plugin host" OFF
gnome-keyring "Secrets management" OFF
curl "HTTP requests" OFF
wofi "Launcher" OFF
kitty "Terminal" OFF
nautilus "File manager" OFF
wtype "Typing tool" OFF
ydotool "Input automation" OFF
imagemagick "Image tools" OFF
playerctl "Media control" OFF
wlopm "Monitor power" OFF
satty "Screenshot editor" OFF
oxipng "PNG compressor" OFF
matugen "Theme generator" OFF
)
# ----------------------------
# Optional selection (ONLY whiptail use)
# ----------------------------
command -v whiptail &>/dev/null || {
fail "whiptail is required for selection"
exit 1
} }
info "Selecting optional packages..." if [ ! -d "$SCRIPT_DIR/user_config" ]; then
SELECTED=$(whiptail --title "Optional Packages" --checklist \ mkdir "$SCRIPT_DIR/user_config"
"Select extras to install:" 18 70 10 \ echo "$SCRIPT_DIR/user_config created"
"${OPTIONAL_PKGS[@]}" \
3>&1 1>&2 2>&3) || {
fail "Cancelled"
exit 1
}
OPT_ARGS=()
[[ -n "${SELECTED:-}" ]] && eval "OPT_ARGS=($SELECTED)"
ok "Selection complete"
# ----------------------------
# Config setup
# ----------------------------
info "Preparing config files..."
mkdir -p "$SCRIPT_DIR/scripts/autostart"
[[ ! -f "$SCRIPT_DIR/scripts/autostart/workspace" ]] && {
cp "$SCRIPT_DIR/examples/workspace.example" "$SCRIPT_DIR/scripts/autostart/workspace"
ok "workspace config created"
}
[[ ! -f "$SCRIPT_DIR/hyprlock.conf" ]] && {
cp "$SCRIPT_DIR/examples/hyprlock.conf.example" "$SCRIPT_DIR/hyprlock.conf"
ok "hyprlock config created"
}
[[ ! -f "$SCRIPT_DIR/hyprpaper.conf" ]] && {
cp "$SCRIPT_DIR/examples/hyprpaper.conf.example" "$SCRIPT_DIR/hyprpaper.conf"
ok "hyprpaper config created"
}
[[ ! -f "$SCRIPT_DIR/config/color.lua" ]] && {
cp "$SCRIPT_DIR/examples/color.lua.example" "$SCRIPT_DIR/config/color.lua"
ok "color config created"
}
[[ ! -f "$SCRIPT_DIR/config/color.lua" ]] && {
cp "$SCRIPT_DIR/examples/color.lua.example" "$SCRIPT_DIR/config/color.lua"
ok "color config created"
}
[[ ! -f "$SCRIPT_DIR/config/color.lua" ]] && {
cp "$SCRIPT_DIR/examples/color.lua.example" "$SCRIPT_DIR/config/color.lua"
ok "color config created"
}
# ----------------------------
# Install
# ----------------------------
info "Updating system..."
sudo pacman -Syu --noconfirm
ok "System updated"
info "Installing required packages..."
sudo pacman -S --needed --noconfirm "${REQUIRED_PKGS[@]}"
ok "Required packages installed"
if [[ ${#OPT_ARGS[@]} -gt 0 ]]; then
info "Installing optional packages..."
sudo pacman -S --needed --noconfirm "${OPT_ARGS[@]}"
ok "Optional packages installed"
else else
warn "No optional packages selected" echo "$SCRIPT_DIR/user_config exists"
fi fi
# ---------------------------- copy_missing "$SCRIPT_DIR/user_config/monitor.conf"
# Done copy_missing "$SCRIPT_DIR/user_config/input.conf"
# ---------------------------- copy_missing "$SCRIPT_DIR/user_config/workspace.conf"
echo copy_missing "$SCRIPT_DIR/scripts/autostart/workspace"
ok "Setup complete" copy_missing "$SCRIPT_DIR/user_config/bind.conf"
info "Restart Hyprland to apply changes" copy_missing "$SCRIPT_DIR/user_config/input.conf"
copy_missing "$SCRIPT_DIR/hyprlock.conf"
copy_missing "$SCRIPT_DIR/hyprpaper.conf"
copy_missing "$SCRIPT_DIR/config/autostart.conf"
echo "The script will now install dependencies via pacman"
sudo pacman -S --needed hyprland-qt-support hyprcursor hypridle hyprlock hypridle
+641 -96
View File
@@ -14,26 +14,518 @@
<BeatsPerMinute>120</BeatsPerMinute> <BeatsPerMinute>120</BeatsPerMinute>
</Transport> </Transport>
<!-- Simple Low Pass Filter --> <!-- LSP Mixer x8 Stereo -->
<Plugin> <Plugin>
<Info> <Info>
<Type>LADSPA</Type> <Type>LV2</Type>
<Name>Simple Low Pass Filter</Name> <Name>LSP Mixer x8 Stereo</Name>
<Binary>/usr/lib/ladspa/filter.so</Binary> <URI>http://lsp-plug.in/plugins/lv2/mixer_x8_stereo</URI>
<Label>lpf</Label>
<UniqueID>1041</UniqueID>
</Info> </Info>
<Data> <Data>
<Active>Yes</Active> <Active>Yes</Active>
<ControlChannel>1</ControlChannel> <ControlChannel>1</ControlChannel>
<Options>0x0</Options> <Options>0x1</Options>
<Parameter> <Parameter>
<Index>0</Index> <Index>0</Index>
<Name>Cutoff Frequency</Name> <Name>Enabled</Name>
<Value>0.00916666630655527</Value> <Symbol>enabled</Symbol>
<Value>1</Value>
</Parameter> </Parameter>
<Parameter>
<Index>1</Index>
<Name>Mono output</Name>
<Symbol>mono</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>2</Index>
<Name>Output balance</Name>
<Symbol>bal</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>3</Index>
<Name>Dry amount</Name>
<Symbol>dry</Symbol>
<Value>1</Value>
</Parameter>
<Parameter>
<Index>4</Index>
<Name>Wet amount</Name>
<Symbol>wet</Symbol>
<Value>1</Value>
</Parameter>
<Parameter>
<Index>5</Index>
<Name>Output gain</Name>
<Symbol>g_out</Symbol>
<Value>1</Value>
</Parameter>
<Parameter>
<Index>10</Index>
<Name>Channel solo 1</Name>
<Symbol>cs_1</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>11</Index>
<Name>Channel mute 1</Name>
<Symbol>cm_1</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>12</Index>
<Name>Channel phase invert 1</Name>
<Symbol>ci_1</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>13</Index>
<Name>Channel pan left 1</Name>
<Symbol>cp_1l</Symbol>
<Value>-100</Value>
</Parameter>
<Parameter>
<Index>14</Index>
<Name>Channel pan right 1</Name>
<Symbol>cp_1r</Symbol>
<Value>100</Value>
</Parameter>
<Parameter>
<Index>15</Index>
<Name>Channel output balance 1</Name>
<Symbol>cb_1</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>16</Index>
<Name>Channel gain 1</Name>
<Symbol>cg_1</Symbol>
<Value>1</Value>
</Parameter>
<Parameter>
<Index>19</Index>
<Name>Channel solo 2</Name>
<Symbol>cs_2</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>20</Index>
<Name>Channel mute 2</Name>
<Symbol>cm_2</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>21</Index>
<Name>Channel phase invert 2</Name>
<Symbol>ci_2</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>22</Index>
<Name>Channel pan left 2</Name>
<Symbol>cp_2l</Symbol>
<Value>-100</Value>
</Parameter>
<Parameter>
<Index>23</Index>
<Name>Channel pan right 2</Name>
<Symbol>cp_2r</Symbol>
<Value>100</Value>
</Parameter>
<Parameter>
<Index>24</Index>
<Name>Channel output balance 2</Name>
<Symbol>cb_2</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>25</Index>
<Name>Channel gain 2</Name>
<Symbol>cg_2</Symbol>
<Value>1</Value>
</Parameter>
<Parameter>
<Index>28</Index>
<Name>Channel solo 3</Name>
<Symbol>cs_3</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>29</Index>
<Name>Channel mute 3</Name>
<Symbol>cm_3</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>30</Index>
<Name>Channel phase invert 3</Name>
<Symbol>ci_3</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>31</Index>
<Name>Channel pan left 3</Name>
<Symbol>cp_3l</Symbol>
<Value>-100</Value>
</Parameter>
<Parameter>
<Index>32</Index>
<Name>Channel pan right 3</Name>
<Symbol>cp_3r</Symbol>
<Value>100</Value>
</Parameter>
<Parameter>
<Index>33</Index>
<Name>Channel output balance 3</Name>
<Symbol>cb_3</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>34</Index>
<Name>Channel gain 3</Name>
<Symbol>cg_3</Symbol>
<Value>1</Value>
</Parameter>
<Parameter>
<Index>37</Index>
<Name>Channel solo 4</Name>
<Symbol>cs_4</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>38</Index>
<Name>Channel mute 4</Name>
<Symbol>cm_4</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>39</Index>
<Name>Channel phase invert 4</Name>
<Symbol>ci_4</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>40</Index>
<Name>Channel pan left 4</Name>
<Symbol>cp_4l</Symbol>
<Value>-100</Value>
</Parameter>
<Parameter>
<Index>41</Index>
<Name>Channel pan right 4</Name>
<Symbol>cp_4r</Symbol>
<Value>100</Value>
</Parameter>
<Parameter>
<Index>42</Index>
<Name>Channel output balance 4</Name>
<Symbol>cb_4</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>43</Index>
<Name>Channel gain 4</Name>
<Symbol>cg_4</Symbol>
<Value>1</Value>
</Parameter>
<Parameter>
<Index>46</Index>
<Name>Channel solo 5</Name>
<Symbol>cs_5</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>47</Index>
<Name>Channel mute 5</Name>
<Symbol>cm_5</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>48</Index>
<Name>Channel phase invert 5</Name>
<Symbol>ci_5</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>49</Index>
<Name>Channel pan left 5</Name>
<Symbol>cp_5l</Symbol>
<Value>-100</Value>
</Parameter>
<Parameter>
<Index>50</Index>
<Name>Channel pan right 5</Name>
<Symbol>cp_5r</Symbol>
<Value>100</Value>
</Parameter>
<Parameter>
<Index>51</Index>
<Name>Channel output balance 5</Name>
<Symbol>cb_5</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>52</Index>
<Name>Channel gain 5</Name>
<Symbol>cg_5</Symbol>
<Value>1</Value>
</Parameter>
<Parameter>
<Index>55</Index>
<Name>Channel solo 6</Name>
<Symbol>cs_6</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>56</Index>
<Name>Channel mute 6</Name>
<Symbol>cm_6</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>57</Index>
<Name>Channel phase invert 6</Name>
<Symbol>ci_6</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>58</Index>
<Name>Channel pan left 6</Name>
<Symbol>cp_6l</Symbol>
<Value>-100</Value>
</Parameter>
<Parameter>
<Index>59</Index>
<Name>Channel pan right 6</Name>
<Symbol>cp_6r</Symbol>
<Value>100</Value>
</Parameter>
<Parameter>
<Index>60</Index>
<Name>Channel output balance 6</Name>
<Symbol>cb_6</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>61</Index>
<Name>Channel gain 6</Name>
<Symbol>cg_6</Symbol>
<Value>1</Value>
</Parameter>
<Parameter>
<Index>64</Index>
<Name>Channel solo 7</Name>
<Symbol>cs_7</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>65</Index>
<Name>Channel mute 7</Name>
<Symbol>cm_7</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>66</Index>
<Name>Channel phase invert 7</Name>
<Symbol>ci_7</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>67</Index>
<Name>Channel pan left 7</Name>
<Symbol>cp_7l</Symbol>
<Value>-100</Value>
</Parameter>
<Parameter>
<Index>68</Index>
<Name>Channel pan right 7</Name>
<Symbol>cp_7r</Symbol>
<Value>100</Value>
</Parameter>
<Parameter>
<Index>69</Index>
<Name>Channel output balance 7</Name>
<Symbol>cb_7</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>70</Index>
<Name>Channel gain 7</Name>
<Symbol>cg_7</Symbol>
<Value>1</Value>
</Parameter>
<Parameter>
<Index>73</Index>
<Name>Channel solo 8</Name>
<Symbol>cs_8</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>74</Index>
<Name>Channel mute 8</Name>
<Symbol>cm_8</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>75</Index>
<Name>Channel phase invert 8</Name>
<Symbol>ci_8</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>76</Index>
<Name>Channel pan left 8</Name>
<Symbol>cp_8l</Symbol>
<Value>-100</Value>
</Parameter>
<Parameter>
<Index>77</Index>
<Name>Channel pan right 8</Name>
<Symbol>cp_8r</Symbol>
<Value>100</Value>
</Parameter>
<Parameter>
<Index>78</Index>
<Name>Channel output balance 8</Name>
<Symbol>cb_8</Symbol>
<Value>0</Value>
</Parameter>
<Parameter>
<Index>79</Index>
<Name>Channel gain 8</Name>
<Symbol>cg_8</Symbol>
<Value>1</Value>
</Parameter>
<CustomData>
<Type>http://lv2plug.in/ns/ext/atom#String</Type>
<Key>http://lsp-plug.in/plugins/lv2/mixer_x8_stereo/ports#send</Key>
<Value></Value>
</CustomData>
<CustomData>
<Type>http://lv2plug.in/ns/ext/atom#String</Type>
<Key>http://lsp-plug.in/plugins/lv2/mixer_x8_stereo/ports#return</Key>
<Value></Value>
</CustomData>
<CustomData>
<Type>http://lv2plug.in/ns/ext/atom#String</Type>
<Key>http://lsp-plug.in/plugins/lv2/mixer_x8_stereo/ports#ret_1</Key>
<Value></Value>
</CustomData>
<CustomData>
<Type>http://lv2plug.in/ns/ext/atom#String</Type>
<Key>http://lsp-plug.in/plugins/lv2/mixer_x8_stereo/ports#ret_2</Key>
<Value></Value>
</CustomData>
<CustomData>
<Type>http://lv2plug.in/ns/ext/atom#String</Type>
<Key>http://lsp-plug.in/plugins/lv2/mixer_x8_stereo/ports#ret_3</Key>
<Value></Value>
</CustomData>
<CustomData>
<Type>http://lv2plug.in/ns/ext/atom#String</Type>
<Key>http://lsp-plug.in/plugins/lv2/mixer_x8_stereo/ports#ret_4</Key>
<Value></Value>
</CustomData>
<CustomData>
<Type>http://lv2plug.in/ns/ext/atom#String</Type>
<Key>http://lsp-plug.in/plugins/lv2/mixer_x8_stereo/ports#ret_5</Key>
<Value></Value>
</CustomData>
<CustomData>
<Type>http://lv2plug.in/ns/ext/atom#String</Type>
<Key>http://lsp-plug.in/plugins/lv2/mixer_x8_stereo/ports#ret_6</Key>
<Value></Value>
</CustomData>
<CustomData>
<Type>http://lv2plug.in/ns/ext/atom#String</Type>
<Key>http://lsp-plug.in/plugins/lv2/mixer_x8_stereo/ports#ret_7</Key>
<Value></Value>
</CustomData>
<CustomData>
<Type>http://lv2plug.in/ns/ext/atom#String</Type>
<Key>http://lsp-plug.in/plugins/lv2/mixer_x8_stereo/ports#ret_8</Key>
<Value></Value>
</CustomData>
<CustomData>
<Type>http://lv2plug.in/ns/ext/atom#Object</Type>
<Key>http://lsp-plug.in/plugins/lv2/mixer_x8_stereo/preset_state</Key>
<Value>AAAAAFMAAABUAAAAAAAAAAEAAAARAAAAAAAAAAAAAABVAAAAAAAAAAQAAAAHAAAAAAAAAAAAAABWAAAAAAAAAAQAAAAHAAAAAAAAAAAAAAA=</Value>
</CustomData>
</Data> </Data>
</Plugin> </Plugin>
@@ -229,43 +721,50 @@
<CustomData> <CustomData>
<Type>http://lv2plug.in/ns/ext/atom#Object</Type> <Type>http://lv2plug.in/ns/ext/atom#Object</Type>
<Key>http://lsp-plug.in/plugins/lv2/mixer_x4_mono/preset_state</Key> <Key>http://lsp-plug.in/plugins/lv2/mixer_x4_mono/preset_state</Key>
<Value>AAAAAFUAAABWAAAAAAAAAAEAAAARAAAAAAAAAAAAAABXAAAAAAAAAAQAAAAHAAAAAAAAAAAAAABYAAAAAAAAAAQAAAAHAAAAAAAAAAAAAAA=</Value> <Value>AAAAAFMAAABUAAAAAAAAAAEAAAARAAAAAAAAAAAAAABVAAAAAAAAAAQAAAAHAAAAAAAAAAAAAABWAAAAAAAAAAQAAAAHAAAAAAAAAAAAAAA=</Value>
</CustomData> </CustomData>
</Data> </Data>
</Plugin> </Plugin>
<!-- Simple Low Pass Filter -->
<Plugin>
<Info>
<Type>LADSPA</Type>
<Name>Simple Low Pass Filter</Name>
<Binary>/usr/lib/ladspa/filter.so</Binary>
<Label>lpf</Label>
<UniqueID>1041</UniqueID>
</Info>
<Data>
<Active>Yes</Active>
<ControlChannel>1</ControlChannel>
<Options>0x0</Options>
<Parameter>
<Index>0</Index>
<Name>Cutoff Frequency</Name>
<Value>0.00916666630655527</Value>
</Parameter>
</Data>
</Plugin>
<ExternalPatchbay> <ExternalPatchbay>
<Connection> <Connection>
<Source>GoXLR Stream Mix 1:capture_FL</Source> <Source>GoXLR Chat Mic:capture_FL</Source>
<Target>Ryzen HD Audio Controller Analog Surround 5.1:playback_FL</Target> <Target>WEBRTC VoiceEngine:input_FL</Target>
</Connection> </Connection>
<Connection> <Connection>
<Source>GoXLR Stream Mix 1:capture_FL</Source> <Source>GoXLR Chat Mic:capture_FR</Source>
<Target>LSP Mixer x4 Mono:Input</Target> <Target>WEBRTC VoiceEngine:input_FR</Target>
</Connection>
<Connection>
<Source>GoXLR Stream Mix 1:capture_FL</Source>
<Target>Ryzen HD Audio Controller Analog Surround 5.1:playback_RL</Target>
</Connection>
<Connection>
<Source>GoXLR Stream Mix 1:capture_FR</Source>
<Target>Ryzen HD Audio Controller Analog Surround 5.1:playback_FR</Target>
</Connection>
<Connection>
<Source>GoXLR Stream Mix 1:capture_FR</Source>
<Target>LSP Mixer x4 Mono:Audio input 1</Target>
</Connection>
<Connection>
<Source>GoXLR Stream Mix 1:capture_FR</Source>
<Target>Ryzen HD Audio Controller Analog Surround 5.1:playback_RR</Target>
</Connection> </Connection>
<Connection> <Connection>
<Source>GoXLR 0:capture_AUX0</Source> <Source>GoXLR 0:capture_AUX0</Source>
<Target>Split GoXLR Stream Mix 1:input_AUX0</Target> <Target>Split GoXLR Broadcast Stream Mix:input_AUX0</Target>
</Connection> </Connection>
<Connection> <Connection>
<Source>GoXLR 0:capture_AUX1</Source> <Source>GoXLR 0:capture_AUX1</Source>
<Target>Split GoXLR Stream Mix 1:input_AUX1</Target> <Target>Split GoXLR Broadcast Stream Mix:input_AUX1</Target>
</Connection> </Connection>
<Connection> <Connection>
<Source>GoXLR 0:capture_AUX2</Source> <Source>GoXLR 0:capture_AUX2</Source>
@@ -292,28 +791,20 @@
<Target>GoXLR Utility:input_FR</Target> <Target>GoXLR Utility:input_FR</Target>
</Connection> </Connection>
<Connection> <Connection>
<Source>Split GoXLR System:output_AUX0</Source> <Source>GoXLR Broadcast Stream Mix:capture_FL</Source>
<Target>GoXLR 0:playback_AUX0</Target> <Target>Carla.226/LSP Mixer x8 Stereo:Audio input left 2</Target>
</Connection> </Connection>
<Connection> <Connection>
<Source>Split GoXLR System:output_AUX1</Source> <Source>GoXLR Broadcast Stream Mix:capture_FR</Source>
<Target>GoXLR 0:playback_AUX1</Target> <Target>Carla.226/LSP Mixer x8 Stereo:Audio input right 2</Target>
</Connection> </Connection>
<Connection> <Connection>
<Source>Split GoXLR Game:output_AUX2</Source> <Source>Family 17h/19h/1ah HD Audio Controller Analog Stereo:capture_FL</Source>
<Target>GoXLR 0:playback_AUX2</Target> <Target>Carla.226/LSP Mixer x8 Stereo:Audio input left 1</Target>
</Connection> </Connection>
<Connection> <Connection>
<Source>Split GoXLR Game:output_AUX3</Source> <Source>Family 17h/19h/1ah HD Audio Controller Analog Stereo:capture_FR</Source>
<Target>GoXLR 0:playback_AUX3</Target> <Target>Carla.226/LSP Mixer x8 Stereo:Audio input right 1</Target>
</Connection>
<Connection>
<Source>Split GoXLR Music:output_AUX6</Source>
<Target>GoXLR 0:playback_AUX6</Target>
</Connection>
<Connection>
<Source>Split GoXLR Music:output_AUX7</Source>
<Target>GoXLR 0:playback_AUX7</Target>
</Connection> </Connection>
<Connection> <Connection>
<Source>Split GoXLR Sample:output_AUX8</Source> <Source>Split GoXLR Sample:output_AUX8</Source>
@@ -332,16 +823,52 @@
<Target>GoXLR 0:playback_AUX5</Target> <Target>GoXLR 0:playback_AUX5</Target>
</Connection> </Connection>
<Connection> <Connection>
<Source>Simple Low Pass Filter:Output</Source> <Source>Split GoXLR Music:output_AUX6</Source>
<Target>Ryzen HD Audio Controller Analog Surround 5.1:playback_LFE</Target> <Target>GoXLR 0:playback_AUX6</Target>
</Connection> </Connection>
<Connection> <Connection>
<Source>LSP Mixer x4 Mono:Output</Source> <Source>Split GoXLR Music:output_AUX7</Source>
<Target>Simple Low Pass Filter:Input</Target> <Target>GoXLR 0:playback_AUX7</Target>
</Connection> </Connection>
<Connection> <Connection>
<Source>LSP Mixer x4 Mono:Output</Source> <Source>Split GoXLR Game:output_AUX2</Source>
<Target>Ryzen HD Audio Controller Analog Surround 5.1:playback_FC</Target> <Target>GoXLR 0:playback_AUX2</Target>
</Connection>
<Connection>
<Source>Split GoXLR Game:output_AUX3</Source>
<Target>GoXLR 0:playback_AUX3</Target>
</Connection>
<Connection>
<Source>Split GoXLR System:output_AUX0</Source>
<Target>GoXLR 0:playback_AUX0</Target>
</Connection>
<Connection>
<Source>Split GoXLR System:output_AUX1</Source>
<Target>GoXLR 0:playback_AUX1</Target>
</Connection>
<Connection>
<Source>Carla.226/LSP Mixer x8 Stereo:Output L</Source>
<Target>Family 17h/19h/1ah HD Audio Controller Analog Surround 5.1:playback_FL</Target>
</Connection>
<Connection>
<Source>Carla.226/LSP Mixer x8 Stereo:Output L</Source>
<Target>Carla.226/LSP Mixer x4 Mono:Audio input 1</Target>
</Connection>
<Connection>
<Source>Carla.226/LSP Mixer x8 Stereo:Output R</Source>
<Target>Family 17h/19h/1ah HD Audio Controller Analog Surround 5.1:playback_FR</Target>
</Connection>
<Connection>
<Source>Carla.226/LSP Mixer x8 Stereo:Output R</Source>
<Target>Carla.226/LSP Mixer x4 Mono:Audio input 2</Target>
</Connection>
<Connection>
<Source>WEBRTC VoiceEngine:output_FL</Source>
<Target>GoXLR Chat:playback_FL</Target>
</Connection>
<Connection>
<Source>WEBRTC VoiceEngine:output_FR</Source>
<Target>GoXLR Chat:playback_FR</Target>
</Connection> </Connection>
<Connection> <Connection>
<Source>Floorp:output_FL</Source> <Source>Floorp:output_FL</Source>
@@ -351,78 +878,96 @@
<Source>Floorp:output_FR</Source> <Source>Floorp:output_FR</Source>
<Target>GoXLR System:playback_FR</Target> <Target>GoXLR System:playback_FR</Target>
</Connection> </Connection>
<Connection>
<Source>Carla.226/LSP Mixer x4 Mono:Output</Source>
<Target>Family 17h/19h/1ah HD Audio Controller Analog Surround 5.1:playback_FC</Target>
</Connection>
<Connection>
<Source>Carla.226/LSP Mixer x4 Mono:Output</Source>
<Target>Carla.226/Simple Low Pass Filter:Input</Target>
</Connection>
<Connection>
<Source>Carla.226/Simple Low Pass Filter:Output</Source>
<Target>Family 17h/19h/1ah HD Audio Controller Analog Surround 5.1:playback_LFE</Target>
</Connection>
<Positions> <Positions>
<Position x1="1119" y1="629"> <Position x1="1105" y1="1578">
<Name>GoXLR Chat Mic</Name> <Name>GoXLR Chat Mic</Name>
</Position> </Position>
<Position x1="1447" y1="1476"> <Position x1="1034" y1="538" x2="1909" y2="1027">
<Name>GoXLR Stream Mix 1</Name>
</Position>
<Position x1="198" y1="1207" x2="1501" y2="777">
<Name>GoXLR 0</Name> <Name>GoXLR 0</Name>
</Position> </Position>
<Position x1="575" y1="828"> <Position x1="1155" y1="1705">
<Name>GoXLR Sampler</Name> <Name>GoXLR Sampler</Name>
</Position> </Position>
<Position x1="1119" y1="925" x2="2136" y2="1570"> <Position x1="1463" y1="881">
<Name>Ryzen HD Audio Controller Analog Stereo</Name> <Name>GoXLR Broadcast Stream Mix</Name>
</Position> </Position>
<Position x1="1119" y1="999"> <Position x1="1446" y1="1290" x2="2257" y2="1128">
<Name>Split GoXLR System</Name> <Name>Family 17h/19h/1ah HD Audio Controller Analog Stereo</Name>
</Position> </Position>
<Position x1="1119" y1="1073"> <Position x1="1301" y1="1233">
<Name>Split GoXLR Game</Name>
</Position>
<Position x1="1119" y1="1147">
<Name>Split GoXLR Music</Name>
</Position>
<Position x1="1119" y1="1221">
<Name>Split GoXLR Sample</Name> <Name>Split GoXLR Sample</Name>
</Position> </Position>
<Position x1="1119" y1="1295"> <Position x1="1300" y1="1081">
<Name>Split GoXLR Chat</Name> <Name>Split GoXLR Chat</Name>
</Position> </Position>
<Position x1="1119" y1="1369"> <Position x1="1299" y1="1151">
<Name>Split GoXLR Music</Name>
</Position>
<Position x1="1300" y1="1012">
<Name>Split GoXLR Game</Name>
</Position>
<Position x1="1308" y1="946">
<Name>Split GoXLR System</Name>
</Position>
<Position x1="1241" y1="1586">
<Name>WEBRTC VoiceEngine</Name>
</Position>
<Position x1="1277" y1="1360">
<Name>Floorp</Name>
</Position>
<Position x1="1447" y1="1333">
<Name>GoXLR System</Name> <Name>GoXLR System</Name>
</Position> </Position>
<Position x1="1119" y1="1443"> <Position x1="1447" y1="1407">
<Name>GoXLR Game</Name>
</Position>
<Position x1="1119" y1="1517">
<Name>GoXLR Music</Name>
</Position>
<Position x1="1119" y1="1591">
<Name>GoXLR Sample</Name> <Name>GoXLR Sample</Name>
</Position> </Position>
<Position x1="1119" y1="1665"> <Position x1="1447" y1="1629">
<Name>GoXLR Chat</Name> <Name>GoXLR Chat</Name>
</Position> </Position>
<Position x1="835" y1="1844" x2="2058" y2="1445"> <Position x1="1447" y1="1481">
<Name>Ryzen HD Audio Controller Analog Surround 5.1</Name> <Name>GoXLR Music</Name>
</Position> </Position>
<Position x1="1119" y1="1731"> <Position x1="1447" y1="1555">
<Name>Split GoXLR Chat Mic</Name> <Name>GoXLR Game</Name>
</Position> </Position>
<Position x1="1119" y1="1731"> <Position x1="1870" y1="1977" x2="2544" y2="1278">
<Name>Split GoXLR Stream Mix 1</Name> <Name>Family 17h/19h/1ah HD Audio Controller Analog Surround 5.1</Name>
</Position> </Position>
<Position x1="1119" y1="1731"> <Position x1="1426" y1="401">
<Name>Split GoXLR Sampler</Name> <Name>Split GoXLR Sampler</Name>
</Position> </Position>
<Position x1="528" y1="1184" x2="2132" y2="1931"> <Position x1="1413" y1="489">
<Name>Split GoXLR Chat Mic</Name>
</Position>
<Position x1="1424" y1="307">
<Name>Split GoXLR Broadcast Stream Mix</Name>
</Position>
<Position x1="1447" y1="1769" x2="1952" y2="2357">
<Name>Midi-Bridge</Name> <Name>Midi-Bridge</Name>
</Position> </Position>
<Position x1="1119" y1="1731" x2="1840" y2="2042"> <Position x1="1447" y1="1769" x2="1843" y2="1769">
<Name>BLE MIDI 1</Name> <Name>BLE MIDI 1</Name>
</Position> </Position>
<Position x1="1825" y1="1600" pluginId="0"> <Position x1="1874" y1="1252" pluginId="0">
<Name>Simple Low Pass Filter</Name> <Name>Carla.226/LSP Mixer x8 Stereo</Name>
</Position> </Position>
<Position x1="1621" y1="1544" pluginId="1"> <Position x1="2211" y1="1377" pluginId="1">
<Name>LSP Mixer x4 Mono</Name> <Name>Carla.226/LSP Mixer x4 Mono</Name>
</Position> </Position>
<Position x1="783" y1="825"> <Position x1="2476" y1="1444" pluginId="2">
<Name>GoXLR Utility</Name> <Name>Carla.226/Simple Low Pass Filter</Name>
</Position> </Position>
</Positions> </Positions>
</ExternalPatchbay> </ExternalPatchbay>
+1 -1
View File
@@ -8,4 +8,4 @@
killall carla killall carla
# start new session # start new session
tmux new-session -d -s carla '~/.config/hypr/scripts/audio/1Player.carxp' nohup carla -n ~/.config/hypr/scripts/audio/1Player.carxp &
+1 -1
View File
@@ -9,4 +9,4 @@
killall carla killall carla
# start new session # start new session
tmux new-session -d -s carla '~/.config/hypr/scripts/audio/2Player.carxp' nohup carla -n ~/.config/hypr/scripts/audio/2Player.carxp &
+5 -18
View File
@@ -87,9 +87,7 @@ while true; do
echo "[INFO] Found $CLASS -> $WIN (workspace $WORKSPACE)" echo "[INFO] Found $CLASS -> $WIN (workspace $WORKSPACE)"
hyprctl dispatch "hl.dsp.window.move({workspace = \"$WORKSPACE\", follow = false, window = \"address:$WIN\"})" hyprctl dispatch movetoworkspacesilent "$WORKSPACE,address:$WIN"
# echo "hyprctl dispatch 'hl.dsp.window.move({workspace = \"$WORKSPACE\", follow = false, window = \"address:$WIN\"})'"
# hyprctl dispatch movetoworkspacesilent "$WORKSPACE,address:$WIN"
DONE["$CLASS"]=1 DONE["$CLASS"]=1
done done
@@ -102,18 +100,7 @@ while true; do
sleep 0.5 sleep 0.5
done done
for i in 4 3 2 1; do hyprctl dispatch workspace 4
echo "hyprctl dispatch \"hl.dsp.focus({workspace = \"$i\"})\"" hyprctl dispatch workspace 3
hyprctl dispatch "hl.dsp.focus({workspace = \"$i\"})" hyprctl dispatch workspace 2
#echo "hyprctl dispatch workspace \"$i\"" hyprctl dispatch workspace 1
#hyprctl dispatch workspace "$i"
if [ "$i" -eq 3 ]; then
sleep 0.5
echo "R"
wtype "R"
sleep 0.5
fi
done
# tmux new-session -d -s qs 'sleep 4 && quickshell'
-51
View File
@@ -1,51 +0,0 @@
#!/bin/bash
BASE=$1
ACTION=$2
case $BASE in
1) GROUP="1 10 11 12" ;;
2) GROUP="2 20 21 22" ;;
3) GROUP="3 30 31 32" ;;
4) GROUP="4 40 41 42" ;;
*) exit 1 ;;
esac
CURRENT=$(hyprctl activeworkspace -j 2>/dev/null | jq '.id')
NEXT=""
FOUND=0
for WS in $GROUP; do
if [ "$FOUND" = "1" ]; then
NEXT=$WS
break
fi
[ "$WS" = "$CURRENT" ] && FOUND=1
done
if [ -z "$NEXT" ] && [ "$FOUND" = "1" ]; then
NEXT=$(echo "$GROUP" | awk '{print $1}')
fi
if [ -z "$NEXT" ]; then
for WS in $GROUP; do
[ "$WS" = "$BASE" ] && continue
for MWS in $(hyprctl monitors -j 2>/dev/null | jq '.[].activeWorkspace.id'); do
if [ "$WS" = "$MWS" ]; then
NEXT=$WS
break 2
fi
done
done
[ -z "$NEXT" ] && NEXT=$BASE
fi
case $ACTION in
focus)
hyprctl dispatch "hl.dsp.focus({ workspace = \"$NEXT\" })"
;;
move)
hyprctl dispatch "hl.dsp.window.move({ workspace = \"$NEXT\", follow = false })"
;;
move_follow)
hyprctl dispatch "hl.dsp.window.move({ workspace = \"$NEXT\", follow = true })"
;;
esac
+3 -2
View File
@@ -1,8 +1,9 @@
#!/bin/bash #!/bin/bash
# Source the functions file # Source the functions file
notify-send --app-name "GOXLR client" --icon "goxlr-utility" -u normal "Starting" "GoXLR inteface is starting" notify-send "GoXLR inteface is starting"
# nohup goxlr-daemon &
sleep 10 sleep 10
goxlr-client profiles device load 'Default' goxlr-client profiles device load 'Default'
notify-send --app-name "GOXLR client" --icon "goxlr-utility" -u normal "Started" "GoXLR start complete" notify-send "GoXLR start complete"
+6 -3
View File
@@ -1,8 +1,11 @@
#!/bin/bash #!/bin/bash
# Source the functions file
source "$HOME/.config/function_helper.sh"
SCRIPT="goxlr-daemon" SCRIPT="goxlr-daemon"
SCRIPT2="$HOME/.config/hypr/scripts/goxlr/goxlr-settings-start.sh" SCRIPT2="$HOME/.config/hypr/scripts/goxlr/goxlr-settings-start.sh"
tmux new-session -d -s goxlr "$SCRIPT" & nohup "$SCRIPT" &
notify-send --app-name "GOXLR daemon" --icon "goxlr-utility" -u normal "Started" "Launched the GOXLR Daemon to control the Audio" send_notification "normal" "GOXLR daemon Started" "Launched the GOXLR Daemon to control the Audio" "$HOME/.icons/BeautyLine-Garuda/apps/scalable/goxlr-utility.svg"
"$SCRIPT2" nohup "$SCRIPT2" &
-17
View File
@@ -1,17 +0,0 @@
#!/bin/bash
[ -f /sys/class/power_supply/BAT0/type ] || exit 1
type=$(</sys/class/power_supply/BAT0/type)
[ "$type" != "Battery" ] && exit 1
cap=$(</sys/class/power_supply/BAT0/capacity)
stat=$(</sys/class/power_supply/BAT0/status)
if [ "$stat" = "Discharging" ]; then
printf "󰁹 %s%%" "$cap"
elif [ "$stat" = "Charging" ]; then
printf "󰂄 %s%%" "$cap"
elif [ "$stat" = "Full" ]; then
printf "󰁹 %s%%" "Full"
else
printf ""
fi
-5
View File
@@ -1,5 +0,0 @@
#!/bin/bash
s=$(cut -d. -f1 /proc/uptime)
h=$((s / 3600))
m=$(((s % 3600) / 60))
printf "󱦟 %02d:%02dh" "$h" "$m"
-2
View File
@@ -20,7 +20,6 @@ fi
# Focus Discord # Focus Discord
hyprctl dispatch focuswindow address:$DISCORD_WIN hyprctl dispatch focuswindow address:$DISCORD_WIN
hyprctl dispatch "hl.dsp.focus({window = 'address:$DISCORD_WIN'})"
# Give it a moment to receive focus # Give it a moment to receive focus
sleep 0.1 sleep 0.1
@@ -32,7 +31,6 @@ wtype -M ctrl -M shift -k M -m shift -m ctrl
if [ -n "$ACTIVE_WIN" ]; then if [ -n "$ACTIVE_WIN" ]; then
sleep 0.1 sleep 0.1
hyprctl dispatch focuswindow address:$ACTIVE_WIN hyprctl dispatch focuswindow address:$ACTIVE_WIN
hyprctl dispatch "hl.dsp.focus({window = 'address:$ACTIVE_WIN'})"
fi fi
hyprctl notify 1 500 0 "Row 1, Colums 1" hyprctl notify 1 500 0 "Row 1, Colums 1"
+1 -1
View File
@@ -7,4 +7,4 @@ source "$HOME/.config/function_helper.sh"
send_notification "low" "Pressed Makropad Button" "Row 1, Colums 4" "$HOME/.icons/BeautyLine-Garuda/apps/scalable/keyboard.svg" send_notification "low" "Pressed Makropad Button" "Row 1, Colums 4" "$HOME/.icons/BeautyLine-Garuda/apps/scalable/keyboard.svg"
~/.config/hypr/scripts/makropad/writing/todo.sh ~/.config/hypr/scripts/writing/todo.sh
-2
View File
@@ -22,7 +22,6 @@ fi
# Focus the Discord window # Focus the Discord window
hyprctl dispatch focuswindow address:$DISCORD_WIN hyprctl dispatch focuswindow address:$DISCORD_WIN
hyprctl dispatch "hl.dsp.focus({window = 'address:$DISCORD_WIN'})"
# Give Discord time to focus # Give Discord time to focus
sleep 0.1 sleep 0.1
@@ -34,7 +33,6 @@ wtype -M ctrl -M shift -k D -m shift -m ctrl
if [ -n "$ACTIVE_WIN" ]; then if [ -n "$ACTIVE_WIN" ]; then
sleep 0.1 sleep 0.1
hyprctl dispatch focuswindow address:$ACTIVE_WIN hyprctl dispatch focuswindow address:$ACTIVE_WIN
hyprctl dispatch "hl.dsp.focus({window = 'address:$ACTIVE_WIN'})"
fi fi
# Add shared script Functions # Add shared script Functions
+1 -1
View File
@@ -5,4 +5,4 @@ source "$HOME/.config/function_helper.sh"
send_notification "low" "Pressed Makropad Button" "Row 2, Colums 4 (08)" "$HOME/.icons/BeautyLine-Garuda/apps/scalable/keyboard.svg" send_notification "low" "Pressed Makropad Button" "Row 2, Colums 4 (08)" "$HOME/.icons/BeautyLine-Garuda/apps/scalable/keyboard.svg"
~/.config/hypr/scripts/makropad/writing/tmdb.sh ~/.config/hypr/scripts/writing/tmdb.sh
-94
View File
@@ -1,94 +0,0 @@
#!/bin/bash
set -x
tmdbid() {
local type q url
type="$1"
shift
q=$(printf '%s' "$*" | jq -sRr @uri)
echo "tmdbid: type=$type encoded query: $q" >&2
if [ "$type" = "tv" ]; then
url="https://www.themoviedb.org/search/tv?query=$q"
else
url="https://www.themoviedb.org/search/movie?query=$q"
fi
echo "tmdbid: url: $url" >&2
local result
result=$(curl -sL -A 'Mozilla/5.0' "$url" \
| grep -oE '/(movie|tv)/[0-9]+' \
| head -1 \
| cut -d/ -f3)
echo "tmdbid: result: $result" >&2
echo "$result"
}
clean_title() {
local s="$1"
echo "clean_title: input: $s" >&2
s=$(echo "$s" | sed -E 's/ *\([^)]*[0-9]{4}[^)]*\)//')
echo "clean_title: after year removal: $s" >&2
s="${s//ä/ae}"; s="${s//ö/oe}"; s="${s//ü/ue}"
s="${s//Ä/Ae}"; s="${s//Ö/Oe}"; s="${s//Ü/Ue}"
echo "clean_title: after umlauts: $s" >&2
s=$(echo "$s" | tr -d '0-9')
echo "clean_title: after number removal: $s" >&2
s=$(echo "$s" | tr -cd '[:alpha:] [:space:]')
echo "clean_title: after special char removal: $s" >&2
s=$(echo "$s" | tr -s ' ')
echo "clean_title: final: $s" >&2
echo "$s"
}
ws="${1:-3}"
title=$(hyprctl clients -j | jq ".[] | select(.workspace.id == $ws)" | grep "The Movie Database" | sed 's/ — The Movie Database.*//' | sed 's/ "title": "//' | sed 's/"$//')
echo "title: $title" >&2
search_title=$(echo "$title" | sed -E 's/ *\([^)]*\) *//g')
echo "search_title: $search_title" >&2
if echo "$title" | grep -qi "TV [Ss]eries"; then
type="tv"
else
type="movie"
fi
echo "detected type: $type" >&2
tmdbid=$(tmdbid "$type" "$search_title")
echo "tmdbid: $tmdbid" >&2
if [ -z "$tmdbid" ]; then
if [ "$type" = "tv" ]; then
echo "retrying as movie" >&2
tmdbid=$(tmdbid "movie" "$search_title")
else
echo "retrying as tv" >&2
tmdbid=$(tmdbid "tv" "$search_title")
fi
echo "tmdbid (retry): $tmdbid" >&2
fi
if [[ $title =~ ([0-9]{4}) ]]; then
year="${BASH_REMATCH[1]}"
else
year=""
fi
echo "year: $year" >&2
clean=$(clean_title "$title")
echo "clean: $clean" >&2
result="$clean ($year) [tmdb-$tmdbid]"
echo "final wtype input: $result" >&2
wtype "$result"
-74
View File
@@ -1,74 +0,0 @@
#!/bin/bash
tmdbid() {
local type q url
type="$1"
shift
q=$(printf '%s' "$*" | jq -sRr @uri)
if [ "$type" = "tv" ]; then
url="https://www.themoviedb.org/search/tv?query=$q"
else
url="https://www.themoviedb.org/search/movie?query=$q"
fi
curl -sL -A 'Mozilla/5.0' "$url" \
| grep -oE '/(movie|tv)/[0-9]+' \
| head -1 \
| cut -d/ -f3
}
clean_title() {
local s="$1"
# remove (year) or (TV Series year) style parentheses
s=$(echo "$s" | sed -E 's/ *\([^)]*[0-9]{4}[^)]*\)//')
# umlaut replacement
s="${s//ä/ae}"; s="${s//ö/oe}"; s="${s//ü/ue}"
s="${s//Ä/Ae}"; s="${s//Ö/Oe}"; s="${s//Ü/Ue}"
# remove all numbers
s=$(echo "$s" | tr -d '0-9')
# remove special characters except spaces and letters
s=$(echo "$s" | tr -cd '[:alpha:] [:space:]')
# clean extra spaces
s=$(echo "$s" | tr -s ' ')
echo "$s"
}
ws="${1:-3}"
title=$(hyprctl clients -j | jq ".[] | select(.workspace.id == $ws)" | grep "The Movie Database" | sed 's/ — The Movie Database.*//' | sed 's/ "title": "//' | sed 's/"$//')
search_title=$(echo "$title" | sed -E 's/ *\([^)]*\) *//g')
if echo "$title" | grep -qi "TV [Ss]eries"; then
type="tv"
else
type="movie"
fi
tmdbid=$(tmdbid "$type" "$search_title")
if [ -z "$tmdbid" ]; then
if [ "$type" = "tv" ]; then
tmdbid=$(tmdbid "movie" "$search_title")
else
tmdbid=$(tmdbid "tv" "$search_title")
fi
fi
if [[ $title =~ ([0-9]{4}) ]]; then
year="${BASH_REMATCH[1]}"
else
year=""
fi
clean=$(clean_title "$title")
wtype "$clean ($year) [tmdb-$tmdbid]"
+9 -43
View File
@@ -3,51 +3,17 @@
### ~/.config/hypr/scripts/screenshot/screenshot_area.sh ### ~/.config/hypr/scripts/screenshot/screenshot_area.sh
### ###
time=$(date +%Y-%m-%d-%H%M%S) time=$(date +%Y-%m-%d-%I-%M-%S)
geometry=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | "\(.width)x\(.height)"')
dir="$(xdg-user-dir PICTURES)/Screenshots" dir="$(xdg-user-dir PICTURES)/Screenshots"
file="Screenshot_${time}.png" file="Screenshot_${time}_${geometry}.png"
mkdir -p "$dir" mkdir -p "$dir"
# Select a region with slurp; exit silently if cancelled (ESC/right-click) # Take screenshot of selected region using hyprshot
geometry=$(slurp) || exit 1 hyprshot -m region -o "$dir" -f "$file"
# Capture region, save it and copy to clipboard # Optional: open in swappy for annotation (since hyprshot doesn't pipe to swappy directly)
grim -g "$geometry" "$dir/$file" || exit 1 # if command -v swappy >/dev/null 2>&1; then
wl-copy -t image/png < "$dir/$file" # swappy -f "$dir/$file"
# fi
if command -v notify-send >/dev/null 2>&1; then
notify-send --app-name "Screenshot" --icon "camera-photo" -u normal "Area" "Screenshot saved $file"
fi
# Open the editor if satty is available (blocks until it is closed).
# satty writes the annotated image to --output-filename on Ctrl+s (and on
# Esc/Enter here) and exits immediately. It is launched floating, without
# decorations, with the pen preselected and moved over the captured area.
if command -v satty >/dev/null 2>&1; then
x=$(cut -d, -f1 <<< "$geometry")
y=$(cut -d, -f2 <<< "$geometry" | cut -d' ' -f1)
satty --filename "$dir/$file" --output-filename "$dir/$file" \
--copy-command wl-copy --actions-on-escape save-to-file --early-exit \
--floating-hack --no-window-decoration --initial-tool brush &
pid=$!
for _ in $(seq 1 20); do
addr=$(hyprctl clients -j 2>/dev/null | jq -r --argjson p "$pid" '.[] | select(.pid == $p) | .address' | head -1)
[ -n "$addr" ] && break
sleep 0.1
done
if [ -n "$addr" ]; then
# Lua config (Hyprland 0.55+) dispatches through hl.dsp.*, so try
# hyprctl eval first, then the raw lua dispatch, then classic syntax.
hyprctl eval "hl.dispatch(hl.dsp.window.move({ x = $x, y = $y, window = 'address:$addr' }))" >/dev/null 2>&1 ||
hyprctl dispatch "hl.dsp.window.move({ x = $x, y = $y, window = 'address:$addr' })" >/dev/null 2>&1 ||
hyprctl dispatch movewindowpixel "exact $x $y,address:$addr" >/dev/null 2>&1
fi
wait "$pid"
wl-copy -t image/png < "$dir/$file"
fi
# Compress the resulting image in the background if oxipng is available
if command -v oxipng >/dev/null 2>&1; then
oxipng --strip safe -o 4 "$dir/$file" &
fi
+8 -8
View File
@@ -1,14 +1,14 @@
#!/bin/bash #!/bin/bash
### ###
### ~/.config/hypr/scripts/screenshot/screenshot_area_2.sh ### ~/.config/hypr/scripts/screenshot/screenshot_area.sh
### ###
# Select a region with slurp; exit silently if cancelled (ESC/right-click) time=$(date +%Y-%m-%d-%I-%M-%S)
geometry=$(slurp) || exit 1 geometry=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | "\(.width)x\(.height)"')
dir="$(xdg-user-dir PICTURES)/Screenshots"
file="Screenshot_${time}_${geometry}.png"
# Capture region and copy to clipboard only mkdir -p "$dir"
grim -g "$geometry" - | wl-copy -t image/png
if command -v notify-send >/dev/null 2>&1; then # Take screenshot of selected region using hyprshot
notify-send --app-name "Screenshot" --icon "camera-photo" -u normal "Area" "Screenshot copied to clipboard" hyprshot -m region -o "$dir" -f "$file" --clipboard-only
fi
+9 -44
View File
@@ -3,52 +3,17 @@
### ~/.config/hypr/scripts/screenshot/screenshot_monitor.sh ### ~/.config/hypr/scripts/screenshot/screenshot_monitor.sh
### ###
time=$(date +%Y-%m-%d-%H%M%S) time=$(date +%Y-%m-%d-%I-%M-%S)
geometry=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | "\(.width)x\(.height)"')
dir="$(xdg-user-dir PICTURES)/Screenshots" dir="$(xdg-user-dir PICTURES)/Screenshots"
file="Screenshot_${time}_${geometry}.png"
monitor=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | .name')
[ -n "$monitor" ] || exit 1
file="Screenshot_${time}_${monitor}.png"
mkdir -p "$dir" mkdir -p "$dir"
# Capture the focused monitor, save it and copy to clipboard # Take screenshot of selected region using hyprshot
grim -o "$monitor" "$dir/$file" || exit 1 hyprshot -m output -o "$dir" -f "$file"
wl-copy -t image/png < "$dir/$file"
if command -v notify-send >/dev/null 2>&1; then # Optional: open in swappy for annotation (since hyprshot doesn't pipe to swappy directly)
notify-send --app-name "Screenshot" --icon "camera-photo" -u normal "Monitor" "Screenshot saved $file" # if command -v swappy >/dev/null 2>&1; then
fi # swappy -f "$dir/$file"
# fi
# Open the editor if satty is available (blocks until it is closed).
# satty writes the annotated image to --output-filename on Ctrl+s (and on
# Esc/Enter here) and exits immediately. It is launched floating, without
# decorations, with the pen preselected and moved over the captured area.
if command -v satty >/dev/null 2>&1; then
x=$(hyprctl monitors -j | jq -r --arg m "$monitor" '.[] | select(.name == $m) | .x')
y=$(hyprctl monitors -j | jq -r --arg m "$monitor" '.[] | select(.name == $m) | .y')
satty --filename "$dir/$file" --output-filename "$dir/$file" \
--copy-command wl-copy --actions-on-escape save-to-file --early-exit \
--floating-hack --no-window-decoration --initial-tool brush &
pid=$!
for _ in $(seq 1 20); do
addr=$(hyprctl clients -j 2>/dev/null | jq -r --argjson p "$pid" '.[] | select(.pid == $p) | .address' | head -1)
[ -n "$addr" ] && break
sleep 0.1
done
if [ -n "$addr" ]; then
# Lua config (Hyprland 0.55+) dispatches through hl.dsp.*, so try
# hyprctl eval first, then the raw lua dispatch, then classic syntax.
hyprctl eval "hl.dispatch(hl.dsp.window.move({ x = $x, y = $y, window = 'address:$addr' }))" >/dev/null 2>&1 ||
hyprctl dispatch "hl.dsp.window.move({ x = $x, y = $y, window = 'address:$addr' })" >/dev/null 2>&1 ||
hyprctl dispatch movewindowpixel "exact $x $y,address:$addr" >/dev/null 2>&1
fi
wait "$pid"
wl-copy -t image/png < "$dir/$file"
fi
# Compress the resulting image in the background if oxipng is available
if command -v oxipng >/dev/null 2>&1; then
oxipng --strip safe -o 4 "$dir/$file" &
fi
-38
View File
@@ -1,38 +0,0 @@
#!/bin/bash
###
### ~/.config/hypr/scripts/screenshot/ocr_area.sh
###
# Ensure dependencies exist
for cmd in slurp grim tesseract wl-copy; do
if ! command -v "$cmd" >/dev/null 2>&1; then
notify-send -a "OCR" -u critical "OCR Error" "Missing required command: $cmd"
exit 1
fi
done
# Select a region with slurp; exit silently if cancelled (ESC/right-click)
geometry=$(slurp) || exit 0
# Capture region directly from grim, pipe into tesseract, and save stdout to clipboard
text=$(grim -g "$geometry" - | tesseract - stdout --psm 6 2>/dev/null)
# Exit if no text was detected
if [ -z "$text" ]; then
if command -v notify-send >/dev/null 2>&1; then
notify-send -a "OCR" -i edit-select-all "OCR Failed" "No text recognized in selected area."
fi
exit 0
fi
# Copy detected text to Wayland clipboard
printf "%s" "$text" | wl-copy
# Notify user of successful extraction
if command -v notify-send >/dev/null 2>&1; then
# Truncate text preview for notification brevity
preview=$(echo "$text" | head -n 3)
notify-send --app-name "Screenshot" --icon "edit-find" -u normal "OCR" "Text Copied to Clipboard:\n$preview"
fi
# Install: sudo pacman -S grim slurp tesseract tesseract-data-eng wl-clipboard libnotify
+9 -63
View File
@@ -3,71 +3,17 @@
### ~/.config/hypr/scripts/screenshot/screenshot_window.sh ### ~/.config/hypr/scripts/screenshot/screenshot_window.sh
### ###
time=$(date +%Y-%m-%d-%H%M%S) time=$(date +%Y-%m-%d-%I-%M-%S)
geometry=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | "\(.width)x\(.height)"')
dir="$(xdg-user-dir PICTURES)/Screenshots" dir="$(xdg-user-dir PICTURES)/Screenshots"
file="Screenshot_${time}.png" file="Screenshot_${time}_${geometry}.png"
mkdir -p "$dir" mkdir -p "$dir"
# Build selection boxes for windows on visible workspaces # Take screenshot of selected region using hyprshot
ids=$(hyprctl monitors -j | jq -c '[.[].activeWorkspace.id]') hyprshot -m window -o "$dir" -f "$file"
boxes=$(hyprctl clients -j | jq -r --argjson ids "$ids" '
[.[] | select(.workspace.id | IN($ids[]))] | .[] |
"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1]) \(.title)"
' | cut -d' ' -f1,2)
# Let the user pick a window (click the box); exit silently if cancelled # Optional: open in swappy for annotation (since hyprshot doesn't pipe to swappy directly)
geometry=$(slurp -r <<< "$boxes") || exit 1 # if command -v swappy >/dev/null 2>&1; then
# swappy -f "$dir/$file"
# Expand the selection by border + gap so the capture includes the border # fi
border=$(hyprctl getoption general:border_size -j | jq -r '(.int // 0)')
gap=$(hyprctl getoption general:gaps_out -j | jq -r '(.int // 0)')
pad=$(( border + gap ))
geometry=$(awk -v p="$pad" '
{
split($1, pos, ",");
split($2, size, "x");
printf "%d,%d %dx%d\n",
pos[1] - p, pos[2] - p, size[1] + p * 2, size[2] + p * 2
}' <<< "$geometry")
# Capture the window, save it and copy to clipboard
grim -g "$geometry" "$dir/$file" || exit 1
wl-copy -t image/png < "$dir/$file"
if command -v notify-send >/dev/null 2>&1; then
notify-send --app-name "Screenshot" --icon "camera-photo" -u normal "Window" "Screenshot saved $file"
fi
# Open the editor if satty is available (blocks until it is closed).
# satty writes the annotated image to --output-filename on Ctrl+s (and on
# Esc/Enter here) and exits immediately. It is launched floating, without
# decorations, with the pen preselected and moved over the captured area.
if command -v satty >/dev/null 2>&1; then
x=$(cut -d, -f1 <<< "$geometry")
y=$(cut -d, -f2 <<< "$geometry" | cut -d' ' -f1)
satty --filename "$dir/$file" --output-filename "$dir/$file" \
--copy-command wl-copy --actions-on-escape save-to-file --early-exit \
--floating-hack --no-window-decoration --initial-tool brush &
pid=$!
for _ in $(seq 1 20); do
addr=$(hyprctl clients -j 2>/dev/null | jq -r --argjson p "$pid" '.[] | select(.pid == $p) | .address' | head -1)
[ -n "$addr" ] && break
sleep 0.1
done
if [ -n "$addr" ]; then
# Lua config (Hyprland 0.55+) dispatches through hl.dsp.*, so try
# hyprctl eval first, then the raw lua dispatch, then classic syntax.
hyprctl eval "hl.dispatch(hl.dsp.window.move({ x = $x, y = $y, window = 'address:$addr' }))" >/dev/null 2>&1 ||
hyprctl dispatch "hl.dsp.window.move({ x = $x, y = $y, window = 'address:$addr' })" >/dev/null 2>&1 ||
hyprctl dispatch movewindowpixel "exact $x $y,address:$addr" >/dev/null 2>&1
fi
wait "$pid"
wl-copy -t image/png < "$dir/$file"
fi
# Compress the resulting image in the background if oxipng is available
if command -v oxipng >/dev/null 2>&1; then
oxipng --strip safe -o 4 "$dir/$file" &
fi
+1
View File
@@ -0,0 +1 @@
+31
View File
@@ -0,0 +1,31 @@
#!/bin/bash
timeout=50 # 10 seconds max (50 * 0.2s)
count=0
while (( count < timeout )); do
# Grab both address and floating status
read -r win_addr floating <<< $(hyprctl -j clients | jq -r '.[] | select(.title == "Grayjay") | "\(.address) \(.floating)"')
if [[ -n "$win_addr" ]]; then
# Add 0x prefix if missing
if [[ "$win_addr" != 0x* ]]; then
win_addr="0x$win_addr"
fi
# If the window is floating, toggle to make it tiled
if [[ "$floating" == "true" ]]; then
hyprctl dispatch togglefloating address:$win_addr
fi
# Move to workspace 2 silently
hyprctl dispatch movetoworkspacesilent 2,address:$win_addr
exit 0
fi
sleep 0.2
((count++))
done
echo "Grayjay window not found within timeout." >&2
exit 1
+39
View File
@@ -0,0 +1,39 @@
#!/bin/bash
timeout=50 # 10 seconds max (50 * 0.2s)
count=0
while (( count < timeout )); do
win_addr=$(hyprctl clients | awk '
/^Window/ { addr=$2 }
/title: GoXLR Utility/ { print addr }
')
if [[ -n "$win_addr" ]]; then
# Add 0x prefix if missing
if [[ "$win_addr" != 0x* ]]; then
win_addr="0x$win_addr"
fi
# Get fullscreen state (1 or 0)
fullscreen_state=$(hyprctl clients | awk -v addr="${win_addr#0x}" '
$1 == "Window" && $2 == addr { found=1 }
found && /^fullscreen:/ { print $2; exit }
')
if [[ "$fullscreen_state" == "1" ]]; then
hyprctl dispatch fullscreen address:$win_addr
echo "Fullscreen disabled for GoXLR Utility."
else
echo "GoXLR Utility is not fullscreen."
fi
exit 0
fi
sleep 0.2
((count++))
done
echo "GoXLR Utility window not found within timeout." >&2
exit 1
+1
View File
@@ -0,0 +1 @@
/home/honney/.config/hypr/scripts/wallpapers/wallpapers/cherry_river.png
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

+79
View File
@@ -0,0 +1,79 @@
#!/bin/bash
wallpapers_dir="$HOME/Pictures/Wallpapers/"
current_wallpaper=$(cat $wallpapers_dir"/Static/current")
# Pick a random wallpaper from the directory but not the current_wallpaper
image=$(find "$wallpapers_dir" -maxdepth 1 -type f ! -name "$(basename "$current_wallpaper")" | shuf -n 1)
echo "Image $image"
# Check if an image was provided
if [[ -z "$image" ]]; then
echo "Usage: $0 /path/to/image"
exit 1
fi
if [ -x "/usr/bin/swww-daemon" ]; then
echo "swww-daemon exists and is executable"
# Check if swww daemon is running
if ! pgrep -x "swww-daemon" > /dev/null; then
echo "Starting swww daemon..."
swww-daemon &
# Give the daemon a moment to start
sleep 0.2
echo "daemon started"
fi
# Set the wallpaper
echo "running"
swww img "$image" -t grow --transition-duration 1
elif [ -x "/usr/bin/hyprpaper" ]; then
echo "hyprpaper exists and is executable"
if ! pgrep -x "hyprpaper" > /dev/null; then
echo "Starting hyprpaper daemon..."
hyprpaper &
# Give the daemon a moment to start
sleep 0.2
echo "daemon started"
fi
sed -i "3s|path = .*|path = ${image}|" ~/.config/hypr/hyprpaper.conf
hyprctl monitors -j | jq -r 'sort_by(.id) | .[].name' | while IFS= read -r display; do
hyprctl hyprpaper wallpaper "$display, $image"
done
echo "set Wallpaper to $image with hyprpaper"
fi
if [ -x "/usr/bin/matugen" ]; then
matugen image $image --mode dark --source-color-index 0
else
cp $HOME/.config/quickshell/colors/example_colors.qml $HOME/.config/quickshell/colors/Colors.qml
fi
### Blured Wallpaper for wlogout
blur="50x30"
static_wallpaper_dir="$HOME/Pictures/Wallpapers/Static"
if [ ! -d $static_wallpaper_dir ]; then
mkdir -p $static_wallpaper_dir;
fi
current_wallpaper="$static_wallpaper_dir/current"
echo "$image" > $current_wallpaper
blurred_wp="$static_wallpaper_dir/blurred.jpg"
if [ -x "/usr/bin/sddm" ]; then
magick $image -blur $blur $blurred_wp
else
cp $image $blurred_wp
fi
if [ -x "/usr/bin/sddm" ] && [ -d "/usr/share/backgrounds" ]; then
sddm_background="/usr/share/backgrounds/background.jpg"
cp "$image" "$sddm_background"
fi
+73
View File
@@ -0,0 +1,73 @@
#!/bin/bash
# _ _ _ _____ __ __ _____ _____ _____ _____ _____
# | | | | _ | | | | | _ | _ | _ | __| __ |
# | | | | | |__| |__| __| | __| __| -|
# |_____|__|__|_____|_____|__| |__|__|__| |_____|__|__|
#
current_wp="$HOME/.config/hypr/scripts/wallpapers/current_wallpaper"
blurred_wp="$HOME/.config/hypr/scripts/wallpapers/current_wallpaper_blurred.png"
wallpapers_dir="$HOME/.config/hypr/scripts/wallpapers/wallpapers"
blur="50x30"
# write path to wp into file
if [ ! -f $current_wp ]; then
touch $current_wp
echo "$HOME/wallpapers/default.png" > "$current_wp"
fi
# current wallpaper path
current_wallpaper=$(cat "$current_wp")
# echo "$current_wallpaper"
wallpapers=$(ls "$wallpapers_dir"/*.png "$wallpapers_dir"/*.jpg 2>/dev/null)
# Convert the wallpapers list into an array
wallpapers_array=($wallpapers)
# Get the index of the current wallpaper in the array
current_index=-1
for i in "${!wallpapers_array[@]}"; do
if [ "${wallpapers_array[$i]}" == "$current_wallpaper" ]; then
current_index=$i
break
fi
done
# If current wallpaper is not found in the list, set it to the first wallpaper
if [ "$current_index" -eq -1 ]; then
current_index=0
fi
# Determine the next wallpaper (loop back to the start if we're at the end)
next_index=$(( (current_index + 1) % ${#wallpapers_array[@]} ))
next_wallpaper="${wallpapers_array[$next_index]}"
# Update the current wallpaper path in the file
echo "$next_wallpaper" > "$current_wp"
# echo "Current wallpaper is now: $next_wallpaper"
wal -q -i $next_wallpaper
# launch waybar based on new wallpaper colors
source "$HOME/.cache/wal/colors.sh"
~/.config/waybar/launch.sh &
# update soft link to cava colors based on wallpaper colors
# (cava needs to manually be restarted)
ln -sf "$HOME/.cache/wal/cava-colors" "$HOME/.config/cava/config"
hyprctl hyprpaper preload "$next_wallpaper"
hyprctl hyprpaper wallpaper ", $next_wallpaper"
# Create Blurred Wallpaper
magick $next_wallpaper -resize 3840x2160\! $next_wallpaper
echo ":: Resized"
echo "Next wallpaper path: $next_wallpaper"
echo "Blurred wallpaper path: $blurred_wp"
if [ ! "$blur" == "0x0" ] ; then
magick $next_wallpaper -blur $blur $blurred_wp
echo ":: Blurred"
fi
Binary file not shown.

After

Width:  |  Height:  |  Size: 16 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

+1
View File
@@ -0,0 +1 @@
https://wallhaven.cc
+51
View File
@@ -0,0 +1,51 @@
#!/bin/bash
tmdbid() {
local q url
# encode query safely
q=$(printf '%s' "$*" | jq -sRr @uri)
url="https://www.themoviedb.org/search/movie?query=$q"
curl -sL -A 'Mozilla/5.0' "$url" \
| grep -oE '/movie/[0-9]+' \
| head -1 \
| cut -d/ -f3
}
clean_title() {
local s="$1"
# remove (year) style parentheses
s=$(echo "$s" | sed -E 's/ *\([0-9]{4}\)//')
# umlaut replacement
s="${s//ä/ae}"; s="${s//ö/oe}"; s="${s//ü/ue}"
s="${s//Ä/Ae}"; s="${s//Ö/Oe}"; s="${s//Ü/Ue}"
# remove all numbers
s=$(echo "$s" | tr -d '0-9')
# remove special characters except spaces and letters
s=$(echo "$s" | tr -cd '[:alpha:] [:space:]')
# clean extra spaces
s=$(echo "$s" | tr -s ' ')
echo "$s"
}
title=$(hyprctl clients -j | jq '.[] | select(.workspace.id == 3)' | grep "The Movie Database" | sed 's/ — The Movie Database.*//' | sed 's/ "title": "//g')
tmdbid=$(tmdbid "$title")
year="${title: -6}"
if [ -z "$tmdbid" ]; then
new_title="${title//\ ([0-9][0-9][0-9][0-9])/}"
tmdbid=$(tmdbid "$new_title")
fi
clean=$(clean_title "$title")
wtype "$clean $year [tmdb-$tmdbid]"