mirror of
https://github.com/alvinlollo/Single-install-script.git
synced 2026-07-20 02:42:48 +10:00
Update hyprland config
This commit is contained in:
@@ -1,26 +0,0 @@
|
||||
$lock_cmd = hyprctl dispatch 'hl.dsp.global("quickshell:lock")' & pidof qs quickshell hyprlock || hyprlock
|
||||
# $lock_cmd = pidof hyprlock || hyprlock
|
||||
$suspend_cmd = systemctl suspend || loginctl suspend
|
||||
|
||||
general {
|
||||
lock_cmd = $lock_cmd
|
||||
before_sleep_cmd = loginctl lock-session
|
||||
after_sleep_cmd = hyprctl dispatch 'hl.dsp.global("quickshell:lockFocus")'
|
||||
inhibit_sleep = 3
|
||||
}
|
||||
|
||||
listener {
|
||||
timeout = 300 # 5mins
|
||||
on-timeout = loginctl lock-session
|
||||
}
|
||||
|
||||
listener {
|
||||
timeout = 600 # 10mins
|
||||
on-timeout = hyprctl dispatch 'hl.dsp.dpms({ action = "disable" })'
|
||||
on-resume = hyprctl dispatch 'hl.dsp.dpms({ action = "enable" })'
|
||||
}
|
||||
|
||||
listener {
|
||||
timeout = 900 # 15mins
|
||||
on-timeout = $suspend_cmd
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
$lock_cmd = hyprctl dispatch 'hl.dsp.global("quickshell:lock")' & pidof qs quickshell hyprlock || hyprlock
|
||||
# $lock_cmd = pidof hyprlock || hyprlock
|
||||
$suspend_cmd = systemctl suspend || loginctl suspend
|
||||
|
||||
general {
|
||||
lock_cmd = $lock_cmd
|
||||
before_sleep_cmd = loginctl lock-session
|
||||
after_sleep_cmd = hyprctl dispatch global quickshell:lockFocus
|
||||
inhibit_sleep = 3
|
||||
}
|
||||
|
||||
listener {
|
||||
timeout = 300 # 5mins
|
||||
on-timeout = loginctl lock-session
|
||||
}
|
||||
|
||||
listener {
|
||||
timeout = 600 # 10mins
|
||||
on-timeout = hyprctl dispatch dpms off
|
||||
on-resume = hyprctl dispatch dpms on
|
||||
}
|
||||
|
||||
listener {
|
||||
timeout = 900 # 15mins
|
||||
on-timeout = $suspend_cmd
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
# This file sources other files in `hyprland` and `custom` folders
|
||||
# You wanna add your stuff in files in `custom`
|
||||
|
||||
# --- Environment variables ---
|
||||
source=hyprland/env.conf
|
||||
# hyprlang noerror true
|
||||
source=custom/env.conf
|
||||
# hyprlang noerror false
|
||||
|
||||
# --- Other vars ---
|
||||
source=hyprland/variables.conf
|
||||
# hyprlang noerror true
|
||||
source=custom/variables.conf
|
||||
# hyprlang noerror false
|
||||
|
||||
# --- Defaults ---
|
||||
# hyprlang if !dontLoadDefaultExecs
|
||||
source=hyprland/execs.conf
|
||||
# hyprlang endif
|
||||
# hyprlang if !dontLoadDefaultGeneral
|
||||
source=hyprland/general.conf
|
||||
# hyprlang endif
|
||||
# hyprlang if !dontLoadDefaultRules
|
||||
source=hyprland/rules.conf
|
||||
# hyprlang endif
|
||||
# hyprlang if !dontLoadDefaultColors
|
||||
source=hyprland/colors.conf
|
||||
# hyprlang endif
|
||||
# hyprlang if !dontLoadDefaultKeybinds
|
||||
source=hyprland/keybinds.conf
|
||||
# hyprlang endif
|
||||
|
||||
# --- Custom ---
|
||||
# hyprlang noerror true
|
||||
source=custom/execs.conf
|
||||
# hyprlang noerror true
|
||||
source=custom/general.conf
|
||||
# hyprlang noerror true
|
||||
source=custom/rules.conf
|
||||
# hyprlang noerror true
|
||||
source=custom/keybinds.conf
|
||||
# hyprlang noerror false
|
||||
|
||||
# --- nwg-displays support ---
|
||||
source=workspaces.conf
|
||||
source=monitors.conf
|
||||
|
||||
# --- Shell overrides ---
|
||||
source=hyprland/shellOverrides/main.conf
|
||||
@@ -1,44 +0,0 @@
|
||||
-- This file sources other files in `hyprland` and `custom` folders
|
||||
-- You wanna add your stuff in files in `custom`
|
||||
|
||||
-- Internal stuff --
|
||||
require("hyprland.lib")
|
||||
require("hyprland.services")
|
||||
|
||||
-- Environment variables --
|
||||
require("hyprland.env")
|
||||
if is_file_exists(HOME .. "/.config/hypr/custom/env.lua") then
|
||||
require("custom.env")
|
||||
end
|
||||
|
||||
-- Default configurations --
|
||||
require("hyprland.execs")
|
||||
require("hyprland.general")
|
||||
require("hyprland.rules")
|
||||
require("hyprland.colors")
|
||||
require("hyprland.keybinds")
|
||||
|
||||
-- Custom configurations --
|
||||
if is_file_exists(HOME .. "/.config/hypr/custom/execs.lua") then
|
||||
require("custom.execs")
|
||||
end
|
||||
if is_file_exists(HOME .. "/.config/hypr/custom/general.lua") then
|
||||
require("custom.general")
|
||||
end
|
||||
if is_file_exists(HOME .. "/.config/hypr/custom/rules.lua") then
|
||||
require("custom.rules")
|
||||
end
|
||||
if is_file_exists(HOME .. "/.config/hypr/custom/keybinds.lua") then
|
||||
require("custom.keybinds")
|
||||
end
|
||||
|
||||
-- nwg-displays support --
|
||||
if is_file_exists(HOME .. "/.config/hypr/workspaces.lua") then
|
||||
require("workspaces")
|
||||
end
|
||||
if is_file_exists(HOME .. "/.config/hypr/monitors.lua") then
|
||||
require("monitors")
|
||||
end
|
||||
|
||||
-- Shell overrides --
|
||||
require("hyprland.shellOverrides.main")
|
||||
@@ -1,44 +0,0 @@
|
||||
-- This file sources other files in `hyprland` and `custom` folders
|
||||
-- You wanna add your stuff in files in `custom`
|
||||
|
||||
-- Internal stuff --
|
||||
require("hyprland.lib")
|
||||
require("hyprland.services")
|
||||
|
||||
-- Environment variables --
|
||||
require("hyprland.env")
|
||||
if is_file_exists(HOME .. "/.config/hypr/custom/env.lua") then
|
||||
require("custom.env")
|
||||
end
|
||||
|
||||
-- Default configurations --
|
||||
require("hyprland.execs")
|
||||
require("hyprland.general")
|
||||
require("hyprland.rules")
|
||||
require("hyprland.colors")
|
||||
require("hyprland.keybinds")
|
||||
|
||||
-- Custom configurations --
|
||||
if is_file_exists(HOME .. "/.config/hypr/custom/execs.lua") then
|
||||
require("custom.execs")
|
||||
end
|
||||
if is_file_exists(HOME .. "/.config/hypr/custom/general.lua") then
|
||||
require("custom.general")
|
||||
end
|
||||
if is_file_exists(HOME .. "/.config/hypr/custom/rules.lua") then
|
||||
require("custom.rules")
|
||||
end
|
||||
if is_file_exists(HOME .. "/.config/hypr/custom/keybinds.lua") then
|
||||
require("custom.keybinds")
|
||||
end
|
||||
|
||||
-- nwg-displays support --
|
||||
if is_file_exists(HOME .. "/.config/hypr/workspaces.lua") then
|
||||
require("workspaces")
|
||||
end
|
||||
if is_file_exists(HOME .. "/.config/hypr/monitors.lua") then
|
||||
require("monitors")
|
||||
end
|
||||
|
||||
-- Shell overrides --
|
||||
require("hyprland.shellOverrides.main")
|
||||
@@ -1,16 +0,0 @@
|
||||
hl.config({
|
||||
general = {
|
||||
col = {
|
||||
active_border = "rgba(44464f77)",
|
||||
inactive_border = "rgba(1a1b2033)",
|
||||
},
|
||||
},
|
||||
misc = {
|
||||
background_color = "rgba(121318FF)",
|
||||
},
|
||||
})
|
||||
|
||||
hl.window_rule({ -- not sure how to syntax "pin 1"
|
||||
match = { pin = 1 },
|
||||
border_color = "rgba(afc6ffAA) rgba(afc6ff77)",
|
||||
})
|
||||
@@ -1,16 +0,0 @@
|
||||
local home_dir = os.getenv("HOME")
|
||||
|
||||
-- Wayland
|
||||
hl.env("ELECTRON_OZONE_PLATFORM_HINT", "auto")
|
||||
|
||||
-- Applications
|
||||
local xdg_data_dirs_old = os.getenv("XDG_DATA_DIRS") or ""
|
||||
hl.env("XDG_DATA_DIRS", home_dir .. "/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share:" .. xdg_data_dirs_old)
|
||||
|
||||
-- Themes
|
||||
hl.env("QT_QPA_PLATFORM", "wayland;xcb")
|
||||
hl.env("QT_QPA_PLATFORMTHEME", "kde")
|
||||
hl.env("XDG_MENU_PREFIX", "plasma-")
|
||||
|
||||
-- Virtual environment
|
||||
hl.env("ILLOGICAL_IMPULSE_VIRTUAL_ENV", home_dir .. "/.local/state/quickshell/.venv")
|
||||
@@ -1,25 +0,0 @@
|
||||
-- put former exec-once commands inside the func and former exec commands outside
|
||||
hl.on("hyprland.start", function ()
|
||||
|
||||
-- Bar, wallpaper
|
||||
hl.exec_cmd("$HOME/.config/hypr/hyprland/scripts/start_geoclue_agent.sh")
|
||||
hl.exec_cmd("qs -c $qsConfig")
|
||||
hl.exec_cmd("$HOME/.config/hypr/custom/scripts/__restore_video_wallpaper.sh")
|
||||
|
||||
-- Core components (authentication, lock screen, notification daemon)
|
||||
hl.exec_cmd("gnome-keyring-daemon --start --components=secrets")
|
||||
hl.exec_cmd("hypridle")
|
||||
hl.exec_cmd("dbus-update-activation-environment --all")
|
||||
hl.exec_cmd("sleep 1 && dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP") -- Some fix idk
|
||||
|
||||
-- Audio
|
||||
hl.exec_cmd("easyeffects --hide-window --service-mode")
|
||||
|
||||
-- Clipboard: history
|
||||
--hl.exec_cmd("wl-paste --watch cliphist store")
|
||||
hl.exec_cmd("wl-paste --type text --watch bash -c 'cliphist store && qs -c $qsConfig ipc call cliphistService update'")
|
||||
hl.exec_cmd("wl-paste --type image --watch bash -c 'cliphist store && qs -c $qsConfig ipc call cliphistService update'")
|
||||
|
||||
-- Cursor
|
||||
hl.exec_cmd("hyprctl setcursor Bibata-Modern-Classic 24")
|
||||
end)
|
||||
@@ -1,48 +0,0 @@
|
||||
-- put former exec-once commands inside the func and former exec commands outside
|
||||
hl.on("hyprland.start", function()
|
||||
-- Bar, wallpaper
|
||||
hl.exec_cmd("$HOME/.config/hypr/hyprland/scripts/start_geoclue_agent.sh")
|
||||
hl.exec_cmd("qs -c $qsConfig")
|
||||
hl.exec_cmd("$HOME/.config/hypr/custom/scripts/__restore_video_wallpaper.sh")
|
||||
|
||||
-- Core components (authentication, lock screen, notification daemon)
|
||||
hl.exec_cmd("gnome-keyring-daemon --start --components=secrets")
|
||||
hl.exec_cmd("hypridle")
|
||||
hl.exec_cmd("dbus-update-activation-environment --all")
|
||||
hl.exec_cmd("sleep 1 && dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP") -- Some fix idk
|
||||
|
||||
-- Audio
|
||||
hl.exec_cmd("easyeffects --hide-window --service-mode")
|
||||
|
||||
-- Clipboard: history
|
||||
--hl.exec_cmd("wl-paste --watch cliphist store")
|
||||
hl.exec_cmd(
|
||||
"wl-paste --type text --watch bash -c 'cliphist store && qs -c $qsConfig ipc call cliphistService update'"
|
||||
)
|
||||
hl.exec_cmd(
|
||||
"wl-paste --type image --watch bash -c 'cliphist store && qs -c $qsConfig ipc call cliphistService update'"
|
||||
)
|
||||
|
||||
-- Cursor
|
||||
hl.exec_cmd("hyprctl setcursor Bibata-Modern-Classic 24")
|
||||
|
||||
-- User
|
||||
--hl.exec_cmd("voxtype &")
|
||||
hl.exec_cmd("kdeconnectd &")
|
||||
hl.exec_cmd("zen-browser &")
|
||||
hl.exec_cmd("sleep 10 && syncthingtray-qt6 --wait &")
|
||||
hl.exec_cmd("sleep 10 && element-desktop --hidden &")
|
||||
--hl.exec_cmd("")
|
||||
hl.exec_cmd(
|
||||
"rclone mount SchoolGdrive: /mnt/SchoolGdrive --dir-cache-time 10s --poll-interval 10s --attr-timeout 10s --size-only"
|
||||
)
|
||||
hl.exec_cmd(
|
||||
"rclone mount PersonalGdrive: /mnt/PersonalGdrive --dir-cache-time 10s --poll-interval 10s --attr-timeout 10s --size-only"
|
||||
)
|
||||
hl.exec_cmd(
|
||||
"rclone mount gcrypt: /mnt/gcrypt --dir-cache-time 10s --poll-interval 10s --attr-timeout 10s --size-only"
|
||||
)
|
||||
--hl.exec_cmd("steam %U -silent")
|
||||
--hl.exec_cmd("sleep 10 && discord --start-minimized --enable-features=UseOzonePlatform --ozon-platform=wayland")
|
||||
hl.exec_cmd("trayscale --hide-window")
|
||||
end)
|
||||
@@ -1,305 +0,0 @@
|
||||
-- MONITOR CONFIG
|
||||
hl.monitor({
|
||||
output = "",
|
||||
mode = "preferred",
|
||||
position = "auto",
|
||||
scale = 1
|
||||
})
|
||||
|
||||
hl.gesture({
|
||||
fingers = 3,
|
||||
direction = "swipe",
|
||||
action = "move"
|
||||
})
|
||||
hl.gesture({
|
||||
fingers = 3,
|
||||
direction = "pinch",
|
||||
action = "fullscreen"
|
||||
})
|
||||
hl.gesture({
|
||||
fingers = 4,
|
||||
direction = "horizontal",
|
||||
action = "workspace"
|
||||
})
|
||||
hl.gesture({
|
||||
fingers = 4,
|
||||
direction = "up",
|
||||
action = function()
|
||||
hl.dispatch(hl.dsp.global("quickshell:overviewWorkspacesToggle"))
|
||||
end
|
||||
})
|
||||
hl.gesture({
|
||||
fingers = 4,
|
||||
direction = "down",
|
||||
action = function()
|
||||
hl.dispatch(hl.dsp.global("quickshell:overviewWorkspacesToggle"))
|
||||
end
|
||||
})
|
||||
|
||||
hl.config({
|
||||
gestures = {
|
||||
workspace_swipe_distance = 700,
|
||||
workspace_swipe_cancel_ratio = 0.2,
|
||||
workspace_swipe_min_speed_to_force = 5,
|
||||
workspace_swipe_direction_lock = true,
|
||||
workspace_swipe_direction_lock_threshold = 10,
|
||||
workspace_swipe_create_new = true
|
||||
},
|
||||
general = {
|
||||
-- Gaps and border
|
||||
gaps_in = 4,
|
||||
gaps_out = 5,
|
||||
gaps_workspaces = 50,
|
||||
|
||||
border_size = 1,
|
||||
|
||||
col = {
|
||||
active_border = "rgba(0DB7D455)",
|
||||
inactive_border = "rgba(31313600)"
|
||||
},
|
||||
resize_on_border = true,
|
||||
|
||||
no_focus_fallback = true,
|
||||
allow_tearing = true, -- This just allows the `immediate` window rule to work
|
||||
snap = {
|
||||
enabled = true,
|
||||
window_gap = 4,
|
||||
monitor_gap = 5,
|
||||
respect_gaps = true
|
||||
}
|
||||
},
|
||||
decoration = {
|
||||
-- 2 = circle, higher = squircle, 4 = very obvious squircle
|
||||
-- Fuck clearly visible squircles. 100% Apple brainrot.
|
||||
rounding_power = 2.5,
|
||||
rounding = 18,
|
||||
|
||||
blur = {
|
||||
enabled = true,
|
||||
xray = true,
|
||||
special = false,
|
||||
new_optimizations = true,
|
||||
size = 10,
|
||||
passes = 3,
|
||||
brightness = 1,
|
||||
noise = 0.05,
|
||||
contrast = 0.89,
|
||||
vibrancy = 0.5,
|
||||
vibrancy_darkness = 0.5,
|
||||
popups = false,
|
||||
popups_ignorealpha = 0.6,
|
||||
input_methods = true,
|
||||
input_methods_ignorealpha = 0.8
|
||||
},
|
||||
shadow = {
|
||||
enabled = true,
|
||||
range = 20,
|
||||
offset = {0, 2},
|
||||
render_power = 10,
|
||||
color = "rgba(00000020)"
|
||||
|
||||
},
|
||||
-- Dim
|
||||
dim_inactive = true,
|
||||
dim_strength = 0.05,
|
||||
dim_special = 0.2
|
||||
},
|
||||
animations = {
|
||||
enabled = true
|
||||
},
|
||||
dwindle = {
|
||||
preserve_split = true,
|
||||
smart_split = false,
|
||||
smart_resizing = false
|
||||
-- precise_mouse_move = true,
|
||||
},
|
||||
})
|
||||
-- Curves
|
||||
hl.curve("expressiveFastSpatial", {
|
||||
type = "bezier",
|
||||
points = {{0.42, 1.67}, {0.21, 0.90}}
|
||||
})
|
||||
hl.curve("expressiveSlowSpatial", {
|
||||
type = "bezier",
|
||||
points = {{0.39, 1.29}, {0.35, 0.98}}
|
||||
})
|
||||
hl.curve("expressiveDefaultSpatial", {
|
||||
type = "bezier",
|
||||
points = {{0.38, 1.21}, {0.22, 1.00}}
|
||||
})
|
||||
hl.curve("emphasizedDecel", {
|
||||
type = "bezier",
|
||||
points = {{0.05, 0.7}, {0.1, 1}}
|
||||
})
|
||||
hl.curve("emphasizedAccel", {
|
||||
type = "bezier",
|
||||
points = {{0.3, 0}, {0.8, 0.15}}
|
||||
})
|
||||
hl.curve("standardDecel", {
|
||||
type = "bezier",
|
||||
points = {{0, 0}, {0, 1}}
|
||||
})
|
||||
hl.curve("menu_decel", {
|
||||
type = "bezier",
|
||||
points = {{0.1, 1}, {0, 1}}
|
||||
})
|
||||
hl.curve("menu_accel", {
|
||||
type = "bezier",
|
||||
points = {{0.52, 0.03}, {0.72, 0.08}}
|
||||
})
|
||||
hl.curve("stall", {
|
||||
type = "bezier",
|
||||
points = {{1, -0.1}, {0.7, 0.85}}
|
||||
})
|
||||
-- Configs
|
||||
-- windows
|
||||
hl.animation({
|
||||
leaf = "windowsIn",
|
||||
enabled = true,
|
||||
speed = 3,
|
||||
bezier = "emphasizedDecel",
|
||||
style = "popin 80%"
|
||||
})
|
||||
hl.animation({
|
||||
leaf = "fadeIn",
|
||||
enabled = true,
|
||||
speed = 3,
|
||||
bezier = "emphasizedDecel"
|
||||
})
|
||||
hl.animation({
|
||||
leaf = "windowsOut",
|
||||
enabled = true,
|
||||
speed = 2,
|
||||
bezier = "emphasizedDecel",
|
||||
style = "popin 90%"
|
||||
})
|
||||
hl.animation({
|
||||
leaf = "fadeOut",
|
||||
enabled = true,
|
||||
speed = 2,
|
||||
bezier = "emphasizedDecel"
|
||||
})
|
||||
hl.animation({
|
||||
leaf = "windowsMove",
|
||||
enabled = true,
|
||||
speed = 3,
|
||||
bezier = "emphasizedDecel",
|
||||
style = "slide"
|
||||
})
|
||||
hl.animation({
|
||||
leaf = "border",
|
||||
enabled = true,
|
||||
speed = 10,
|
||||
bezier = "emphasizedDecel"
|
||||
})
|
||||
|
||||
-- layers
|
||||
hl.animation({
|
||||
leaf = "layersIn",
|
||||
enabled = true,
|
||||
speed = 2.7,
|
||||
bezier = "emphasizedDecel",
|
||||
style = "popin 93%"
|
||||
})
|
||||
hl.animation({
|
||||
leaf = "layersOut",
|
||||
enabled = true,
|
||||
speed = 2.4,
|
||||
bezier = "menu_accel",
|
||||
style = "popin 94%"
|
||||
})
|
||||
-- fade
|
||||
hl.animation({
|
||||
leaf = "fadeLayersIn",
|
||||
enabled = true,
|
||||
speed = 0.5,
|
||||
bezier = "menu_decel"
|
||||
})
|
||||
hl.animation({
|
||||
leaf = "fadeLayersOut",
|
||||
enabled = true,
|
||||
speed = 2.7,
|
||||
bezier = "stall"
|
||||
})
|
||||
-- workspaces
|
||||
hl.animation({
|
||||
leaf = "workspaces",
|
||||
enabled = true,
|
||||
speed = 7,
|
||||
bezier = "menu_decel",
|
||||
style = "slide"
|
||||
})
|
||||
-- specialWorkspace
|
||||
hl.animation({
|
||||
leaf = "specialWorkspaceIn",
|
||||
enabled = true,
|
||||
speed = 2.8,
|
||||
bezier = "emphasizedDecel",
|
||||
style = "slidevert"
|
||||
})
|
||||
hl.animation({
|
||||
leaf = "specialWorkspaceOut",
|
||||
enabled = true,
|
||||
speed = 1.2,
|
||||
bezier = "emphasizedAccel",
|
||||
style = "slidevert"
|
||||
})
|
||||
-- zoom
|
||||
hl.animation({
|
||||
leaf = "zoomFactor",
|
||||
enabled = true,
|
||||
speed = 3,
|
||||
bezier = "standardDecel"
|
||||
})
|
||||
|
||||
hl.config({
|
||||
input = {
|
||||
kb_layout = "us",
|
||||
numlock_by_default = true,
|
||||
repeat_delay = 250,
|
||||
repeat_rate = 35,
|
||||
|
||||
follow_mouse = 1,
|
||||
off_window_axis_events = 2,
|
||||
|
||||
touchpad = {
|
||||
natural_scroll = true,
|
||||
disable_while_typing = true,
|
||||
clickfinger_behavior = true,
|
||||
scroll_factor = 0.7
|
||||
}
|
||||
},
|
||||
|
||||
misc = {
|
||||
disable_hyprland_logo = true,
|
||||
disable_splash_rendering = true,
|
||||
vrr = 0,
|
||||
mouse_move_enables_dpms = true,
|
||||
key_press_enables_dpms = true,
|
||||
animate_manual_resizes = false,
|
||||
animate_mouse_windowdragging = false,
|
||||
enable_swallow = false,
|
||||
swallow_regex = "(foot|kitty|allacritty|Alacritty)",
|
||||
on_focus_under_fullscreen = 2,
|
||||
allow_session_lock_restore = true,
|
||||
session_lock_xray = true,
|
||||
initial_workspace_tracking = false,
|
||||
focus_on_activate = true
|
||||
},
|
||||
|
||||
binds = {
|
||||
scroll_event_delay = 0,
|
||||
hide_special_on_workspace_change = true
|
||||
},
|
||||
|
||||
cursor = {
|
||||
zoom_factor = 1,
|
||||
zoom_rigid = false,
|
||||
zoom_disable_aa = true,
|
||||
hotspot_padding = 1
|
||||
},
|
||||
|
||||
xwayland = {
|
||||
force_zero_scaling = true
|
||||
}
|
||||
})
|
||||
@@ -1,359 +0,0 @@
|
||||
require("hyprland.lib")
|
||||
require("hyprland.variables")
|
||||
if is_file_exists(HOME .. "/.config/hypr/custom/variables.lua") then
|
||||
require("custom.variables")
|
||||
end
|
||||
|
||||
local qsScripts = "$HOME/.config/quickshell/$qsConfig/scripts"
|
||||
local hyprScripts = "$HOME/.config/hypr/hyprland/scripts"
|
||||
local qsIpcCall = "qs -c $qsConfig ipc call"
|
||||
local qsIsAlive = qsIpcCall .. " TEST_ALIVE"
|
||||
|
||||
hl.bind("SUPER + SUPER_L", hl.dsp.global("quickshell:searchToggleRelease"), { description = "Shell: Toggle search" })
|
||||
hl.bind("SUPER + SUPER_R", hl.dsp.global("quickshell:searchToggleRelease"))
|
||||
hl.bind("SUPER + SUPER_L", hl.dsp.exec_cmd(qsIsAlive .. " || pkill fuzzel || fuzzel"))
|
||||
hl.bind("SUPER + SUPER_R", hl.dsp.exec_cmd(qsIsAlive .. " || pkill fuzzel || fuzzel"))
|
||||
|
||||
hl.bind("SUPER_L", hl.dsp.global("quickshell:workspaceNumber"), { ignore_mods = true, transparent = true })
|
||||
hl.bind("SUPER_R", hl.dsp.global("quickshell:workspaceNumber"), { ignore_mods = true, transparent = true })
|
||||
hl.bind("SUPER_L", hl.dsp.global("quickshell:workspaceNumber"),
|
||||
{ ignore_mods = true, transparent = true, release = true })
|
||||
hl.bind("SUPER_R", hl.dsp.global("quickshell:workspaceNumber"),
|
||||
{ ignore_mods = true, transparent = true, release = true })
|
||||
hl.bind("SUPER + Tab", hl.dsp.global("quickshell:overviewWorkspacesToggle"), { description = "Shell: Toggle overview" })
|
||||
hl.bind("SUPER + V", hl.dsp.global("quickshell:overviewClipboardToggle"))
|
||||
hl.bind("SUPER + Period", hl.dsp.global("quickshell:overviewEmojiToggle"))
|
||||
hl.bind("SUPER + A", hl.dsp.global("quickshell:sidebarLeftToggle"), { description = "Shell: Toggle left sidebar" })
|
||||
hl.bind("SUPER + ALT + A", hl.dsp.global("quickshell:sidebarLeftToggleDetach"))
|
||||
hl.bind("SUPER + B", hl.dsp.global("quickshell:sidebarLeftToggle"))
|
||||
hl.bind("SUPER + O", hl.dsp.global("quickshell:sidebarLeftToggle"))
|
||||
hl.bind("SUPER + N", hl.dsp.global("quickshell:sidebarRightToggle"), { description = "Shell: Toggle right sidebar" })
|
||||
hl.bind("SUPER + Slash", hl.dsp.global("quickshell:cheatsheetToggle"), { description = "Shell: Toggle cheatsheet" })
|
||||
hl.bind("SUPER + K", hl.dsp.global("quickshell:oskToggle"), { description = "Shell: Toggle on-screen keyboard" })
|
||||
hl.bind("SUPER + M", hl.dsp.global("quickshell:mediaControlsToggle"), { description = "Shell: Toggle media controls" })
|
||||
hl.bind("SUPER + G", hl.dsp.global("quickshell:overlayToggle"), { description = "Shell: Toggle widget overlay" })
|
||||
hl.bind("CTRL + ALT + Delete", hl.dsp.global("quickshell:sessionToggle"), { description = "Shell: Toggle session menu" })
|
||||
hl.bind("SUPER + J", hl.dsp.global("quickshell:barToggle"), { description = "Shell: Toggle bar" })
|
||||
hl.bind("CTRL + ALT + Delete", hl.dsp.exec_cmd(qsIsAlive .. " || pkill wlogout || wlogout -p layer-shell"))
|
||||
hl.bind("SHIFT + SUPER + ALT + Slash", hl.dsp.exec_cmd("qs -p $HOME/.config/quickshell/$qsConfig/welcome.qml"))
|
||||
|
||||
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd(qsIpcCall .. " brightness increment || brightnessctl s 5%+"),
|
||||
{ locked = true, repeating = true })
|
||||
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd(qsIpcCall .. " brightness decrement || brightnessctl s 5%-"),
|
||||
{ locked = true, repeating = true })
|
||||
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%+ -l 1.5"),
|
||||
{ locked = true, repeating = true })
|
||||
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%-"),
|
||||
{ locked = true, repeating = true })
|
||||
|
||||
hl.bind("CTRL + SUPER + T", hl.dsp.global("quickshell:wallpaperSelectorToggle"),
|
||||
{ description = "Shell: Change wallpaper" })
|
||||
hl.bind("CTRL + SUPER + ALT + T", hl.dsp.global("quickshell:wallpaperSelectorRandom"),
|
||||
{ description = "Shell: Random wallpaper" })
|
||||
hl.bind("CTRL + SUPER + SHIFT + D", hl.dsp.global("quickshell:toggleLightDark"),
|
||||
{ description = "Shell: Toggle light/dark mode" })
|
||||
hl.bind("CTRL + SUPER + T", hl.dsp.exec_cmd(qsIsAlive .. " || " .. qsScripts .. "/colors/switchwall.sh"))
|
||||
hl.bind("CTRL + SUPER + R", hl.dsp.exec_cmd("killall ydotool qs quickshell; qs -c $qsConfig &"),
|
||||
{ description = "Shell: Restart widgets" })
|
||||
hl.bind("CTRL + SUPER + P", hl.dsp.global("quickshell:panelFamilyCycle"), { description = "Shell: Cycle panel family" })
|
||||
|
||||
--##! Utilities
|
||||
--# Screenshot, Record, OCR, Color picker, Clipboard history
|
||||
hl.bind("SUPER + V", hl.dsp.exec_cmd(
|
||||
qsIsAlive .. " || pkill fuzzel || cliphist list | fuzzel --match-mode fzf --dmenu | cliphist decode | wl-copy"),
|
||||
{ description = "Utilities: Clipboard history >> clipboard" })
|
||||
hl.bind("SUPER + Period", hl.dsp.exec_cmd(
|
||||
qsIsAlive .. " || pkill fuzzel || " .. hyprScripts .. "/fuzzel-emoji.sh copy"),
|
||||
{ description = "Utilities: Emoji >> clipboard" })
|
||||
hl.bind("SUPER + SHIFT + S", hl.dsp.global("quickshell:regionScreenshot"), { description = "Utilities: Screen snip" })
|
||||
hl.bind("SUPER + SHIFT + S",
|
||||
hl.dsp.exec_cmd(qsIsAlive .. " || pidof slurp || hyprshot --freeze --clipboard-only --mode region --silent"))
|
||||
hl.bind("SUPER + SHIFT + A", hl.dsp.global("quickshell:regionSearch"), { description = "Utilities: Google Lens" })
|
||||
hl.bind("SUPER + SHIFT + A", hl.dsp.exec_cmd(qsIsAlive .. " || pidof slurp || " .. hyprScripts .. "/snip_to_search.sh"))
|
||||
--# OCR
|
||||
hl.bind("SUPER + SHIFT + X", hl.dsp.global("quickshell:regionOcr"),
|
||||
{ description = "Utilities: Character recognition >> clipboard" })
|
||||
hl.bind("SUPER + SHIFT + T", hl.dsp.global("quickshell:screenTranslate"),
|
||||
{ description = "Utilities: Translate screen content" })
|
||||
hl.bind("SUPER + SHIFT + X", hl.dsp.exec_cmd(
|
||||
qsIsAlive ..
|
||||
" || pidof slurp || grim -g \"$(slurp $SLURP_ARGS)\" \"/tmp/ocr_image.png\" && tesseract \"/tmp/ocr_image.png\" stdout -l $(tesseract --list-langs | awk 'NR>1{print $1}' | tr '\\\\n' '+' | sed 's/\\\\+$/\\\\n/') | wl-copy && rm \"/tmp/ocr_image.png\""
|
||||
))
|
||||
--# Color picker
|
||||
hl.bind("SUPER + SHIFT + C", hl.dsp.exec_cmd("hyprpicker -a"),
|
||||
{ description = "Utilities: Pick color #RRGGBB >> clipboard" })
|
||||
--# Recording stuff
|
||||
hl.bind("SUPER + SHIFT + R", hl.dsp.global("quickshell:regionRecord"),
|
||||
{ locked = true, description = "Utilities: Record region (no sound)" })
|
||||
hl.bind("SUPER + SHIFT + R", hl.dsp.exec_cmd(qsIsAlive .. " || " .. qsScripts .. "/videos/record.sh"), { locked = true })
|
||||
hl.bind("SUPER + ALT + R", hl.dsp.global("quickshell:regionRecord"), { locked = true })
|
||||
hl.bind("SUPER + ALT + R", hl.dsp.exec_cmd(qsIsAlive .. " || " .. qsScripts .. "/videos/record.sh"), { locked = true })
|
||||
hl.bind("CTRL + ALT + R", hl.dsp.exec_cmd(qsScripts .. "/videos/record.sh --fullscreen"), { locked = true })
|
||||
hl.bind("SUPER + SHIFT + ALT + R", hl.dsp.exec_cmd(qsScripts .. "/videos/record.sh --fullscreen --sound"),
|
||||
{ locked = true, description = "Utilities: Record screen (with sound)" })
|
||||
--# Fullscreen screenshot
|
||||
local grimhyprctl = "grim -o \"$(hyprctl activeworkspace -j | jq -r '.monitor')\""
|
||||
hl.bind("Print", hl.dsp.exec_cmd(grimhyprctl .. " - | wl-copy"),
|
||||
{ locked = true, description = "Utilities: Screenshot >> clipboard" })
|
||||
hl.bind("CTRL + Print", hl.dsp.exec_cmd(
|
||||
"mkdir -p $(xdg-user-dir PICTURES)/Screenshots && " ..
|
||||
grimhyprctl .. " $(xdg-user-dir PICTURES)/Screenshots/Screenshot_\"$(date '+%Y-%m-%d_%H.%M.%S')\".png"
|
||||
), { locked = true, non_consuming = true, description = "Utilities: Screenshot >> clipboard & file" })
|
||||
hl.bind("CTRL + Print", hl.dsp.exec_cmd(grimhyprctl .. " - | wl-copy"), { locked = true, non_consuming = true })
|
||||
--# AI
|
||||
hl.bind("SUPER + SHIFT + ALT + mouse:273", hl.dsp.exec_cmd(hyprScripts .. "/ai/primary-buffer-query.sh"),
|
||||
{ description = "Utilities: Generate AI summary for selected text" })
|
||||
-- (requires a running ollama model)
|
||||
|
||||
--##! Screen
|
||||
--# Zoom
|
||||
local function zoomfunction(value)
|
||||
local zoomvalue = hl.get_config("cursor:zoom_factor")
|
||||
if (zoomvalue + value) > 3.0 then
|
||||
hl.config({ cursor = { zoom_factor = 3.0 } })
|
||||
elseif (zoomvalue + value) < 1.0 then
|
||||
hl.config({ cursor = { zoom_factor = 1.0 } })
|
||||
else
|
||||
hl.config({ cursor = { zoom_factor = zoomvalue + value } })
|
||||
end
|
||||
end
|
||||
hl.bind("SUPER + Minus", function() zoomfunction(-0.3) end, { repeating = true, description = "Screen: Zoom out" })
|
||||
hl.bind("SUPER + Equal", function() zoomfunction(0.3) end, { repeating = true, description = "Screen: Zoom in" })
|
||||
|
||||
--# Zoom with keypad
|
||||
hl.bind("SUPER + code:82", function() zoomfunction(-0.3) end, { repeating = true })
|
||||
hl.bind("SUPER + code:86", function() zoomfunction(0.3) end, { repeating = true })
|
||||
|
||||
--##! Media
|
||||
local mediaNextCommand =
|
||||
"playerctl next || playerctl position `bc <<< \"100 * $(playerctl metadata mpris:length) / 1000000 / 100\"`"
|
||||
hl.bind("SUPER + SHIFT + N", hl.dsp.exec_cmd(mediaNextCommand), { locked = true, description = "Media: Next track" })
|
||||
hl.bind("XF86AudioNext", hl.dsp.exec_cmd(mediaNextCommand), { locked = true })
|
||||
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { locked = true })
|
||||
hl.bind("SUPER + SHIFT + ALT + mouse:275", hl.dsp.exec_cmd("playerctl previous"))
|
||||
hl.bind("SUPER + SHIFT + ALT + mouse:276", hl.dsp.exec_cmd(mediaNextCommand))
|
||||
hl.bind("SUPER + SHIFT + B", hl.dsp.exec_cmd("playerctl previous"),
|
||||
{ locked = true, description = "Media: Previous track" })
|
||||
hl.bind("SUPER + SHIFT + P", hl.dsp.exec_cmd("playerctl play-pause"),
|
||||
{ locked = true, description = "Media: Play/pause media" })
|
||||
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
|
||||
hl.bind("XF86AudioPause", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true })
|
||||
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_SINK@ toggle"), { locked = true })
|
||||
hl.bind("SUPER + SHIFT + M", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_SINK@ toggle"),
|
||||
{ locked = true, description = "Media: Toggle mute" })
|
||||
hl.bind("ALT + XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_SOURCE@ toggle"), { locked = true })
|
||||
hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_SOURCE@ toggle"), { locked = true })
|
||||
hl.bind("SUPER + ALT + M", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_SOURCE@ toggle"),
|
||||
{ locked = true, description = "Media: Toggle mic" })
|
||||
|
||||
--#!
|
||||
--##! Window
|
||||
--# Focusing
|
||||
hl.bind("SUPER + mouse:272", hl.dsp.window.drag(), { mouse = true, description = "Window: Move" })
|
||||
hl.bind("SUPER + mouse:274", hl.dsp.window.drag(), { mouse = true })
|
||||
hl.bind("SUPER + mouse:273", hl.dsp.window.resize(), { mouse = true, description = "Window: Resize" })
|
||||
--#/# bind = SUPER + ←/↑/→/↓,, -- Focus in direction
|
||||
for i = 1, 4 do
|
||||
local arrowkey = { "Left", "Right", "Up", "Down" }
|
||||
local focusdir = { "l", "r", "u", "d" }
|
||||
hl.bind("SUPER + " .. arrowkey[i], hl.dsp.focus({ direction = focusdir[i] }),
|
||||
{ description = "Window: Focus " .. arrowkey[i] })
|
||||
end
|
||||
for i = 1, 2 do
|
||||
local arrowkey = { "BracketLeft", "BracketRight" }
|
||||
local focusdir = { "l", "r" }
|
||||
hl.bind("SUPER + " .. arrowkey[i], hl.dsp.focus({ direction = focusdir[i] }))
|
||||
end
|
||||
--#/# bind = SUPER + SHIFT, ←/↑/→/↓,, -- Move in direction
|
||||
for i = 1, 4 do
|
||||
local arrowkey = { "Left", "Right", "Up", "Down" }
|
||||
local focusdir = { "l", "r", "u", "d" }
|
||||
hl.bind("SUPER + SHIFT + " .. arrowkey[i], hl.dsp.window.move({ direction = focusdir[i] }),
|
||||
{ description = "Window: Move " .. arrowkey[i] })
|
||||
end
|
||||
|
||||
hl.bind("ALT + F4",
|
||||
function()
|
||||
hl.exec_cmd(
|
||||
"notify-send \"Wrong close keybind\" \"Super+Q to close. Use Alt+F4 for Windows VMs\" -a Hyprland")
|
||||
end,
|
||||
{ non_consuming = true })
|
||||
hl.bind("SUPER + Q", hl.dsp.window.close(), { description = "Window: Close" })
|
||||
hl.bind("SUPER + SHIFT + ALT + Q", hl.dsp.exec_cmd("hyprctl kill"), { description = "Window: Forcefully zap a window" })
|
||||
|
||||
--# Window split ratio
|
||||
--#/# binde = SUPER, ;/',, -- Adjust split ratio
|
||||
hl.bind("SUPER + Semicolon", hl.dsp.layout("splitratio -0.1"), { repeating = true })
|
||||
hl.bind("SUPER + Apostrophe", hl.dsp.layout("splitratio +0.1"), { repeating = true })
|
||||
--# Positioning mode
|
||||
hl.bind("SUPER + ALT + Space", hl.dsp.window.float({ action = "toggle" }), { description = "Window: Float/Tile" })
|
||||
hl.bind("SUPER + D", hl.dsp.window.fullscreen({ mode = "maximized", action = "toggle" }),
|
||||
{ description = "Window: Maximize" })
|
||||
hl.bind("SUPER + F", hl.dsp.window.fullscreen({ mode = "fullscreen", action = "toggle" }),
|
||||
{ description = "Window: Fullscreen" })
|
||||
hl.bind("SUPER + ALT + F", hl.dsp.window.fullscreen_state({ internal = 0, client = 3, action = "toggle" }),
|
||||
{ description = "Window: Fullscreen spoof" })
|
||||
hl.bind("SUPER + P", hl.dsp.window.pin(), { description = "Window: Pin" })
|
||||
|
||||
--#/# bind = SUPER+ALT, Hash,, -- Send to workspace -- (1, 2, 3,...)
|
||||
for i = 1, 10 do
|
||||
hl.bind("SUPER + ALT + " .. (i % 10), function()
|
||||
hl.dispatch(hl.dsp.window.move({ workspace = workspace_in_group(i), follow = false }))
|
||||
end, { description = "Window: Send to workspace " .. i })
|
||||
end
|
||||
--# We also use raw keycodes because some keyboard layouts register number keys as different chars. The codes can be verified with `wev`
|
||||
-- for i = 1, 10 do
|
||||
-- local numberkey = { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }
|
||||
-- hl.bind("SUPER + ALT + code:" .. numberkey[i], function()
|
||||
-- hl.dispatch(hl.dsp.window.move({ workspace = workspace_in_group(i), follow = false }))
|
||||
-- end)
|
||||
-- end
|
||||
--# keypad numbers
|
||||
for i = 1, 10 do
|
||||
local numpadkey = { 87, 88, 89, 83, 84, 85, 79, 80, 81, 90 }
|
||||
hl.bind("SUPER + ALT + code:" .. numpadkey[i], function()
|
||||
hl.dispatch(hl.dsp.window.move({ workspace = workspace_in_group(i), follow = false }))
|
||||
end)
|
||||
end
|
||||
|
||||
--# #/# bind = SUPER+SHIFT, Scroll ↑/↓,, -- Send to workspace left/right
|
||||
for i = 1, 4 do
|
||||
local key = { "SUPER + SHIFT + mouse_", "SUPER + ALT + mouse_" }
|
||||
local keycombos = { key[1] .. "down", key[1] .. "up", key[2] .. "down", key[2] .. "up" }
|
||||
local prefix = { "r-", "r+", "r-", "r+" }
|
||||
hl.bind(keycombos[i], hl.dsp.window.move({ workspace = prefix[i] .. "1" }))
|
||||
end
|
||||
|
||||
--#/# bind = SUPER+SHIFT, Page_↑/↓,, -- Send to workspace left/right
|
||||
for i = 1, 2 do
|
||||
local keydirs = { "Up", "Down" }
|
||||
local prefix = { "r-", "r+" }
|
||||
local descdir = { "left", "right" }
|
||||
hl.bind("SUPER + SHIFT + Page_" .. keydirs[i], hl.dsp.window.move({ workspace = prefix[i] .. "1" }), {description = "Window: Send to workspace " .. descdir[i]})
|
||||
end
|
||||
for i = 1, 4 do
|
||||
local key = { "SUPER + ALT + Page_", "CTRL + SUPER + SHIFT + " }
|
||||
local keycombos = { key[1] .. "down", key[1] .. "up", key[2] .. "Right", key[2] .. "Left" }
|
||||
local prefix = { "r+", "r-", "r+", "r-" }
|
||||
hl.bind(keycombos[i], hl.dsp.window.move({ workspace = prefix[i] .. "1" })) -- # [hidden]
|
||||
end
|
||||
|
||||
hl.bind("SUPER + ALT + S",
|
||||
hl.dsp.window.move({ workspace = "special:special", follow = false }), { description = "Window: Send to scratchpad" })
|
||||
hl.bind("CTRL + SUPER + S", hl.dsp.workspace.toggle_special("special"))
|
||||
|
||||
--##! Workspace
|
||||
--# Switching
|
||||
--#/# bind = SUPER, Hash,, -- Focus workspace -- (1, 2, 3,...)
|
||||
for i = 1, 10 do
|
||||
hl.bind("SUPER + " .. (i % 10), function()
|
||||
hl.dispatch(hl.dsp.focus({ workspace = workspace_in_group(i) }))
|
||||
end, { description = "Workspace: Focus " .. i })
|
||||
end
|
||||
--# We also use raw keycodes because some keyboard layouts register number keys as different chars. The codes can be verified with `wev`
|
||||
for i = 1, 10 do
|
||||
local numberkey = { 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }
|
||||
hl.bind("SUPER + code:" .. numberkey[i], function()
|
||||
hl.dispatch(hl.dsp.focus({ workspace = workspace_in_group(i) }))
|
||||
end)
|
||||
end
|
||||
--# keypad numbers
|
||||
for i = 1, 10 do
|
||||
local numpadkey = { 87, 88, 89, 83, 84, 85, 79, 80, 81, 90 }
|
||||
hl.bind("SUPER + code:" .. numpadkey[i], function()
|
||||
hl.dispatch(hl.dsp.focus({ workspace = workspace_in_group(i) }))
|
||||
end)
|
||||
end
|
||||
|
||||
--#/# bind = CTRL+SUPER, ←/→,, -- Focus left/right
|
||||
--#/# bind = CTRL+SUPER+ALT, ←/→,, -- # [hidden] Focus busy left/right
|
||||
for i = 1, 2 do
|
||||
local keys = { "Left", "Right" }
|
||||
local prefix = { "r-", "r+" }
|
||||
local descdir = { "left", "right" }
|
||||
hl.bind("CTRL + SUPER + " .. keys[i], hl.dsp.focus({ workspace = prefix[i] .. "1" }), {description = "Workspace: Focus " .. descdir[i]})
|
||||
end
|
||||
for i = 1, 2 do
|
||||
local keys = { "Left", "Right" }
|
||||
local prefix = { "m-", "m+" }
|
||||
hl.bind("CTRL + SUPER + ALT + " .. keys[i], hl.dsp.focus({ workspace = prefix[i] .. "1" }))
|
||||
end
|
||||
--#/# bind = SUPER, Page_↑/↓,, -- Focus left/right
|
||||
for i = 1, 4 do
|
||||
local key = { "SUPER + Page_Down", "SUPER + Page_Up" }
|
||||
local keycombos = { key[1], key[2], "CTRL + " .. key[1], "CTRL + " .. key[2] }
|
||||
local prefix = { "r+", "r-", "r+", "r-" }
|
||||
hl.bind(keycombos[i], hl.dsp.focus({ workspace = prefix[i] .. "1" }))
|
||||
end
|
||||
--#/# bind = SUPER, Scroll ↑/↓,, -- Focus left/right
|
||||
for i = 1, 4 do
|
||||
local key = { "SUPER + mouse_up", "SUPER + mouse_down" }
|
||||
local keycombos = { key[1], key[2], "CTRL + " .. key[1], "CTRL + " .. key[2] }
|
||||
local prefix = { "+", "-", "r+", "r-" }
|
||||
hl.bind(keycombos[i], hl.dsp.focus({ workspace = prefix[i] .. "1" }))
|
||||
end
|
||||
--## Special
|
||||
hl.bind("SUPER + S", hl.dsp.workspace.toggle_special("special"), { description = "Workspace: Toggle scratchpad" })
|
||||
hl.bind("SUPER + mouse:275", hl.dsp.workspace.toggle_special("special"))
|
||||
for i = 1, 4 do
|
||||
local key = { "BracketLeft", "BracketRight", "Up", "Down" }
|
||||
local prefix = { "-1", "+1", "r-5", "r+5" }
|
||||
hl.bind("CTRL + SUPER + " .. key[i], hl.dsp.focus({ workspace = prefix[i] }))
|
||||
end
|
||||
|
||||
--##! Virtual machines
|
||||
hl.define_submap("virtual-machine", function()
|
||||
hl.bind("SUPER + ALT + F1", function()
|
||||
local currentsubmap = hl.get_current_submap()
|
||||
if currentsubmap == "virtual-machine" then
|
||||
hl.dispatch(hl.dsp.exec_cmd(
|
||||
"notify-send 'Exited Virtual Machine submap' 'Keybinds re-enabled' -a 'Hyprland'"))
|
||||
hl.dispatch(hl.dsp.submap("reset"))
|
||||
elseif currentsubmap == "" then
|
||||
hl.dispatch(hl.dsp.exec_cmd(
|
||||
"notify-send 'Entered Virtual Machine submap' 'Keybinds disabled. hit SUPER+ALT+F1 to escape' -a 'Hyprland'"))
|
||||
hl.dispatch(hl.dsp.submap("virtual-machine"))
|
||||
end
|
||||
end, { submap_universal = true })
|
||||
end)
|
||||
|
||||
|
||||
--#!
|
||||
--# Testing
|
||||
hl.bind("SUPER + ALT + F11",
|
||||
hl.dsp.exec_cmd(
|
||||
"bash -c 'RANDOM_IMAGE=$(find ~/Pictures -type f | shuf -n 1); ACTION=$(notify-send \"Test notification with body image\" \"This notification should contain your user account <b>image</b> and <a href=\\\"https://discord.com/app\\\">Discord</a> <b>icon</b>. Oh and here is a random image in your Pictures folder: <img src=\\\"$RANDOM_IMAGE\\\" alt=\\\"Testing image\\\"/>\" -a \"Hyprland\" -p -h \"string:image-path:/var/lib/AccountsService/icons/$USER\" -t 6000 -i \"discord\" -A \"openImage=Profile image\" -A \"action2=Open the random image\" -A \"action3=Useless button\"); [[ $ACTION == *openImage ]] && xdg-open \"/var/lib/AccountsService/icons/$USER\"; [[ $ACTION == *action2 ]] && xdg-open \"$RANDOM_IMAGE\"'")
|
||||
) -- # [hidden]
|
||||
hl.bind("SUPER + ALT + F12",
|
||||
hl.dsp.exec_cmd(
|
||||
"bash -c 'RANDOM_IMAGE=$(find ~/Pictures -type f | shuf -n 1); ACTION=$(notify-send \"Test notification\" \"This notification should contain a random image in your <b>Pictures</b> folder and <a href=\\\"https://discord.com/app\\\">Discord</a> <b>icon</b>.\n<i>Flick right to dismiss!</i>\" -a \"Discord (fake)\" -p -h \"string:image-path:$RANDOM_IMAGE\" -t 6000 -i \"discord\" -A \"openImage=Profile image\" -A \"action2=Useless button\"); [[ $ACTION == *openImage ]] && xdg-open \"/var/lib/AccountsService/icons/$USER\"'")
|
||||
) -- # [hidden]
|
||||
hl.bind("SUPER + ALT + Equal",
|
||||
hl.dsp.exec_cmd("notify-send 'Urgent notification' 'Ah hell no' -u critical -a 'Hyprland keybind'")) -- # [hidden]
|
||||
|
||||
--##! Session
|
||||
hl.bind("SUPER + L", hl.dsp.exec_cmd("loginctl lock-session"), { description = "Session: Lock" })
|
||||
hl.bind("SUPER + SHIFT + L", hl.dsp.exec_cmd("systemctl suspend || loginctl suspend"),
|
||||
{ locked = true, description = "Session: Sleep" }) -- Sleep
|
||||
-- hl.bind("switch:on:Lid Switch", hl.dsp.exec_cmd("systemctl suspend || loginctl suspend"), {locked = true} ) -- # [hidden] Suspend when laptop lid is closed, uncomment if for whatever reason it's not the default behavior
|
||||
|
||||
hl.bind("CTRL + SHIFT + ALT + SUPER + Delete", hl.dsp.exec_cmd("systemctl poweroff || loginctl poweroff"),
|
||||
{ description = "Session: Shut down" }) -- # [hidden] Power off
|
||||
|
||||
|
||||
--##! Apps
|
||||
hl.bind("SUPER + Return", hl.dsp.exec_cmd(terminal), { description = "App: Terminal" })
|
||||
hl.bind("SUPER + T", hl.dsp.exec_cmd(terminal))
|
||||
hl.bind("CTRL + ALT + T", hl.dsp.exec_cmd(terminal))
|
||||
hl.bind("SUPER + E", hl.dsp.exec_cmd(fileManager), { description = "App: File manager" })
|
||||
hl.bind("SUPER + W", hl.dsp.exec_cmd(browser), { description = "App: Browser" })
|
||||
hl.bind("SUPER + C", hl.dsp.exec_cmd(codeEditor), { description = "App: Code editor" })
|
||||
hl.bind("CTRL + SUPER + SHIFT + ALT + W", hl.dsp.exec_cmd(officeSoftware), { description = "App: Office software" })
|
||||
hl.bind("SUPER + X", hl.dsp.exec_cmd(textEditor), { description = "App: Text editor" })
|
||||
hl.bind("CTRL + SUPER + V", hl.dsp.exec_cmd(volumeMixer), { description = "App: Volume mixer" })
|
||||
hl.bind("SUPER + I", hl.dsp.exec_cmd(settingsApp), { description = "App: Settings app" })
|
||||
hl.bind("CTRL + SHIFT + Escape", hl.dsp.exec_cmd(taskManager), { description = "App: Task manager" })
|
||||
|
||||
--# Cursed stuff
|
||||
--## Make window not amogus large
|
||||
hl.bind("CTRL + SUPER + Backslash", hl.dsp.window.resize({ x = 640, y = 480, "exact" }))
|
||||
@@ -1,27 +0,0 @@
|
||||
HOME = os.getenv("HOME")
|
||||
|
||||
function is_file_exists(name)
|
||||
local f = io.open(name, "r")
|
||||
if f ~= nil then
|
||||
io.close(f)
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
function create_if_not_exists(path)
|
||||
if not is_file_exists(path) then
|
||||
os.execute("mkdir -p \"$(dirname \"" .. path .. "\")\"")
|
||||
os.execute("echo '-- This file will not be overwritten across dots-hyprland updates.\n-- The file name is for the sake of organization and does not matter\n-- See the corresponding files in ~/.config/hypr/hyprland for examples' > \"" .. path .. "\"")
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function workspace_in_group(i)
|
||||
local curr = hl.get_active_workspace().id
|
||||
local newVal = math.floor((curr - 1) / workspaceGroupSize) * workspaceGroupSize + i
|
||||
-- hl.notification.create({ text = "curr " .. curr .. " floor " .. math.floor(curr / 10) .. " new " .. newVal, duration = 5000 })
|
||||
return newVal
|
||||
end
|
||||
@@ -1,169 +0,0 @@
|
||||
-- ######## Window rules ########
|
||||
|
||||
-- Disable blur for xwayland context menus
|
||||
hl.window_rule({match = {class = "^()$", title = "^()$" }, no_blur = true })
|
||||
|
||||
-- Disable blur for every window
|
||||
hl.window_rule({match = {class = ".*" }, no_blur = true })
|
||||
|
||||
-- Floating
|
||||
hl.window_rule({match = {title = "^(Open File)(.*)$" }, center = true})
|
||||
hl.window_rule({match = {title = "^(Open File)(.*)$" }, float = true})
|
||||
hl.window_rule({match = {title = "^(Select a File)(.*)$" }, center = true})
|
||||
hl.window_rule({match = {title = "^(Select a File)(.*)$" }, float = true})
|
||||
hl.window_rule({match = {title = "^(Choose wallpaper)(.*)$" }, center = true})
|
||||
hl.window_rule({match = {title = "^(Choose wallpaper)(.*)$" }, float = true})
|
||||
hl.window_rule({match = {title = "^(Choose wallpaper)(.*)$" }, size = {"(monitor_w*0.60)", "(monitor_h*0.65)"} })
|
||||
hl.window_rule({match = {title = "^(Open Folder)(.*)$" }, center = true})
|
||||
hl.window_rule({match = {title = "^(Open Folder)(.*)$" }, float = true})
|
||||
hl.window_rule({match = {title = "^(Save As)(.*)$" }, center = true})
|
||||
hl.window_rule({match = {title = "^(Save As)(.*)$" }, float = true})
|
||||
hl.window_rule({match = {title = "^(Library)(.*)$" }, center = true})
|
||||
hl.window_rule({match = {title = "^(Library)(.*)$" }, float = true})
|
||||
hl.window_rule({match = {title = "^(File Upload)(.*)$" }, center = true})
|
||||
hl.window_rule({match = {title = "^(File Upload)(.*)$" }, float = true})
|
||||
hl.window_rule({match = {title = "^(.*)(wants to save)$" }, center = true})
|
||||
hl.window_rule({match = {title = "^(.*)(wants to save)$" }, float = true})
|
||||
hl.window_rule({match = {title = "^(.*)(wants to open)$" }, center = true})
|
||||
hl.window_rule({match = {title = "^(.*)(wants to open)$" }, float = true})
|
||||
hl.window_rule({match = {class = "^(blueberry\\.py)$" }, float = true})
|
||||
hl.window_rule({match = {class = "^(guifetch)$" }, float = true}) -- FlafyDev/guifetch
|
||||
hl.window_rule({match = {class = "^(pavucontrol)$" }, float = true})
|
||||
hl.window_rule({match = {class = "^(pavucontrol)$" }, size = {"(monitor_w*0.45)", "(monitor_h*0.45)"} })
|
||||
hl.window_rule({match = {class = "^(pavucontrol)$" }, center = true})
|
||||
hl.window_rule({match = {class = "^(org.pulseaudio.pavucontrol)$" }, float = true})
|
||||
hl.window_rule({match = {class = "^(org.pulseaudio.pavucontrol)$" }, size = {"(monitor_w*0.45)", "(monitor_h*0.45)"} })
|
||||
hl.window_rule({match = {class = "^(org.pulseaudio.pavucontrol)$" }, center = true})
|
||||
hl.window_rule({match = {class = "^(nm-connection-editor)$" }, float = true})
|
||||
hl.window_rule({match = {class = "^(nm-connection-editor)$" }, size = {"(monitor_w*0.45)", "(monitor_h*0.45)"} })
|
||||
hl.window_rule({match = {class = "^(nm-connection-editor)$" }, center = true})
|
||||
hl.window_rule({match = {class = ".*plasmawindowed.*" }, float = true})
|
||||
hl.window_rule({match = {class = "kcm_.*" }, float = true})
|
||||
hl.window_rule({match = {class = ".*bluedevilwizard" }, float = true})
|
||||
hl.window_rule({match = {title = ".*Welcome" }, float = true})
|
||||
hl.window_rule({match = {title = "^(illogical-impulse Settings)$" }, float = true})
|
||||
hl.window_rule({match = {title = ".*Shell conflicts.*" }, float = true})
|
||||
hl.window_rule({match = {class = "org.freedesktop.impl.portal.desktop.kde" }, float = true})
|
||||
hl.window_rule({match = {class = "org.freedesktop.impl.portal.desktop.kde" }, size = {"(monitor_w*0.60)", "(monitor_h*0.65)"} })
|
||||
hl.window_rule({match = {class = "^(Zotero)$" }, float = true})
|
||||
hl.window_rule({match = {class = "^(Zotero)$" }, size = {"(monitor_w*0.45)", "(monitor_h*0.45)"} })
|
||||
|
||||
-- Move
|
||||
-- kde-material-you-colors spawns a window when changing dark/light theme. This is to make sure it doesn't interfere at all.
|
||||
hl.window_rule({match = {class = "^(plasma-changeicons)$" }, float = true})
|
||||
hl.window_rule({match = {class = "^(plasma-changeicons)$" }, no_initial_focus = true})
|
||||
hl.window_rule({match = {class = "^(plasma-changeicons)$" }, move = {999999, 999999}})
|
||||
-- stupid dolphin copy
|
||||
hl.window_rule({match = {title = "^(Copying — Dolphin)$" }, move = {40, 80}})
|
||||
|
||||
-- Tiling
|
||||
hl.window_rule({match = {class = "^dev\\.warp\\.Warp$" }, tile = true})
|
||||
|
||||
-- Picture-in-Picture
|
||||
hl.window_rule({match = {title = "^([Pp]icture[-\\s]?[Ii]n[-\\s]?[Pp]icture)(.*)$" }, float = true})
|
||||
hl.window_rule({match = {title = "^([Pp]icture[-\\s]?[Ii]n[-\\s]?[Pp]icture)(.*)$" }, keep_aspect_ratio = true})
|
||||
hl.window_rule({match = {title = "^([Pp]icture[-\\s]?[Ii]n[-\\s]?[Pp]icture)(.*)$" }, move = {"(monitor_w*0.73)", "(monitor_h*0.72)"} })
|
||||
hl.window_rule({match = {title = "^([Pp]icture[-\\s]?[Ii]n[-\\s]?[Pp]icture)(.*)$" }, size = {"(monitor_w*0.25)", "(monitor_h*0.25)"} })
|
||||
hl.window_rule({match = {title = "^([Pp]icture[-\\s]?[Ii]n[-\\s]?[Pp]icture)(.*)$" }, float = true})
|
||||
hl.window_rule({match = {title = "^([Pp]icture[-\\s]?[Ii]n[-\\s]?[Pp]icture)(.*)$" }, pin = true})
|
||||
|
||||
-- Screen sharing
|
||||
hl.window_rule({match = {title = ".*is sharing (a window|your screen).*" }, float = true})
|
||||
hl.window_rule({match = {title = ".*is sharing (a window|your screen).*" }, pin = true})
|
||||
hl.window_rule({match = {title = ".*is sharing (a window|your screen).*" }, move = {"(monitor_w*.5-window_w*.5)", "(monitor_h-window_h-12)"} })
|
||||
|
||||
-- --- Tearing ---
|
||||
hl.window_rule({match = {title = ".*\\.exe" }, immediate = true})
|
||||
hl.window_rule({match = {title = ".*minecraft.*" }, immediate = true})
|
||||
hl.window_rule({match = {class = "^(steam_app).*" }, immediate = true})
|
||||
|
||||
-- No shadow for tiled windows
|
||||
hl.window_rule({match = {float = 0 }, no_shadow = true})
|
||||
|
||||
-- ######## Workspace rules ########
|
||||
hl.workspace_rule({ workspace = "special:special", gaps_out = 30 })
|
||||
|
||||
-- ######## Layer rules ########
|
||||
hl.layer_rule({ match = { namespace = ".*" }, xray = true})
|
||||
hl.layer_rule({ match = { namespace = "walker" }, no_anim = true})
|
||||
hl.layer_rule({ match = { namespace = "selection" }, no_anim = true})
|
||||
hl.layer_rule({ match = { namespace = "overview" }, no_anim = true})
|
||||
hl.layer_rule({ match = { namespace = "anyrun" }, no_anim = true})
|
||||
hl.layer_rule({ match = { namespace = "indicator.*" }, no_anim = true})
|
||||
hl.layer_rule({ match = { namespace = "osk" }, no_anim = true})
|
||||
hl.layer_rule({ match = { namespace = "hyprpicker" }, no_anim = true})
|
||||
|
||||
hl.layer_rule({ match = { namespace = "noanim" }, no_anim = true})
|
||||
hl.layer_rule({ match = { namespace = "gtk-layer-shell" }, blur = true})
|
||||
hl.layer_rule({ match = { namespace = "gtk-layer-shell" }, ignore_alpha = 0})
|
||||
hl.layer_rule({ match = { namespace = "launcher" }, blur = true})
|
||||
hl.layer_rule({ match = { namespace = "launcher" }, ignore_alpha = 0.5})
|
||||
hl.layer_rule({ match = { namespace = "notifications" }, blur = true})
|
||||
hl.layer_rule({ match = { namespace = "notifications" }, ignore_alpha = 0.69})
|
||||
hl.layer_rule({ match = { namespace = "logout_dialog" }, blur = true}) -- wlogout
|
||||
|
||||
-- ags
|
||||
hl.layer_rule({ match = { namespace = "sideleft.*" }, animation = "slide left"})
|
||||
hl.layer_rule({ match = { namespace = "sideright.*" }, animation = "slide right"})
|
||||
hl.layer_rule({ match = { namespace = "session[0-9]*" }, blur = true})
|
||||
hl.layer_rule({ match = { namespace = "bar[0-9]*" }, blur = true})
|
||||
hl.layer_rule({ match = { namespace = "bar[0-9]*" }, ignore_alpha = 0.6})
|
||||
hl.layer_rule({ match = { namespace = "barcorner.*" }, blur = true})
|
||||
hl.layer_rule({ match = { namespace = "barcorner.*" }, ignore_alpha = 0.6})
|
||||
hl.layer_rule({ match = { namespace = "dock[0-9]*" }, blur = true})
|
||||
hl.layer_rule({ match = { namespace = "dock[0-9]*" }, ignore_alpha = 0.6})
|
||||
hl.layer_rule({ match = { namespace = "indicator.*" }, blur = true})
|
||||
hl.layer_rule({ match = { namespace = "indicator.*" }, ignore_alpha = 0.6})
|
||||
hl.layer_rule({ match = { namespace = "overview[0-9]*" }, blur = true})
|
||||
hl.layer_rule({ match = { namespace = "overview[0-9]*" }, ignore_alpha = 0.6})
|
||||
hl.layer_rule({ match = { namespace = "cheatsheet[0-9]*" }, blur = true})
|
||||
hl.layer_rule({ match = { namespace = "cheatsheet[0-9]*" }, ignore_alpha = 0.6})
|
||||
hl.layer_rule({ match = { namespace = "sideright[0-9]*" }, blur = true})
|
||||
hl.layer_rule({ match = { namespace = "sideright[0-9]*" }, ignore_alpha = 0.6})
|
||||
hl.layer_rule({ match = { namespace = "sideleft[0-9]*" }, blur = true})
|
||||
hl.layer_rule({ match = { namespace = "sideleft[0-9]*" }, ignore_alpha = 0.6})
|
||||
hl.layer_rule({ match = { namespace = "indicator.*" }, blur = true})
|
||||
hl.layer_rule({ match = { namespace = "indicator.*" }, ignore_alpha = 0.6})
|
||||
hl.layer_rule({ match = { namespace = "osk[0-9]*" }, blur = true})
|
||||
hl.layer_rule({ match = { namespace = "osk[0-9]*" }, ignore_alpha = 0.6})
|
||||
|
||||
-- Quickshell
|
||||
-- Quickshell: illogical-impulse
|
||||
hl.layer_rule({ match = { namespace = "quickshell:.*" }, blur_popups = true})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:.*" }, blur = true})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:.*" }, ignore_alpha = 0.79})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:bar" }, animation = "slide"})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:actionCenter" }, no_anim = true})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:cheatsheet" }, animation = "slide bottom"})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:dock" }, animation = "slide bottom"})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:screenCorners" }, animation = "popin 120%"})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:lockWindowPusher" }, no_anim = true})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:notificationPopup" }, animation = "fade"})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:overlay" }, no_anim = true})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:overlay" }, ignore_alpha = 1})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:overview" }, no_anim = true})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:osk" }, animation = "slide bottom"})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:polkit" }, no_anim = true})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:popup" }, xray = false}) -- No weird color for bar tooltips (this in theory should suffice)
|
||||
hl.layer_rule({ match = { namespace = "quickshell:popup" }, ignore_alpha = 1}) -- No weird color for bar tooltips (but somehow this is necessary)
|
||||
hl.layer_rule({ match = { namespace = "quickshell:mediaControls" }, ignore_alpha = 1}) -- Same as above
|
||||
hl.layer_rule({ match = { namespace = "quickshell:reloadPopup" }, animation = "slide"})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:regionSelector" }, no_anim = true})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:screenshot" }, no_anim = true})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:session" }, blur = true})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:session" }, no_anim = true})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:session" }, ignore_alpha = 0})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:sidebarRight" }, animation = "slide right"})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:sidebarLeft" }, animation = "slide left"})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:verticalBar" }, animation = "slide"})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:osk" }, order = -1})
|
||||
-- Quickshell: waffles
|
||||
hl.layer_rule({ match = { namespace = "quickshell:wallpaperSelector" }, animation = "slide top"})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:wNotificationCenter" }, no_anim = true})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:wOnScreenDisplay" }, no_anim = true})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:wStartMenu" }, no_anim = true})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:wTaskView" }, ignore_alpha = 0})
|
||||
hl.layer_rule({ match = { namespace = "quickshell:wTaskView" }, no_anim = true})
|
||||
|
||||
-- Launchers need to be FAST
|
||||
hl.layer_rule({ match = { namespace = "gtk4-layer-shell" }, no_anim = true})
|
||||
@@ -1,201 +0,0 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@@ -1,43 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Default system prompt
|
||||
SYSTEM_PROMPT="You are a helpful, quick assistant that provides brief and concise explanation \
|
||||
to given content in at most 100 characters. If the given content is not in English, translate \
|
||||
it to English. If the content is an English word, provide its meaning. If the content is a name, \
|
||||
provide some info about it. For a math expression, provide a simplification, \
|
||||
each step on a line following this style: \`2x=11 (subtract 7 from both sides)\`. \
|
||||
If you do not know the answer, simply say 'No info available'. \
|
||||
Only respond for the appropriate case and use as little text as possible.\
|
||||
The content:"
|
||||
|
||||
first_loaded_model=$("$(dirname "$0")/show-loaded-ollama-models.sh" -j | jq -r '.[0].model' 2>/dev/null) || first_loaded_model=""
|
||||
model=${first_loaded_model:-"llama3.2"}
|
||||
|
||||
# Parse command-line arguments
|
||||
while [[ "$#" -gt 0 ]]; do
|
||||
case $1 in
|
||||
--model) model="$2"; shift ;; # Set the model from the flag
|
||||
*) echo "Unknown parameter: $1"; exit 1 ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# Combine the system prompt with the clipboard content
|
||||
content=$(wl-paste -p | tr '\n' ' ' | head -c 2000) # 2000 char limit to prevent overflow
|
||||
|
||||
# Properly escape content for JSON using jq
|
||||
prompt_json=$(jq -n --arg system_prompt "$SYSTEM_PROMPT" --arg content "$content" '$system_prompt + " " + $content')
|
||||
|
||||
# Make the API call with the specified or default model
|
||||
api_payload=$(jq -n --arg model "$model" --argjson prompt "$prompt_json" --argjson stream false \
|
||||
'{model: $model, prompt: $prompt, stream: $stream}')
|
||||
response=$(curl -s http://localhost:11434/api/generate -d "$api_payload" | jq -r '.response' 2>/dev/null)
|
||||
|
||||
# Check if content is a single line and no longer than 30 characters
|
||||
if [[ ${#content} -le 30 && "$content" != *$'\n'* ]]; then
|
||||
notify-send --app-name="Text selection query" --expire-time=10000 \
|
||||
"$content" "$response"
|
||||
else
|
||||
notify-send --app-name="Text selection query" --expire-time=10000 \
|
||||
"AI Response" "$response"
|
||||
fi
|
||||
@@ -1,99 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# From strikeoncmputrz/LLM_Scripts
|
||||
# License: Apache-2.0, can be found in the same folder as this script
|
||||
|
||||
# Global Vars
|
||||
ollama_url=http://localhost
|
||||
port="11434"
|
||||
blobs=()
|
||||
model_name_paths=()
|
||||
|
||||
|
||||
#Parse arguments
|
||||
while [ "$#" -gt 0 ]; do
|
||||
case $1 in
|
||||
-h|--help)
|
||||
echo
|
||||
echo " Identifies Ollama models running on this operating system by parsing running processes."
|
||||
echo
|
||||
echo " Usage: $0 [options]"
|
||||
echo
|
||||
echo " Options:"
|
||||
echo " -j, --json_output Prints result as a json object. Other output disabled. (Default: false)"
|
||||
echo " -p, --port [port number] Specify Ollama Server port (Default: 11434)"
|
||||
echo " -u, --ollama_url [url] Specify Ollama Server URL (Default: http://localhost)"
|
||||
echo
|
||||
echo " Dependencies: jq"
|
||||
exit 0
|
||||
;;
|
||||
-j|--json_output)
|
||||
json_out=1
|
||||
shift 1
|
||||
;;
|
||||
-u|--ollama_url)
|
||||
ollama_url=$2
|
||||
shift 2
|
||||
;;
|
||||
-p|--port)
|
||||
port=$2
|
||||
shift 2
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option: $1"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
compare_running_models_and_modelfiles() {
|
||||
json_match=()
|
||||
json_output=()
|
||||
local matching_models=()
|
||||
OLDIFS=$IFS
|
||||
for ((i=0; i<${#model_name_paths[@]}; i++)); do # Iterate over the array of modelname,blob-path
|
||||
for blob in "${blobs[@]}"; do
|
||||
IFS=',', read -ra fields <<< "${model_name_paths[i]}" # Split the string into parts
|
||||
if [ "${fields[1]}" == "$blob" ]; then # Check if current 'field' matches a blob
|
||||
matching_models+=( '{ "model": "'"${fields[0]}"'", "path": "'"${fields[1]}"'"}') # Add to list of matching models
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
if [ -z "$json_out" ]; then
|
||||
echo -e "\nModel Found: \n $(echo ${matching_models[*]} | jq '.' | sed s/[{}]//g) \n"
|
||||
else
|
||||
local json_match="${matching_models[*]}"
|
||||
json_output=$(echo $json_match | jq -c -s .)
|
||||
echo "$json_output"
|
||||
fi
|
||||
IFS=$OLDIFS
|
||||
}
|
||||
|
||||
get_running_model_paths() {
|
||||
blobs=$(ps aux | grep -- '--model' | grep -v grep | grep -Po '(?<=--model\s).*' | cut -d ' ' -f1)
|
||||
if [ -z "$blobs" ]; then
|
||||
echo -e "\n\n Warning: No running Ollama models detected!\n"
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
|
||||
parse_modelfiles() {
|
||||
if [ -z "$json_out" ]; then
|
||||
echo -e "\nConnecting to $ollama_url:$port\n"
|
||||
if [ -z "$(curl -s $ollama_url:$port)" ]; then
|
||||
echo -e "Could not connect to Ollama. Check the ollama_url parameter and that the server is running\n"
|
||||
exit 1
|
||||
fi
|
||||
curl -s "$ollama_url:$port"
|
||||
fi
|
||||
local models=( $(curl -s "$ollama_url:$port/api/tags" | jq -r '.models[].name') )
|
||||
for model in "${models[@]}"; do
|
||||
local modelfile=$(curl -s "$ollama_url:$port/api/show" -d '{ "name": "'"$model"'", "modelfile": true }' | jq -r '.modelfile')
|
||||
model_name_paths+=($model,$(echo "$modelfile" | awk '/^FROM/{print $2}'))
|
||||
done
|
||||
}
|
||||
|
||||
parse_modelfiles
|
||||
get_running_model_paths
|
||||
compare_running_models_and_modelfiles
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,7 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
for cmd in "$@"; do
|
||||
[[ -z "$cmd" ]] && continue
|
||||
eval "command -v ${cmd%% *}" >/dev/null 2>&1 || continue
|
||||
eval "$cmd" &
|
||||
exit
|
||||
done
|
||||
@@ -1,5 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
grim -g "$(slurp)" /tmp/image.png
|
||||
imageLink=$(curl -sF files[]=@/tmp/image.png 'https://uguu.se/upload' | jq -r '.files[0].url')
|
||||
xdg-open "https://lens.google.com/uploadbyurl?url=${imageLink}"
|
||||
rm /tmp/image.png
|
||||
@@ -1,30 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Check if GeoClue agent is already running
|
||||
if pgrep -f 'geoclue-2.0/demos/agent' > /dev/null; then
|
||||
echo "GeoClue agent is already running."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# List of known possible GeoClue agent paths
|
||||
AGENT_PATHS=(
|
||||
/usr/libexec/geoclue-2.0/demos/agent
|
||||
/usr/lib/geoclue-2.0/demos/agent
|
||||
"$HOME/.nix-profile/libexec/geoclue-2.0/demos/agent"
|
||||
"$HOME/.nix-profile/lib/geoclue-2.0/demos/agent"
|
||||
/run/current-system/sw/libexec/geoclue-2.0/demos/agent
|
||||
)
|
||||
|
||||
# Find the first valid agent path
|
||||
for path in "${AGENT_PATHS[@]}"; do
|
||||
if [ -x "$path" ]; then
|
||||
echo "Starting GeoClue agent from: $path"
|
||||
"$path" & # starts in the background
|
||||
exit 0
|
||||
fi
|
||||
done
|
||||
|
||||
# If we got here, none of the paths worked
|
||||
echo "GeoClue agent not found in known paths."
|
||||
echo "Please install GeoClue or update the script with the correct path."
|
||||
exit 1
|
||||
@@ -1,29 +0,0 @@
|
||||
require("hyprland/lib")
|
||||
|
||||
hl.on("hyprland.start", function()
|
||||
local homeDir = os.getenv("HOME")
|
||||
if string.len(homeDir) == 0 then
|
||||
return
|
||||
end
|
||||
local baseCustomDir = homeDir .. "/.config/hypr/custom"
|
||||
local files = {
|
||||
baseCustomDir .. "/env.lua",
|
||||
baseCustomDir .. "/execs.lua",
|
||||
baseCustomDir .. "/general.lua",
|
||||
baseCustomDir .. "/keybinds.lua",
|
||||
baseCustomDir .. "/rules.lua",
|
||||
baseCustomDir .. "/variables.lua"
|
||||
}
|
||||
local createdFiles = 0
|
||||
for _, file in ipairs(files) do
|
||||
if not is_file_exists(file) then
|
||||
create_if_not_exists(file)
|
||||
createdFiles = createdFiles + 1
|
||||
end
|
||||
end
|
||||
|
||||
if createdFiles > 0 then
|
||||
-- hl.exec_cmd("notify-send 'Hyprland config' 'Created " .. createdFiles .. " custom Hyprland config files in " .. baseCustomDir .. "' -a 'Hyprland'")
|
||||
-- hl.exec_cmd("hyprctl reload")
|
||||
end
|
||||
end)
|
||||
@@ -1 +0,0 @@
|
||||
require("hyprland/services/create_custom_config")
|
||||
@@ -1,2 +0,0 @@
|
||||
-- DO NOT EDIT THIS FILE. IT IS MANAGED BY THE SHELL AND FOLLOWS STRICT RULES
|
||||
-- In other words, I ain't writing a lua parser for this, so please be a good boi/girl/whatever
|
||||
@@ -1,19 +0,0 @@
|
||||
-- Default variables
|
||||
-- Copy these to ~/.config/hypr/custom/variables.lua to make changes in a dotfiles-update-friendly manner
|
||||
|
||||
-- The folder within ~/.config/quickshell containing the config
|
||||
hl.env("qsConfig", "ii")
|
||||
|
||||
-- Apps
|
||||
-- PULL REQUESTS ADDING MORE WILL NOT BE ACCEPTED, CONFIG FOR YOURSELF
|
||||
terminal = "~/.config/hypr/hyprland/scripts/launch_first_available.sh 'foot' 'kitty -1' 'alacritty' 'wezterm' 'konsole' 'kgx' 'uxterm' 'xterm'"
|
||||
fileManager = "~/.config/hypr/hyprland/scripts/launch_first_available.sh 'dolphin' 'nautilus' 'nemo' 'thunar' 'kitty -1 fish -c yazi'"
|
||||
browser = "~/.config/hypr/hyprland/scripts/launch_first_available.sh 'google-chrome-stable' 'zen-browser' 'firefox' 'brave' 'chromium' 'microsoft-edge-stable' 'opera' 'librewolf'"
|
||||
codeEditor = "~/.config/hypr/hyprland/scripts/launch_first_available.sh 'windsurf' 'antigravity' 'code' 'codium' 'cursor' 'zed' 'zedit' 'zeditor' 'kate' 'gnome-text-editor' 'emacs' 'command -v nvim && kitty -1 nvim' 'command -v micro && kitty -1 micro'"
|
||||
officeSoftware = "~/.config/hypr/hyprland/scripts/launch_first_available.sh 'wps' 'onlyoffice-desktopeditors' 'libreoffice'"
|
||||
textEditor = "~/.config/hypr/hyprland/scripts/launch_first_available.sh 'kate' 'gnome-text-editor' 'emacs'"
|
||||
volumeMixer = "~/.config/hypr/hyprland/scripts/launch_first_available.sh 'pavucontrol-qt' 'pavucontrol'"
|
||||
settingsApp = "XDG_CURRENT_DESKTOP=gnome ~/.config/hypr/hyprland/scripts/launch_first_available.sh 'qs -p ~/.config/quickshell/$qsConfig/settings.qml' 'systemsettings' 'gnome-control-center' 'better-control'"
|
||||
taskManager = "~/.config/hypr/hyprland/scripts/launch_first_available.sh 'gnome-system-monitor' 'plasma-systemmonitor --page-name Processes' 'command -v btop && kitty -1 fish -c btop'"
|
||||
|
||||
workspaceGroupSize = 10
|
||||
@@ -1,93 +0,0 @@
|
||||
source=~/.config/hypr/hyprlock/colors.conf
|
||||
|
||||
background {
|
||||
color = rgba(181818FF)
|
||||
}
|
||||
input-field {
|
||||
monitor =
|
||||
size = 250, 50
|
||||
outline_thickness = 2
|
||||
dots_size = 0.1
|
||||
dots_spacing = 0.3
|
||||
outer_color = $entry_border_color
|
||||
inner_color = $entry_background_color
|
||||
font_color = $entry_color
|
||||
fade_on_empty = true
|
||||
|
||||
position = 0, 20
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
label {
|
||||
monitor =
|
||||
text = $LAYOUT
|
||||
color = $text_color
|
||||
font_size = 14
|
||||
font_family = $font_family
|
||||
position = -30, 30
|
||||
halign = right
|
||||
valign = bottom
|
||||
}
|
||||
|
||||
label { # Caps Lock Warning
|
||||
monitor =
|
||||
text = cmd[update:250] ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/hyprlock/check-capslock.sh
|
||||
color = $text_color
|
||||
font_size = 13
|
||||
font_family = $font_family
|
||||
position = 0, -25
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
|
||||
label { # Clock
|
||||
monitor =
|
||||
text = $TIME
|
||||
color = $text_color
|
||||
font_size = 65
|
||||
font_family = $font_family_clock
|
||||
|
||||
position = 0, 300
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
label { # Date
|
||||
monitor =
|
||||
text = cmd[update:5000] date +"%A, %B %d"
|
||||
color = $text_color
|
||||
font_size = 17
|
||||
font_family = $font_family_clock
|
||||
|
||||
position = 0, 240
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
label { # User
|
||||
monitor =
|
||||
text = $USER
|
||||
color = $text_color
|
||||
outline_thickness = 2
|
||||
dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
|
||||
dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
|
||||
dots_center = true
|
||||
font_size = 20
|
||||
font_family = $font_family
|
||||
position = 0, 50
|
||||
halign = center
|
||||
valign = bottom
|
||||
}
|
||||
|
||||
label { # Status
|
||||
monitor =
|
||||
text = cmd[update:5000] ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/hyprlock/status.sh
|
||||
color = $text_color
|
||||
font_size = 14
|
||||
font_family = $font_family
|
||||
|
||||
position = 30, -30
|
||||
halign = left
|
||||
valign = top
|
||||
}
|
||||
@@ -1,93 +0,0 @@
|
||||
source=~/.config/hypr/hyprlock/colors.conf
|
||||
|
||||
background {
|
||||
color = rgba(181818FF)
|
||||
}
|
||||
input-field {
|
||||
monitor =
|
||||
size = 250, 50
|
||||
outline_thickness = 2
|
||||
dots_size = 0.1
|
||||
dots_spacing = 0.3
|
||||
outer_color = $entry_border_color
|
||||
inner_color = $entry_background_color
|
||||
font_color = $entry_color
|
||||
fade_on_empty = true
|
||||
|
||||
position = 0, 20
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
label {
|
||||
monitor =
|
||||
text = $LAYOUT
|
||||
color = $text_color
|
||||
font_size = 14
|
||||
font_family = $font_family
|
||||
position = -30, 30
|
||||
halign = right
|
||||
valign = bottom
|
||||
}
|
||||
|
||||
label { # Caps Lock Warning
|
||||
monitor =
|
||||
text = cmd[update:250] ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/hyprlock/check-capslock.sh
|
||||
color = $text_color
|
||||
font_size = 13
|
||||
font_family = $font_family
|
||||
position = 0, -25
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
|
||||
label { # Clock
|
||||
monitor =
|
||||
text = $TIME
|
||||
color = $text_color
|
||||
font_size = 65
|
||||
font_family = $font_family_clock
|
||||
|
||||
position = 0, 300
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
label { # Date
|
||||
monitor =
|
||||
text = cmd[update:5000] date +"%A, %B %d"
|
||||
color = $text_color
|
||||
font_size = 17
|
||||
font_family = $font_family_clock
|
||||
|
||||
position = 0, 240
|
||||
halign = center
|
||||
valign = center
|
||||
}
|
||||
|
||||
label { # User
|
||||
monitor =
|
||||
text = $USER
|
||||
color = $text_color
|
||||
outline_thickness = 2
|
||||
dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
|
||||
dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
|
||||
dots_center = true
|
||||
font_size = 20
|
||||
font_family = $font_family
|
||||
position = 0, 50
|
||||
halign = center
|
||||
valign = bottom
|
||||
}
|
||||
|
||||
label { # Status
|
||||
monitor =
|
||||
text = cmd[update:5000] ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/hyprlock/status.sh
|
||||
color = $text_color
|
||||
font_size = 14
|
||||
font_family = $font_family
|
||||
|
||||
position = 30, -30
|
||||
halign = left
|
||||
valign = top
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
# This configuration is generated by matugen
|
||||
# Changing these variables with matugen still enabled will overwrite them.
|
||||
|
||||
$text_color = rgba(d6e3ffFF)
|
||||
$entry_background_color = rgba(001b3d11)
|
||||
$entry_border_color = rgba(8e909955)
|
||||
$entry_color = rgba(d6e3ffFF)
|
||||
$font_family = Google Sans Flex Medium
|
||||
$font_family_clock = Google Sans Flex Medium
|
||||
$font_material_symbols = Material Symbols Rounded
|
||||
|
||||
$background_image = /home/alvin/Pictures/Wallpapers/Dynamic-Wallpapers/Dark/japan-street-Dark.png
|
||||
@@ -1,4 +0,0 @@
|
||||
# Generated by nwg-displays on 2026-02-19 at 19:29:54. Do not edit manually.
|
||||
|
||||
monitor=DVI-I-1,1920x1080@60.0,1920x0,1.0
|
||||
monitor=DP-1,1920x1080@60.0,0x0,1.0
|
||||
@@ -1,14 +0,0 @@
|
||||
-- Generated by nwg-displays on 2026-06-21 at 10:42:47. Do not edit manually.
|
||||
|
||||
hl.monitor({
|
||||
output = "DVI-I-1",
|
||||
mode = "1920x1080@60.0",
|
||||
position = "1920x0",
|
||||
scale = 1.0
|
||||
})
|
||||
hl.monitor({
|
||||
output = "DP-1",
|
||||
mode = "1920x1080@60.0",
|
||||
position = "0x0",
|
||||
scale = 1.0
|
||||
})
|
||||
@@ -1,13 +0,0 @@
|
||||
# Generated by nwg-displays on 2026-02-19 at 19:29:51. Do not edit manually.
|
||||
|
||||
workspace=1, monitor:true
|
||||
workspace=2, monitor:true
|
||||
workspace=3, monitor:true
|
||||
workspace=4, monitor:true
|
||||
workspace=5, monitor:true
|
||||
workspace=6, monitor:true
|
||||
workspace=7, monitor:true
|
||||
workspace=8, monitor:true
|
||||
workspace=9, monitor:true
|
||||
workspace=10, monitor:true
|
||||
workspace=11, monitor:false
|
||||
@@ -1,11 +0,0 @@
|
||||
workspace=1, monitor:true
|
||||
workspace=2, monitor:true
|
||||
workspace=3, monitor:true
|
||||
workspace=4, monitor:true
|
||||
workspace=5, monitor:true
|
||||
workspace=6, monitor:true
|
||||
workspace=7, monitor:true
|
||||
workspace=8, monitor:true
|
||||
workspace=9, monitor:true
|
||||
workspace=10, monitor:true
|
||||
workspace=11, monitor:false
|
||||
@@ -1,12 +0,0 @@
|
||||
-- Generated by nwg-displays on 2026-02-19 at 19:29:51. Do not edit manually.
|
||||
|
||||
hl.workspace_rule({ workspace = "1" })
|
||||
hl.workspace_rule({ workspace = "2" })
|
||||
hl.workspace_rule({ workspace = "3" })
|
||||
hl.workspace_rule({ workspace = "4" })
|
||||
hl.workspace_rule({ workspace = "5" })
|
||||
hl.workspace_rule({ workspace = "6" })
|
||||
hl.workspace_rule({ workspace = "7" })
|
||||
hl.workspace_rule({ workspace = "8" })
|
||||
hl.workspace_rule({ workspace = "9" })
|
||||
hl.workspace_rule({ workspace = "10" })
|
||||
Reference in New Issue
Block a user