first commit

This commit is contained in:
Domipoke
2026-06-25 19:17:20 +02:00
commit 9360ba8e8a
27 changed files with 1360 additions and 0 deletions
+14
View File
@@ -0,0 +1,14 @@
{
"workspace": {
"library": [
"/usr/local/share/hypr/stubs"
]
},
"diagnostics": {
"globals": [
"hl",
"mainMod",
"noctalia"
]
}
}
+8
View File
@@ -0,0 +1,8 @@
{
"Lua.workspace.library": [
"/usr/local/share/hypr/stubs"
],
"Lua.diagnostics.globals": [
"hl"
]
}
+139
View File
@@ -0,0 +1,139 @@
-- Setup curves
hl.curve("wind", {
points = {
{ 0.05, 0.9 },
{ 0.1, 1.05 }
},
type = "bezier"
})
hl.curve("winIn", {
points = {
{ 0.1, 1.1 },
{ 0.1, 1.1 }
},
type = "bezier"
})
hl.curve("winOut", {
points = {
{ 0.3, -0.3 },
{ 0, 1 }
},
type = "bezier"
})
hl.curve("liner", {
points = {
{ 1, 1 },
{ 1, 1 }
},
type = "bezier"
})
hl.curve("almostLinear", {
points = {
{ 0.5, 0.5 },
{ 0.75, 1 }
},
type = "bezier"
})
-- Setup animations
hl.animation({
leaf = "windows",
speed = 6,
bezier = "wind",
style = "slide",
enabled = true
})
hl.animation({
leaf = "windowsIn",
speed = 6,
bezier = "winIn",
style = "slide",
enabled = false
})
hl.animation({
leaf = "windowsOut",
speed = 5,
bezier = "winOut",
style = "slide",
enabled = false
})
hl.animation({
leaf = "windowsMove",
speed = 5,
bezier = "wind",
style = "slide",
enabled = false
})
hl.animation({
leaf = "border",
speed = 1,
bezier = "liner",
enabled = true
})
hl.animation({
leaf = "borderangle",
speed = 30,
bezier = "liner",
loop = true,
enabled = true
})
hl.animation({
leaf = "layers",
speed = 6,
bezier = "wind",
style = "popin 90%",
enabled = true
})
hl.animation({
leaf = "layersIn",
speed = 6,
bezier = "winIn",
style = "popin 90%",
enabled = true
})
hl.animation({
leaf = "layersOut",
speed = 5,
bezier = "winOut",
style = "popin 90%",
enabled = true
})
hl.animation({
leaf = "workspaces",
speed = 5,
bezier = "wind",
enabled = true
})
hl.animation({
leaf = "fadeIn",
speed = 1.73,
bezier = "almostLinear",
enabled = true
})
hl.animation({
leaf = "fadeOut",
speed = 1.46,
bezier = "almostLinear",
enabled = true
})
hl.animation({
leaf = "fade",
speed = 3.03,
bezier = "almostLinear",
enabled = true
})
+37
View File
@@ -0,0 +1,37 @@
-- #################
-- ### AUTOSTART ###
-- #################
hl.on("hyprland.start", function()
hl.exec_cmd("wl-paste --type text --watch cliphist store") -- Stores only text data
hl.exec_cmd("wl-paste --type image --watch cliphist store") -- Stores only image data
hl.exec_cmd("wl-clip-persist --clipboard regular")
hl.exec_cmd("systemctl --user start hyprpolkitagent")
hl.exec_cmd("hypridle")
-- Notification
-- hl.exec_cmd("mako")
-- hl.exec_cmd("~/.config/mako/scripts/spotify-notify.sh")
-- For screen sharing
hl.exec_cmd("dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP")
hl.exec_cmd("systemctl --user import-environment")
hl.exec_cmd("~/.config/hypr/scripts/screensharing.sh")
hl.exec_cmd("xwaylandvideobridge")
-- Bluetooth
-- hl.exec_cmd("blueman-applet") -- Make sure you have installed blueman
-- hl.exec_cmd("nm-applet")
-- hl.exec_cmd("blueman-tray")
-- For keyboard
hl.exec_cmd("fcitx5 -D")
-- Start plugins
hl.exec_cmd("hyprpm reload")
hl.exec_cmd("kded6")
hl.exec_cmd("kbuildsycoca6")
hl.exec_cmd("qs -c noctalia-shell")
end)
+102
View File
@@ -0,0 +1,102 @@
image = "/home/akiidjk/.config/wallpapers/eyes.png"
background = "#131314ff"
error = "#ffb4abff"
error_container = "#93000aff"
inverse_on_surface = "#313030ff"
inverse_primary = "#5c5e64ff"
inverse_surface = "#e5e2e2ff"
on_background = "#e5e2e2ff"
on_error = "#690005ff"
on_error_container = "#ffdad6ff"
on_primary = "#2e3035ff"
on_primary_container = "#c7c7cdff"
on_primary_fixed = "#191c20ff"
on_primary_fixed_variant = "#45474cff"
on_secondary = "#303032ff"
on_secondary_container = "#e1dfe2ff"
on_secondary_fixed = "#1b1b1dff"
on_secondary_fixed_variant = "#464649ff"
on_surface = "#e5e2e2ff"
on_surface_variant = "#c6c6cbff"
on_tertiary = "#372f29ff"
on_tertiary_container = "#d3c4bcff"
on_tertiary_fixed = "#221a15ff"
on_tertiary_fixed_variant = "#4f453eff"
outline = "#909095ff"
outline_variant = "#45474bff"
primary = "#c5c6ccff"
primary_container = "#35373cff"
primary_fixed = "#e2e2e8ff"
primary_fixed_dim = "#c5c6ccff"
scrim = "#000000ff"
secondary = "#c7c6c8ff"
secondary_container = "#464649ff"
secondary_fixed = "#e4e2e4ff"
secondary_fixed_dim = "#c7c6c8ff"
shadow = "#000000ff"
source_color = "#35373cff"
surface = "#131314ff"
surface_bright = "#3a3939ff"
surface_container = "#201f20ff"
surface_container_high = "#2a2a2aff"
surface_container_highest = "#353435ff"
surface_container_low = "#1c1b1cff"
surface_container_lowest = "#0e0e0eff"
surface_dim = "#131314ff"
surface_tint = "#c5c6ccff"
surface_variant = "#45474bff"
tertiary = "#d2c4bbff"
tertiary_container = "#3e352fff"
tertiary_fixed = "#efe0d7ff"
tertiary_fixed_dim = "#d2c4bbff"
+46
View File
@@ -0,0 +1,46 @@
require("colors")
hl.config({
general = {
gaps_in = 5,
gaps_out = 15,
border_size = 2,
-- # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col = {
active_border = primary,
inactive_border = on_primary
},
-- # Set to true enable resizing windows by clicking and dragging on borders and gaps
resize_on_border = true,
-- -- # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false,
layout = "dwindle"
},
decoration = {
rounding = 10,
rounding_power = 2,
-- # Change transparency of focused and unfocused windows
active_opacity = 1,
inactive_opacity = 1,
shadow = {
enabled = true,
range = 4,
render_power = 3,
color = background,
},
-- # https://wiki.hyprland.org/Configuring/Variables/#blur
blur = {
enabled = true,
size = 3,
passes = 1,
vibrancy = 0.1696
}
}
})
+22
View File
@@ -0,0 +1,22 @@
general {
lock_cmd = notify-send "lock!" # dbus/sysd lock command (loginctl lock-session)
unlock_cmd = notify-send "unlock!" # same as above, but unlock
ignore_dbus_inhibit = false # whether to ignore dbus-sent idle-inhibit requests (used by e.g. firefox or steam)
lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances.
before_sleep_cmd = loginctl lock-session # lock before suspend.
after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display.
}
# Screenlock
listener {
timeout = 180 # in seconds
on-timeout = hyprlock # command to run when timeout has passed
# on-resume = notify-send "Welcome back to your desktop!" # command to run when activity is detected after timeout has fired.
}
# Suspend
listener {
timeout = 3600 # in seconds
on-timeout = systemctl suspend # command to run when timeout has passed
# on-resume = notify-send "Welcome back to your desktop!" # command to run when activity is detected after timeout has fired.
}
+110
View File
@@ -0,0 +1,110 @@
hl.env("AQ_DRM_DEVICES", "/dev/dri/card1")
-- Setup gestures
hl.gesture({
fingers = 3,
direction = "horizontal",
action = "workspace"
})
-- Some config
hl.config({
dwindle = {
-- force_split = 0,
preserve_split = true,
-- 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,
},
})
-- Load monitors config
require("monitors")
-- Nvidia settings
hl.env("LIBVA_DRIVER_NAME.nvidia", "true")
hl.env("__GLX_VENDOR_LIBRARY_NAME.nvidia", "true")
require("autostart")
-- #############################
-- ### ENVIRONMENT VARIABLES ###
-- #############################
-- # See https://wiki.hyprland.org/Configuring/Environment-variables/
hl.env("XCURSOR_SIZE", 24)
hl.env("HYPRCURSOR_SIZE", 24)
hl.env("QT_QPA_PLATFORMTHEME","qt6ct")
hl.env("XDG_MENU_PREFIX","arch- kbuildsycoca6")
-- # 01-xdg-base.conf
--hl.env("XDG_CONFIG_HOME", "/home/domenico/.config")
--hl.env("XDG_DATA_HOME", "/home/domenico/.local/share")
--hl.env("XDG_CACHE_HOME", "/home/domenco/.cache")
--hl.env("XDG_STATE_HOME", "/home/domenico/.local/state")
--hl.env("XDG_DATA_DIRS", "/home/domenico/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share")
-- # 10-kde-on-niri/hyprland
--hl.env("QT_QPA_PLATFORM", "wayland")
-- # REQUIRED: make sure portal uses KDE Qt platform theme
--hl.env("QT_QPA_PLATFORMTHEME","kde")
--hl.env("QT_QPA_PLATFORMTHEME_QT6","kde")
-- # REQUIRED: helps fixing Dolphin default applications issue
--hl.env("XDG_MENU_PREFIX","plasma-")
--hl.env("QT_AUTO_SCREEN_SCALE_FACTOR","1")
--hl.env("QT_ENABLE_HIGHDPI_SCALING","1")
--hl.env("QT_SCALE_FACTOR_ROUNDING_POLICY","RoundPreferFloor")
-- 80-gtk-no-btn.conf
--hl.env("GTK_DECORATION_LAYOUT","")
-- 99-electron.conf
--hl.env("ELECTRON_OZONE_PLATFORM_HINT", "auto")
-- #####################
-- ### LOOK AND FEEL ###
-- #####################
require("hyprcolors")
require("animation")
hl.config({
misc = {
force_default_wallpaper = -1, -- # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = true -- # If true disables the random hyprland logo / anime girl background. :(
}
})
-- #############
-- ### INPUT ###
-- #############
require("input")
require("keybinds")
-- ##############################
-- ### WINDOWS AND WORKSPACES ###
-- ##############################
-- # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
-- # See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
require("windowrule")
require("workspace")
-- ##################
-- ### EXTENSIONS ###
-- ##################
-- require("vicinae")
-- This loads Noctalia-generated Hyprland colors.
dofile("/home/domenico/.config/hypr/noctalia/noctalia-colors.lua")
+212
View File
@@ -0,0 +1,212 @@
general {
ignore_empty_input = true
fail_timeout = 1000
# hide_cursor = true
}
background {
monitor =
path = $HOME/.current_wallpaper # only png supported for now
color = rgba(25, 20, 20, 1.0)
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
blur_passes = 0 # 0 disables blurring
blur_size = 2
noise = 0
contrast = 0
brightness = 0
vibrancy = 0
vibrancy_darkness = 0.0
}
input-field {
monitor =
size = 300, 30
outline_thickness = 0
dots_size = 0.25 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.55 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true
dots_rounding = -1
outer_color = rgba(242, 243, 244, 0)
inner_color = rgba(242, 243, 244, 0)
font_color = rgba(242, 243, 244, 0.75)
fade_on_empty = false
placeholder_text = # Text rendered in the input box when it's empty.
hide_input = false
check_color = rgba(204, 136, 34, 0)
fail_color = rgba(204, 34, 34, 0) # if authentication failed, changes outer_color and fail message color
fail_text = $FAIL <b>($ATTEMPTS)</b> # can be set to empty
fail_transition = 300 # transition time in ms between normal outer_color and fail_color
capslock_color = -1
numlock_color = -1
bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above)
invert_numlock = false # change color if numlock is off
swap_font_color = false # see below
position = 0, -468
halign = center
valign = center
}
label {
monitor =
text = cmd[update:1000] echo "$(date +"%A, %B %d")"
color = rgba(242, 243, 244, 0.75)
font_size = 20
font_family = SF Pro Display Bold
position = 0, 405
halign = center
valign = center
}
label {
monitor =
text = $TIME12
color = rgba(242, 243, 244, 0.75)
font_size = 93
font_family = SF Pro Display Bold
position = 0, 310
halign = center
valign = center
}
label {
monitor =
text = $USER
color = rgba(242, 243, 244, 0.75)
font_size = 12
font_family = SF Pro Display Bold
position = 0, -407
halign = center
valign = center
}
label {
monitor =
text = Touch ID or Enter Password
color = rgba(242, 243, 244, 0.75)
font_size = 10
font_family = SF Pro Display
position = 0, -438
halign = center
valign = center
}
image {
monitor =
path = ~/.config/wallpapers/icons/spidy_black_1.jpg
border_color = 0xffdddddd
border_size = 0
size = 73
rounding = -1
rotate = 0
reload_time = -1
reload_cmd =
position = 0, -353
halign = center
valign = center
}
# Music blur div
shape {
monitor =
size = 340, 140
color =rgba(00, 00, 00, 0.1)
rounding = 30
rotate = 0
position = 0, -150
halign = center
valign = center
zindex = 1
}
# Music album art
image {
monitor =
size = 110
rounding = 20
rotate = 0
reload_time = 1
reload_cmd = ~/.config/hypr/scripts/playerctlock.sh --arturl
position = 800, -150
halign = left
valign = center
zindex = 5
}
# PLAYER LENGTH
label {
monitor =
text = cmd[update:1000] echo "$(~/.config/hypr/scripts/playerctlock.sh --length | cut -c 1-15)"
color = rgba(255, 255, 255, 0.8)
font_size = 10
font_family = JetBrains Mono Nerd Font Mono ExtraBold
position = 950, -190
halign = left
valign = center
zindex = 5
}
# PLAYER STATUS
label {
monitor =
text = cmd[update:1000] echo "$(~/.config/hypr/scripts/playerctlock.sh --status | cut -c 1-15)"
color = rgba(255, 255, 255, 0.8)
font_size = 10
font_family = JetBrains Mono Nerd Font Mono ExtraBold
position = 950, -170
halign = left
valign = center
zindex = 5
}
# PLAYER SOURCE
label {
monitor =
text = cmd[update:1000] echo "$(~/.config/hypr/scripts/playerctlock.sh --source | cut -c 1-15)"
color = rgba(255, 255, 255, 0.6)
font_size = 10
font_family = JetBrains Mono Nerd Font Mono
position = 950, -140
halign = left
valign = center
zindex = 5
}
# PLAYER TITLE
label {
monitor =
text = cmd[update:1000] echo "$(~/.config/hypr/scripts/playerctlock.sh --title | cut -c 1-15)"
color = rgba(255, 255, 255, 0.8)
font_size = 12
font_family = JetBrains Mono Nerd Font Mono ExtraBold
position = 950, -120
halign = left
valign = center
zindex = 5
}
# PLAYER ARTIST
label {
monitor =
text = cmd[update:1000] echo "$(~/.config/hypr/scripts/playerctlock.sh --artist | cut -c 1-15)"
color = rgba(255, 255, 255, 0.8)
font_size = 10
font_family = JetBrains Mono Nerd Font Mono ExtraBold
position = 950, -100
halign = left
valign = center
zindex = 5
}
+7
View File
@@ -0,0 +1,7 @@
background = rgba(1e1e2eff)
base = rgba(1e1e2eff)
text = rgba(cdd6f4ff)
alternate_base = rgba(313244ff)
bright_text = rgba(11111bff)
accent = rgba(cba6f7ff)
accent_secondary = rgba(fab387ff)
+15
View File
@@ -0,0 +1,15 @@
-- #############
-- ### INPUT ###
-- #############
-- # https://wiki.hyprland.org/Configuring/Variables/#input
hl.config({
input = {
kb_layout = "it",
follow_mouse = 1,
sensitivity = 0, -- # -1.0 - 1.0, 0 means no modification.
touchpad = {
natural_scroll = true
},
}
})
+107
View File
@@ -0,0 +1,107 @@
local terminal = "kitty"
local fileManager = "dolphin"
local browser = "vivaldi"
local editor = "code"
noctalia = "qs -c noctalia-shell ipc call "
mainMod = "SUPER"
-- Exec
hl.bind(mainMod .. " + RETURN", hl.dsp.exec_cmd(terminal), { description = "Open terminal" })
hl.bind(mainMod .. " + E", hl.dsp.exec_cmd(fileManager), { description = "Open file manager" })
hl.bind(mainMod .. " + B", hl.dsp.exec_cmd(browser), { description = "Open browser" })
hl.bind(mainMod .. " + C", hl.dsp.exec_cmd(editor), { description = "Open editor" })
hl.bind(mainMod .. " + V", hl.dsp.exec_cmd(noctalia .. "plugin:clipper toggle"), {description = "Open Clipboard history"})
hl.bind("ALT + L", hl.dsp.exec_cmd("hyprlock --grace 5"), { description = "Lock screen" })
hl.bind("SUPER + SHIFT + C", hl.dsp.exec_cmd("bash ~/.config/hypr/scripts/hyprPicker.sh"),
{ description = "Color picker" })
hl.bind("CTRL + SHIFT + A", hl.dsp.exec_cmd("playerctl play-pause"), { description = "Play/pause media" })
hl.bind("CTRL + SHIFT + D", hl.dsp.exec_cmd("playerctl next"), { description = "Next media" })
hl.bind("CTRL + SHIFT + S", hl.dsp.exec_cmd("playerctl previous"), { description = "Previous media" })
-- WM Control binds
hl.bind(mainMod .. " + Q", hl.dsp.window.close(), { description = "Close window" })
hl.bind("SUPER + SHIFT + Q", hl.dsp.exit(), { description = "Exit WM" })
hl.bind(mainMod .. " + F", hl.dsp.window.fullscreen({ mode = 1, internal = 0, client = 2 }),
{ description = "Maximize window" })
hl.bind(mainMod .. " + SHIFT + F", hl.dsp.window.fullscreen({ mode = 0, internal = 0, client = 2 }),
{ description = "Fullscreen window" })
hl.bind(mainMod .. " + T", hl.dsp.window.float(), { description = "Toggle floating" })
hl.bind(mainMod .. " + J", hl.dsp.layout("togglesplit"), { description = "Toggle split" })
hl.bind(mainMod .. " + G", hl.dsp.layout("swapsplit"), { description = "Swap split" })
-- Window Switch
hl.bind(mainMod .. " + CTRL + left", hl.dsp.focus({ direction = "left" }), { description = "Focus left" })
hl.bind(mainMod .. " + CTRL + right", hl.dsp.focus({ direction = "right" }), { description = "Focus right" })
hl.bind(mainMod .. " + CTRL + up", hl.dsp.focus({ direction = "up" }), { description = "Focus up" })
hl.bind(mainMod .. " + CTRL + down", hl.dsp.focus({ direction = "down" }), { description = "Focus down" })
hl.bind(mainMod .. " + P", hl.dsp.window.pin(), { description = "Pin a window"})
-- Window Move
-- hl.bind(mainMod .. " + SHIFT + left", hl.windo)
-- Switch workspaces with mainMod + [0-9]
for i = 1, 10 do
local key = i % 10
hl.bind(mainMod .. " + " .. key, hl.dsp.focus({ workspace = key }), { description = "Focus workspace " .. key })
hl.bind(mainMod .. " + SHIFT +" .. key, hl.dsp.window.move({ workspace = key }),
{ description = "Move to workspace " .. key })
end
-- hl.bind(mainMod .. " + 0", hl.dsp.workspace(10))
hl.bind(mainMod .. " + Tab", hl.dsp.focus({ workspace = "previous" }), { description = "Focus previous workspace" })
hl.bind(mainMod .. " + left", hl.dsp.focus({ workspace = "-1" }), { description = "Focus left workspace" })
hl.bind(mainMod .. " + SHIFT + left", hl.dsp.window.move({ workspace = "-1" }))
hl.bind(mainMod .. " + right", hl.dsp.focus({ workspace = "+1" }), { description = "Focus right workspace" })
hl.bind(mainMod .. " + SHIFT + right", hl.dsp.window.move({ workspace = "+1" }))
-- Move/resize windows with mainMod + LMB/RMB and dragging
hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true, description = "Drag window" })
hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true, description = "Resize window" })
hl.bind(mainMod .. " + CTRL + SHIFT + left", hl.dsp.window.resize({ x = -40, y = 0, relative = true }),
{ description = "Resize window left" })
hl.bind(mainMod .. " + CTRL + SHIFT + right", hl.dsp.window.resize({ x = 40, y = 0, relative = true }),
{ description = "Resize window right" })
hl.bind(mainMod .. " + CTRL + SHIFT + up", hl.dsp.window.resize({ x = 0, y = -40, relative = true }),
{ description = "Resize window up" })
hl.bind(mainMod .. " + CTRL + SHIFT + down", hl.dsp.window.resize({ x = 0, y = 40, relative = true }),
{ description = "Resize window down" })
-- Laptop multimedia keys for volume and LCD brightness
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"),
{ repeating = true, description = "Raise volume" })
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"),
{ repeating = true, description = "Lower volume" })
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"),
{ repeating = true, description = "Toggle mute" })
hl.bind("SHIFT + XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"),
{ repeating = true, description = "Toggle mic mute" })
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl s 5%+"),
{ repeating = true, description = "Raise brightness" })
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl s 5%-"),
{ repeating = true, description = "Lower brightness" })
-- Screenshot a window
local satty = "/home/domenico/.cargo/bin/satty --filename - --copy-command wl-copy --fullscreen --output-filename ~/Immagini/Screenshots/satty-$(date '+%Y%m%d-%H:%M:%S').png"
local copy = "wl-copy"
hl.bind("SUPER + SHIFT + S", hl.dsp.exec_cmd('grim -t png -g "$(slurp)" - | ' .. copy), { description = "Screenshot region" })
hl.bind("SUPER + CTRL + SHIFT + S", hl.dsp.exec_cmd('grim -t png -g "$(slurp)" - | ' .. satty))
hl.bind("PRINT", hl.dsp.exec_cmd('grim - | ' .. copy), { description = "Fullscreen Screenshots"})
-- Night mode and ToggleMirror scripts
hl.bind("SUPER + M", hl.dsp.exec_cmd("bash ~/.config/hypr/scripts/toggleMirror.sh"), { description = "Toggle mirror" })
hl.bind("SUPER + SHIFT + M", hl.dsp.exec_cmd("bash ~/.config/hypr/scripts/nightmode.sh"), { description = "Toggle night mode" })
-- Noctalia shortcut
hl.bind(mainMod .. " + Backslash", hl.dsp.exec_cmd(noctalia .. "launcher toggle"), { description = "Toggle quickshell bar" })
--hl.bind(mainMod .. " + N", hl.dsp.global(noctalia .. ""), { description = "Toggle quickshell hub" })
hl.bind(mainMod .. " + W", hl.dsp.exec_cmd(noctalia .. "plugin:wallcards toggle"), { description = "Toggle wall picker" })
hl.bind(mainMod .. " + K", hl.dsp.global("quickshell:keybindingsToggle"), { description = "Toggle keybindings" })
hl.bind(mainMod .. " + L", hl.dsp.global("quickshell:changeBarLayout"), { description = "Change bar layout" })
+42
View File
@@ -0,0 +1,42 @@
--################
--### MONITORS ###
--################
hl.monitor({
output = "eDP-1",
mode = "1920x1080@144",
position = "0x0",
scale = "1",
cm = "srgb"
})
-- hl.monitor({
-- output = "HDMI-A-1",
-- mode = "1920x1080@60",
-- position = "0x1280",
-- scale = "1",
-- mirror = "eDP-1"
-- })
-- hl.monitor({
-- output = "DP-3",
-- mode = "1920x1080@60",
-- position = "0x450",
-- scale = "1"
-- })
-- hl.monitor({
-- output = "DP-2",
-- mode = "1920x1080@144",
-- position = "1920x380",
-- scale = "1",
-- })
hl.monitor({
output = "HDMI-A-1",
mode = "1920x1080@60",
position = "3840x0",
scale = "1",
transform = true
})
+25
View File
@@ -0,0 +1,25 @@
$primary = rgb(cba6f7)
$surface = rgb(1e1e2e)
$secondary = rgb(fab387)
$error = rgb(f38ba8)
$tertiary = rgb(94e2d5)
$surface_lowest = rgb(212232)
general {
col.active_border = $primary
col.inactive_border = $surface
}
group {
col.border_active = $secondary
col.border_inactive = $surface
col.border_locked_active = $error
col.border_locked_inactive = $surface
groupbar {
col.active = $secondary
col.inactive = $surface
col.locked_active = $error
col.locked_inactive = $surface
}
}
+35
View File
@@ -0,0 +1,35 @@
-- Colors template generated by Noctalia
-- Source command is:
-- dofile(os.getenv("HOME") .. "/.config/hypr/noctalia/noctalia-colors.lua")
local primary = "rgb(cba6f7)"
local surface = "rgb(1e1e2e)"
local secondary = "rgb(fab387)"
local error = "rgb(f38ba8)"
hl.config({
general = {
col = {
active_border = primary,
inactive_border = surface,
},
},
group = {
col = {
border_active = secondary,
border_inactive = surface,
border_locked_active = error,
border_locked_inactive = surface,
},
groupbar = {
col = {
active = secondary,
inactive = surface,
locked_active = error,
locked_inactive = surface,
},
},
},
})
+6
View File
@@ -0,0 +1,6 @@
-- no blur
hl.config({ decoration = { blur = { enabled = false } } })
-- no shadow
hl.config({ decoration = { shadow = { enabled = false } } })
+134
View File
@@ -0,0 +1,134 @@
################## PLUGIN MANAGER ##################
plugin {
dynamic-cursors {
# enables the plugin
enabled = true
# sets the cursor behaviour, supports these values:
# tilt - tilt the cursor based on x-velocity
# rotate - rotate the cursor based on movement direction
# stretch - stretch the cursor shape based on direction and velocity
# none - do not change the cursors behaviour
mode = stretch
# minimum angle difference in degrees after which the shape is changed
# smaller values are smoother, but more expensive for hw cursors
threshold = 2
# for mode = rotate
rotate {
# length in px of the simulated stick used to rotate the cursor
# most realistic if this is your actual cursor size
length = 20
# clockwise offset applied to the angle in degrees
# this will apply to ALL shapes
offset = 0.0
}
# for mode = tilt
tilt {
# controls how powerful the tilt is, the lower, the more power
# this value controls at which speed (px/s) the full tilt is reached
# the full tilt being 60° in both directions
limit = 5000
# relationship between speed and tilt, supports these values:
# linear - a linear function is used
# quadratic - a quadratic function is used (most realistic to actual air drag)
# negative_quadratic - negative version of the quadratic one, feels more aggressive
# see `activation` in `src/mode/utils.cpp` for how exactly the calculation is done
function = negative_quadratic
# time window (ms) over which the speed is calculated
# higher values will make slow motions smoother but more delayed
window = 100
}
# for mode = stretch
stretch {
# controls how much the cursor is stretched
# this value controls at which speed (px/s) the full stretch is reached
# the full stretch being twice the original length
limit = 3000
# relationship between speed and stretch amount, supports these values:
# linear - a linear function is used
# quadratic - a quadratic function is used
# negative_quadratic - negative version of the quadratic one, feels more aggressive
# see `activation` in `src/mode/utils.cpp` for how exactly the calculation is done
function = quadratic
# time window (ms) over which the speed is calculated
# higher values will make slow motions smoother but more delayed
window = 100
}
# configure shake to find
# magnifies the cursor if its is being shaken
shake {
# enables shake to find
enabled = true
# use nearest-neighbour (pixelated) scaling when shaking
# may look weird when effects are enabled
nearest = true
# controls how soon a shake is detected
# lower values mean sooner
threshold = 6.0
# magnification level immediately after shake start
base = 4.0
# magnification increase per second when continuing to shake
speed = 4.0
# how much the speed is influenced by the current shake intensitiy
influence = 0.0
# maximal magnification the cursor can reach
# values below 1 disable the limit (e.g. 0)
limit = 0.0
# time in millseconds the cursor will stay magnified after a shake has ended
timeout = 2000
# show cursor behaviour `tilt`, `rotate`, etc. while shaking
effects = false
# enable ipc events for shake
# see the `ipc` section below
ipc = false
}
# use hyprcursor to get a higher resolution texture when the cursor is magnified
# see the `hyprcursor` section below
hyprcursor {
# use nearest-neighbour (pixelated) scaling when magnifing beyond texture size
# this will also have effect without hyprcursor support being enabled
# 0 / false - never use pixelated scaling
# 1 / true - use pixelated when no highres image
# 2 - always use pixleated scaling
nearest = true
# enable dedicated hyprcursor support
enabled = true
# resolution in pixels to load the magnified shapes at
# be warned that loading a very high-resolution image will take a long time and might impact memory consumption
# -1 means we use [normal cursor size] * [shake:base option]
resolution = -1
# shape to use when clientside cursors are being magnified
# see the shape-name property of shape rules for possible names
# specifying clientside will use the actual shape, but will be pixelated
fallback = clientside
}
}
}
+10
View File
@@ -0,0 +1,10 @@
## Configuration file for eos-welcome.
# Note: using bash syntax.
#
# 'Greeter' values: enable or disable.
# 'OnceDaily' values: no or yes; yes means eos-welcome is shown only once a day.
# 'LastCheck' values: automatically filled by eos-welcome.
Greeter=enable
OnceDaily=no
LastCheck=0
+4
View File
@@ -0,0 +1,4 @@
#!/bin/sh
hyprpicker --format hex | head -c -1 | wl-copy
convert -size 100x100 xc:$(wl-paste) /tmp/color.png
notify-send -i /tmp/color.png "Copied to your clipboard!" "$(wl-paste)"
+4
View File
@@ -0,0 +1,4 @@
if [ ! -f "$HOME/.current_wallpaper" ]; then
matugen image -t scheme-fidelity -m dark --source-color-index 0 ~/.config/wallpapers/decline.png --show-colors --verbose --fallback-color "#000000"
cp ~/.config/wallpapers/decline.png ~/.current_wallpaper
fi
+10
View File
@@ -0,0 +1,10 @@
#!/bin/bash
if pgrep -x "hyprsunset" > /dev/null
then
killall -9 hyprsunset
notify-send "🌞 Day Mode Activated" -u "low"
else
hyprsunset -t 3500 &
notify-send "🌙 Night Mode Activated" -u "low"
fi
+115
View File
@@ -0,0 +1,115 @@
#!/bin/bash
if [ $# -eq 0 ]; then
echo "Usage: $0 --title | --arturl | --artist | --length | --album | --source"
exit 1
fi
# Function to get metadata using playerctl
get_metadata() {
key=$1
playerctl metadata --format "{{ $key }}" 2>/dev/null
}
# Check for arguments
# Function to determine the source and return an icon and text
get_source_info() {
trackid=$(get_metadata "mpris:trackid")
if [[ "$trackid" == *"firefox"* ]]; then
echo -e "Firefox 󰈹"
elif [[ "$trackid" == *"spotify"* ]]; then
echo -e "Spotify "
elif [[ "$trackid" == *"chromium"* ]]; then
echo -e "Chrome "
else
echo ""
fi
}
# Parse the argument
case "$1" in
--title)
title=$(get_metadata "xesam:title")
if [ -z "$title" ]; then
echo ""
else
echo "${title:0:28}" # Limit the output to 50 characters
fi
;;
--arturl)
url=$(get_metadata "mpris:artUrl")
if [ -z "$url" ]; then
echo ""
else
if [[ "$url" == file://* ]]; then
url=${url#file://}
elif [[ "$url" == http://* || "$url" == https://* ]]; then
filename=$(basename "$url")
if [[ "$filename" != *.png && "$filename" != *.jpg && "$filename" != *.jpeg ]]; then
filename="${filename}.jpg"
fi
wget -q "$url" -O "/tmp/$filename"
url="/tmp/$filename"
fi
# Make sure local files also have a png/jpg extension if required
if [[ "$url" != *.png && "$url" != *.jpg && "$url" != *.jpeg ]]; then
if [ -f "$url" ]; then
cp "$url" "/tmp/$(basename "$url").jpg"
url="/tmp/$(basename "$url").jpg"
fi
fi
echo "$url"
fi
;;
--artist)
artist=$(get_metadata "xesam:artist")
if [ -z "$artist" ]; then
echo ""
else
echo "${artist:0:30}" # Limit the output to 50 characters
fi
;;
--length)
length=$(get_metadata "mpris:length")
if [ -z "$length" ]; then
echo ""
else
# Convert length from microseconds to a more readable format (seconds)
echo "$(echo "scale=2; $length / 1000000 / 60" | bc) m"
fi
;;
--status)
status=$(playerctl status 2>/dev/null)
if [[ $status == "Playing" ]]; then
echo "󰎆"
elif [[ $status == "Paused" ]]; then
echo "󱑽"
else
echo ""
fi
;;
--album)
album=$(playerctl metadata --format "{{ xesam:album }}" 2>/dev/null)
if [[ -n $album ]]; then
echo "$album"
else
status=$(playerctl status 2>/dev/null)
if [[ -n $status ]]; then
echo "Not album"
else
echo ""
fi
fi
;;
--source)
get_source_info
;;
*)
echo "Invalid option: $1"
echo "Usage: $0 --title | --url | --artist | --length | --album | --source"
exit 1
;;
esac
+8
View File
@@ -0,0 +1,8 @@
#!/bin/bash
sleep 1
killall xdg-desktop-portal-hyprland
killall xdg-desktop-portal-wlr
killall xdg-desktop-portal
/usr/libexec/xdg-desktop-portal-hyprland &
sleep 2
/usr/lib/xdg-desktop-portal &
+11
View File
@@ -0,0 +1,11 @@
#!/bin/sh
# Toggle mirroring HDMI-A-1 to/from eDP-1 on Hyprland
isMirror=$(hyprctl monitors all -j | jq -r '.[] | select(.name=="HDMI-A-1") | .mirrorOf' 2>/dev/null || echo "none")
echo "Current mirror status: $isMirror"
if [ "$isMirror" == "none" ]; then
hyprctl eval 'hl.monitor({ output = "HDMI-A-1", mode = "1920x1080@59.95", position = "1920x0", scale = 1.0, mirror = "eDP-1" })'
else
hyprctl eval 'hl.monitor({ output = "HDMI-A-1", mode = "1920x1080@59.95", position = "1920x0", scale = 1.0, mirror = "none"})'
fi
+7
View File
@@ -0,0 +1,7 @@
#!/bin/bash
set -eu
WALL=$1
echo "setting $WALL as wallpaper"
matugen image -t scheme-fidelity -m dark $WALL --show-colors --verbose --fallback-color "#000000"
echo "set $WALL as wallpaper sucessfuly"
+90
View File
@@ -0,0 +1,90 @@
local inFocusOpacity = "0.95"
local notInFocusOpacity = "0.8"
hl.window_rule({
suppress_event = "maximize",
match = {
class = ".*"
}
})
hl.window_rule({
no_initial_focus = true,
match = {
class = "^$",
title = "^$",
xwayland = 1,
float = 1,
fullscreen = 0,
pin = 0
}
})
hl.window_rule({
opacity = inFocusOpacity .. " " .. notInFocusOpacity,
match = { title = "^.*().*$" }
})
hl.window_rule({
opacity = "0.80",
float = true,
size = { 600, 400 },
match = { class = "^(nwg-displays)$" }
})
hl.window_rule({
opacity = 0.80,
float = true,
size = { 600, 400 },
match = { class = "^(blueman-manager)$" }
})
hl.window_rule({
opacity = 0.80,
float = true,
size = { 600, 400 },
match = { class = "^(org.pulseaudio.pavucontrol)$" }
})
-- xwaylandvideobridge
hl.window_rule({
opacity = "0.0 override",
no_anim = 1,
no_initial_focus = 1,
no_focus = 1,
max_size = { 1, 1 },
no_blur = 1,
match = { class = "^(xwaylandvideobridge)$" }
})
-- Picture in Picture
hl.window_rule({
float = true,
tile = false,
opacity = "1.0",
pin = true,
match = {
title = "(Picture in picture)"
}
})
-- Spotify mini player
hl.window_rule({
float = true,
tile = false,
opacity = "1.0 0.75",
size={419, 56},
move={1482, 1006},
pin = true,
match = {
workspace = "special:music",
class="Chromium-browser",
}
})
+40
View File
@@ -0,0 +1,40 @@
local music_workspace = "music"
local voicechat_workspace = "voice"
local obs_workspace = "obs"
local numkeys = {
{code = "87"}, -- 1
{code = "88"}, -- 2
{code = "89"}, -- 3
{code = "83"}, -- 4
{code = "84"}, -- 5
{code = "85"}, -- 6
{code = "79"}, -- 7
{code = "80"}, -- 8
{code = "81"}, -- 9
{code = "90"} -- 0
}
-- Keybinds that define workspaces
hl.bind(mainMod .. " + code:"..numkeys[7].code, hl.dsp.workspace.toggle_special(music_workspace))
hl.bind(mainMod .. " + code:"..numkeys[8].code, hl.dsp.workspace.toggle_special(voicechat_workspace))
hl.bind(mainMod .. " + code:"..numkeys[9].code, hl.dsp.workspace.toggle_special(obs_workspace))
hl.window_rule({
name = "discord",
match = {class = "^(discord)$"},
workspace = "special:" .. voicechat_workspace
})
hl.window_rule({
name = "spotify",
match = {class = "^(Spotify)$"},
workspace = "special:" .. music_workspace
})
hl.window_rule({
name = "obs",
match = {class = "com.obsproject.Studio"},
workspace = "special:" .. obs_workspace
})