Compare commits
2
Commits
c26621cfb6
...
316a8e0b08
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
316a8e0b08 | ||
|
|
d4d208a647 |
@@ -0,0 +1,395 @@
|
|||||||
|
-- Browser types
|
||||||
|
hl.window_rule({
|
||||||
|
name = "chromium-browser-tags",
|
||||||
|
tag = "+chromium-based-browser",
|
||||||
|
match = {
|
||||||
|
class = "((google-)?[cC]hrom(e|ium)|[bB]rave-browser|[mM]icrosoft-edge|Vivaldi-stable|helium)",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "firefox-tags",
|
||||||
|
tag = "+firefox-based-browser",
|
||||||
|
match = {
|
||||||
|
class = "([fF]irefox|zen|librewolf)",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.window_rule({
|
||||||
|
name = "chromium-browser-opacity-tags",
|
||||||
|
tag = "-default-opacity",
|
||||||
|
match = {
|
||||||
|
tag = "chromium-based-browser",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "firefox-browser-opacity-tags",
|
||||||
|
tag = "-default-opacity",
|
||||||
|
match = {
|
||||||
|
tag = "firefox-based-browser",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Video apps: remove chromium browser tag so they don't get opacity applied
|
||||||
|
hl.window_rule({
|
||||||
|
name = "video-apps-no-browser-tag",
|
||||||
|
tag = "-chromium-based-browser",
|
||||||
|
match = {
|
||||||
|
class = "(chrome-youtube.com__-Default|chrome-app.zoom.us__wc_home-Default)",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "video-apps-no-opacity-tag",
|
||||||
|
tag = "-default-opacity",
|
||||||
|
match = {
|
||||||
|
class = "(chrome-youtube.com__-Default|chrome-app.zoom.us__wc_home-Default)",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Force chromium-based browsers into a tile to deal with --app bug
|
||||||
|
hl.window_rule({
|
||||||
|
name = "chromium-tile",
|
||||||
|
tile = true,
|
||||||
|
match = {
|
||||||
|
tag = "chromium-based-browser",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Only a subtle opacity change, but not for video sites
|
||||||
|
hl.window_rule({
|
||||||
|
name = "chromium-browser-subtle-opacity",
|
||||||
|
opacity = "1.0 0.97",
|
||||||
|
match = {
|
||||||
|
tag = "chromium-based-browser",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "firefox-browser-subtle-opacity",
|
||||||
|
opacity = "1.0 0.97",
|
||||||
|
match = {
|
||||||
|
tag = "firefox-based-browser",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.window_rule({
|
||||||
|
name = "geforce-now",
|
||||||
|
idle_inhibit = "fullscreen",
|
||||||
|
match = {
|
||||||
|
class = "GeForceNOW",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Remove 1px border around hyprshot screenshots
|
||||||
|
hl.layer_rule({
|
||||||
|
name = "no-anim-for-selection",
|
||||||
|
match = { namespace = "selection" },
|
||||||
|
no_anim = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Jetbrains
|
||||||
|
-- Fix splash screen showing in weird places and prevent annoying focus takeovers
|
||||||
|
hl.window_rule({
|
||||||
|
name = "jetbrains-splash",
|
||||||
|
tag = "+jetbrains-splash",
|
||||||
|
center = true,
|
||||||
|
no_focus = true,
|
||||||
|
border_size = 0,
|
||||||
|
match = {
|
||||||
|
class = "^(jetbrains-.*)$",
|
||||||
|
title = "^(splash)$",
|
||||||
|
float = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Center popups/find windows
|
||||||
|
hl.window_rule({
|
||||||
|
name = "jetbrains-popups",
|
||||||
|
center = true,
|
||||||
|
stay_focused = true,
|
||||||
|
border_size = 0,
|
||||||
|
min_size = { "(monitor_w*0.5)", "(monitor_h*0.5)" },
|
||||||
|
tag = "+jetbrains",
|
||||||
|
match = {
|
||||||
|
class = "^(jetbrains-.*)$",
|
||||||
|
title = "^()$",
|
||||||
|
float = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- Disable window flicker when autocomplete or tooltips appear
|
||||||
|
hl.window_rule({
|
||||||
|
name = "jetbrains-tooltip",
|
||||||
|
no_initial_focus = true,
|
||||||
|
match = {
|
||||||
|
class = "^(jetbrains-.*)$",
|
||||||
|
title = "^(win.*)$",
|
||||||
|
float = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- Disable mouse focus
|
||||||
|
hl.window_rule({
|
||||||
|
name = "jetbrains-no-follow-mouse",
|
||||||
|
no_follow_mouse = true,
|
||||||
|
match = {
|
||||||
|
class = "^(jetbrains-.*)$",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- Keep enpass focused
|
||||||
|
hl.window_rule({
|
||||||
|
name = "enpass-assistant",
|
||||||
|
stay_focused = true,
|
||||||
|
center = true,
|
||||||
|
match = {
|
||||||
|
class = "^(Enpass)$",
|
||||||
|
title = "^(Enpass Assistant)$",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- Float LocalSend and fzf file picker
|
||||||
|
hl.window_rule({
|
||||||
|
name = "localsend-float",
|
||||||
|
float = true,
|
||||||
|
center = true,
|
||||||
|
match = {
|
||||||
|
class = "(localsend|Share|fzf-file-picker)",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- Picture-in-picture overlays
|
||||||
|
hl.window_rule({
|
||||||
|
name = "pip-overlay",
|
||||||
|
tag = "+pip",
|
||||||
|
match = {
|
||||||
|
title = "(Picture.?in.?[Pp]icture)",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "pip-overlay",
|
||||||
|
tag = "-default-opacity",
|
||||||
|
float = true,
|
||||||
|
pin = true,
|
||||||
|
size = { 600, 338 },
|
||||||
|
keep_aspect_ratio = true,
|
||||||
|
border_size = 0,
|
||||||
|
opacity = "1 1",
|
||||||
|
match = {
|
||||||
|
tag = "pip",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- Retroarch
|
||||||
|
hl.window_rule({
|
||||||
|
name = "retroarch-fullscreen",
|
||||||
|
fullscreen = true,
|
||||||
|
workspace = 5,
|
||||||
|
tag = "-default-opacity",
|
||||||
|
opacity = "1 1",
|
||||||
|
idle_inhibit = "fullscreen",
|
||||||
|
match = {
|
||||||
|
class = "com.libretro.RetroArch",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- Scratchpad apps
|
||||||
|
hl.window_rule({
|
||||||
|
name = "spotify-scratchpad",
|
||||||
|
workspace = "special:scratchpad",
|
||||||
|
match = {
|
||||||
|
class = "Spotify",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "signal-scratchpad",
|
||||||
|
workspace = "special:scratchpad",
|
||||||
|
match = {
|
||||||
|
class = "signal",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "discord-scratchpad",
|
||||||
|
workspace = "special:scratchpad",
|
||||||
|
match = {
|
||||||
|
class = "^(chrome-discord.com__channels_@me-Default)$",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- Float Nextcloud
|
||||||
|
hl.window_rule({
|
||||||
|
name = "nextcloud-float",
|
||||||
|
float = true,
|
||||||
|
match = {
|
||||||
|
class = "com.nextcloud.desktopclient.nextcloud",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- Position drawing
|
||||||
|
hl.window_rule({
|
||||||
|
name = "krita-drawing",
|
||||||
|
workspace = 5,
|
||||||
|
tag = "-default-opacity",
|
||||||
|
opacity = "1 1",
|
||||||
|
match = {
|
||||||
|
class = "(krita)",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- Position TV
|
||||||
|
hl.window_rule({
|
||||||
|
name = "tv-apps",
|
||||||
|
workspace = 7,
|
||||||
|
match = {
|
||||||
|
class = "(chrome-youtube.com__-Default|chrome-netflix.com__-Default)",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- Float Steam
|
||||||
|
hl.window_rule({
|
||||||
|
name = "steam-float",
|
||||||
|
float = true,
|
||||||
|
workspace = 7,
|
||||||
|
idle_inhibit = "fullscreen",
|
||||||
|
match = {
|
||||||
|
class = "steam",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "steam-app-size",
|
||||||
|
center = true,
|
||||||
|
size = { 1100, 700 },
|
||||||
|
match = {
|
||||||
|
class = "steam",
|
||||||
|
title = "Steam",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "steam-opacity",
|
||||||
|
tag = "-default-opacity",
|
||||||
|
opacity = "1 1",
|
||||||
|
match = {
|
||||||
|
class = "steam.*",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "steam-friends-size",
|
||||||
|
size = { 460, 800 },
|
||||||
|
match = {
|
||||||
|
class = "steam",
|
||||||
|
title = "Friends List",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- Float Lunar Client
|
||||||
|
hl.window_rule({
|
||||||
|
name = "lunar-client-float",
|
||||||
|
float = true,
|
||||||
|
workspace = 7,
|
||||||
|
center = true,
|
||||||
|
size = { 1100, 700 },
|
||||||
|
tag = "-default-opacity",
|
||||||
|
opacity = "1 1",
|
||||||
|
idle_inhibit = "fullscreen",
|
||||||
|
match = {
|
||||||
|
class = "lunarclient",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- Floating windows
|
||||||
|
hl.window_rule({
|
||||||
|
name = "floating-window-tags",
|
||||||
|
tag = "+floating-window",
|
||||||
|
match = {
|
||||||
|
class = "(org.station.bluetui|org.station.impala|org.station.wiremix|org.station.btop|org.station.terminal|org.station.bash|org.gnome.NautilusPreviewer|org.gnome.Evince|com.gabm.satty|Station|About|TUI.float|imv|mpv)",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "floating-dialog-tags",
|
||||||
|
tag = "+floating-window",
|
||||||
|
match = {
|
||||||
|
class = "(xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus)",
|
||||||
|
title = "^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*)",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "floating-window-tags",
|
||||||
|
tag = "+floating-window",
|
||||||
|
float = true,
|
||||||
|
center = true,
|
||||||
|
size = { 875, 600 },
|
||||||
|
match = {
|
||||||
|
tag = "floating-window",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- Calculator float
|
||||||
|
hl.window_rule({
|
||||||
|
name = "calculator-float",
|
||||||
|
float = true,
|
||||||
|
match = {
|
||||||
|
class = "org.gnome.Calculator",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- Fullscreen screensaver
|
||||||
|
hl.window_rule({
|
||||||
|
name = "screensaver-fullscreen",
|
||||||
|
fullscreen = true,
|
||||||
|
float = true,
|
||||||
|
animation = "slide",
|
||||||
|
match = {
|
||||||
|
class = "org.station.screensaver",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- No transparency on media windows
|
||||||
|
hl.window_rule({
|
||||||
|
name = "media-no-opacity",
|
||||||
|
tag = "-default-opacity",
|
||||||
|
opacity = "1 1",
|
||||||
|
match = {
|
||||||
|
class = "^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- Popped window rounding
|
||||||
|
hl.window_rule({
|
||||||
|
name = "popped-window-rounding",
|
||||||
|
rounding = 8,
|
||||||
|
match = {
|
||||||
|
tag = "pop",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- Prevent idle while open
|
||||||
|
hl.window_rule({
|
||||||
|
name = "idle-inhibit-apps",
|
||||||
|
idle_inhibit = "always",
|
||||||
|
match = {
|
||||||
|
tag = "noidle",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- Prevent Telegram from stealing focus on new messages
|
||||||
|
hl.window_rule({
|
||||||
|
name = "telegram-no-focus-steal",
|
||||||
|
focus_on_activate = false,
|
||||||
|
match = {
|
||||||
|
class = "org.telegram.desktop",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- Define terminal tag to style them uniformly
|
||||||
|
hl.window_rule({
|
||||||
|
name = "terminal-tags",
|
||||||
|
tag = "+terminal",
|
||||||
|
match = {
|
||||||
|
class = "(Alacritty|kitty|com.mitchellh.ghostty)",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "terminal-opacity-tags",
|
||||||
|
tag = "-default-opacity",
|
||||||
|
opacity = "0.97 0.9",
|
||||||
|
match = {
|
||||||
|
tag = "terminal",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
-- Application-specific animation
|
||||||
|
hl.layer_rule({
|
||||||
|
name = "walker-no-anim",
|
||||||
|
no_anim = true,
|
||||||
|
match = { namespace = "walker" },
|
||||||
|
})
|
||||||
|
-- Webcam overlay for screen recording
|
||||||
|
hl.window_rule({
|
||||||
|
name = "webcam-overlay",
|
||||||
|
float = true,
|
||||||
|
pin = true,
|
||||||
|
no_initial_focus = true,
|
||||||
|
no_dim = true,
|
||||||
|
size = { 320, 180 },
|
||||||
|
position = { "(monitor_w-360)", "(monitor_h-220)" },
|
||||||
|
match = {
|
||||||
|
title = "WebcamOverlay",
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -141,6 +141,10 @@ hl.bind("SUPER + H", hl.dsp.focus({ direction = "left" }), { description = "Move
|
|||||||
hl.bind("SUPER + L", hl.dsp.focus({ description = "right" }), { description = "Move window focus right" })
|
hl.bind("SUPER + L", hl.dsp.focus({ description = "right" }), { description = "Move window focus right" })
|
||||||
hl.bind("SUPER + K", hl.dsp.focus({ direction = "up" }), { description = "Move window focus up" })
|
hl.bind("SUPER + K", hl.dsp.focus({ direction = "up" }), { description = "Move window focus up" })
|
||||||
hl.bind("SUPER + J", hl.dsp.focus({ direction = "down" }), { description = "Move window focus down" })
|
hl.bind("SUPER + J", hl.dsp.focus({ direction = "down" }), { description = "Move window focus down" })
|
||||||
|
hl.bind("SUPER + SHIFT + H", hl.dsp.window.move({ direction = "left" }), { description = "Move window left" })
|
||||||
|
hl.bind("SUPER + SHIFT + L", hl.dsp.window.move({ direction = "right" }), { description = "Move window right" })
|
||||||
|
hl.bind("SUPER + SHIFT + K", hl.dsp.window.move({ direction = "up" }), { description = "Move window up" })
|
||||||
|
hl.bind("SUPER + SHIFT + J", hl.dsp.window.move({ direction = "down" }), { description = "Move window down" })
|
||||||
|
|
||||||
-- Control scratchpad
|
-- Control scratchpad
|
||||||
hl.bind("SUPER + S", hl.dsp.workspace.toggle_special("scratchpad"), { description = "Toggle scratchpad" })
|
hl.bind("SUPER + S", hl.dsp.workspace.toggle_special("scratchpad"), { description = "Toggle scratchpad" })
|
||||||
@@ -329,7 +333,6 @@ hl.bind(
|
|||||||
hl.bind("SUPER + SHIFT + SLASH", hl.dsp.exec_cmd("Enpass showassistant"), { description = "Passwords" })
|
hl.bind("SUPER + SHIFT + SLASH", hl.dsp.exec_cmd("Enpass showassistant"), { description = "Passwords" })
|
||||||
hl.bind("SUPER + SHIFT + E", hl.dsp.exec_cmd("station-launch-or-focus mailspring"), { description = "Email" })
|
hl.bind("SUPER + SHIFT + E", hl.dsp.exec_cmd("station-launch-or-focus mailspring"), { description = "Email" })
|
||||||
|
|
||||||
-- If your web app url contains #, type it as ## to prevent hyprland treating it as a comment
|
|
||||||
hl.bind(
|
hl.bind(
|
||||||
"SUPER + SHIFT + A",
|
"SUPER + SHIFT + A",
|
||||||
hl.dsp.exec_cmd('station-launch-webapp "https://gemini.google.com/app"'),
|
hl.dsp.exec_cmd('station-launch-webapp "https://gemini.google.com/app"'),
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
-- Cursor size
|
||||||
|
hl.env("XCURSOR_SIZE", "24")
|
||||||
|
hl.env("HYPRCURSOR_SIZE", "24")
|
||||||
|
|
||||||
|
-- Force all apps to use Wayland
|
||||||
|
hl.env("GDK_BACKEND", "wayland,x11,*")
|
||||||
|
hl.env("QT_QPA_PLATFORM", "wayland;xcb")
|
||||||
|
hl.env("QT_STYLE_OVERRIDE", "kvantum")
|
||||||
|
hl.env("SDL_VIDEODRIVER", "wayland,x11")
|
||||||
|
hl.env("MOZ_ENABLE_WAYLAND", "1")
|
||||||
|
hl.env("ELECTRON_OZONE_PLATFORM_HINT", "wayland")
|
||||||
|
hl.env("OZONE_PLATFORM", "wayland")
|
||||||
|
hl.env("XDG_SESSION_TYPE", "wayland")
|
||||||
|
|
||||||
|
-- Allow better support for screen sharing (Google Meet, Discord, etc)
|
||||||
|
hl.env("XDG_CURRENT_DESKTOP", "Hyprland")
|
||||||
|
hl.env("XDG_SESSION_DESKTOP", "Hyprland")
|
||||||
|
|
||||||
|
hl.config({
|
||||||
|
xwayland = {
|
||||||
|
force_zero_scaling = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Use XCompose file
|
||||||
|
hl.env("XCOMPOSEFILE", "~/.config/xcompose")
|
||||||
|
|
||||||
|
-- Don't show update on first launch
|
||||||
|
hl.config({
|
||||||
|
ecosystem = {
|
||||||
|
no_update_news = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
require("autostart")
|
require("autostart")
|
||||||
require("bindings")
|
require("bindings")
|
||||||
-- require("envs")
|
require("envs")
|
||||||
-- require("looknfeel")
|
require("looknfeel")
|
||||||
-- require("input")
|
require("input")
|
||||||
-- require("windows")
|
require("windows")
|
||||||
-- require("monitors")
|
require("monitors")
|
||||||
-- require("workspaces")
|
require("workspaces")
|
||||||
|
|||||||
@@ -0,0 +1,88 @@
|
|||||||
|
-- https://wiki.hyprland.org/Configuring/Variables/#input
|
||||||
|
hl.config({
|
||||||
|
input = {
|
||||||
|
-- Use multiple keyboard layouts and switch between them with Left Alt + Right Alt
|
||||||
|
kb_layout = "gb,ro",
|
||||||
|
-- Use a specific keyboard variant if needed (e.g. intl for international keyboards)
|
||||||
|
-- kb_variant = "intl",
|
||||||
|
-- kb_model =
|
||||||
|
kb_options = "compose:caps",
|
||||||
|
-- kb_rules =
|
||||||
|
|
||||||
|
-- Change speed of keyboard repeat
|
||||||
|
repeat_rate = 40,
|
||||||
|
repeat_delay = 600,
|
||||||
|
|
||||||
|
-- Start with numlock on by default
|
||||||
|
numlock_by_default = true,
|
||||||
|
|
||||||
|
follow_mouse = 1,
|
||||||
|
|
||||||
|
-- Increase sensitivity for mouse/trackpad (default: 0)
|
||||||
|
sensitivity = 0, -- -1.0 - 1.0, 0 means no modification.
|
||||||
|
|
||||||
|
-- Turn off mouse acceleration (default: false)
|
||||||
|
-- force_no_accel = true,
|
||||||
|
|
||||||
|
-- Use natural (inverse) scrolling
|
||||||
|
-- natural_scroll = true,
|
||||||
|
|
||||||
|
-- Use two-finger clicks for right-click instead of lower-right corner
|
||||||
|
-- clickfinger_behavior = true,
|
||||||
|
|
||||||
|
-- Control the speed of your scrolling
|
||||||
|
scroll_factor = 0.4,
|
||||||
|
|
||||||
|
-- Enable the touchpad while typing
|
||||||
|
-- disable_while_typing = false,
|
||||||
|
|
||||||
|
-- Left-click-and-drag with three fingers
|
||||||
|
-- drag_3fg = 1,
|
||||||
|
|
||||||
|
touchpad = {
|
||||||
|
-- Use natural (inverse) scrolling
|
||||||
|
natural_scroll = false,
|
||||||
|
|
||||||
|
-- Use two-finger clicks for right-click instead of lower-right corner
|
||||||
|
-- clickfinger_behavior = true,
|
||||||
|
|
||||||
|
-- Control the speed of your scrolling
|
||||||
|
scroll_factor = 0.4,
|
||||||
|
|
||||||
|
-- Enable the touchpad while typing
|
||||||
|
-- disable_while_typing = false,
|
||||||
|
|
||||||
|
-- Left-click-and-drag with three fingers
|
||||||
|
-- drag_3fg = 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
misc = {
|
||||||
|
key_press_enables_dpms = true, -- key press will trigger wake
|
||||||
|
mouse_move_enables_dpms = true, -- mouse move will trigger wake
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Scroll nicely in the terminal
|
||||||
|
hl.window_rule({
|
||||||
|
name = "Scroll nicely in the terminal",
|
||||||
|
match = {
|
||||||
|
class = "(Alacritty|kitty)",
|
||||||
|
},
|
||||||
|
scroll_touchpad = 1.5,
|
||||||
|
})
|
||||||
|
hl.window_rule({
|
||||||
|
name = "Scroll nicely in the terminal",
|
||||||
|
match = {
|
||||||
|
class = "com.mitchellh.ghostty",
|
||||||
|
},
|
||||||
|
scroll_touchpad = 0.2,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Enable touchpad gestures for changing workspaces
|
||||||
|
-- See https://wiki.hyprland.org/Configuring/Gestures/
|
||||||
|
-- hl.gesture({
|
||||||
|
-- fingers = 3,
|
||||||
|
-- direction = "horizontal",
|
||||||
|
-- action = "workspace",
|
||||||
|
-- })
|
||||||
@@ -0,0 +1,169 @@
|
|||||||
|
-- Variables
|
||||||
|
|
||||||
|
local colors = dofile(os.getenv("HOME") .. "/.cache/wal/colors.lua")
|
||||||
|
|
||||||
|
local activeBorderColor = colors.color14
|
||||||
|
local inactiveBorderColor = colors.background
|
||||||
|
|
||||||
|
hl.config({
|
||||||
|
-- https://wiki.hyprland.org/Configuring/Variables/#general
|
||||||
|
general = {
|
||||||
|
gaps_in = 5,
|
||||||
|
gaps_out = 10,
|
||||||
|
|
||||||
|
border_size = 2,
|
||||||
|
|
||||||
|
-- https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
||||||
|
col = {
|
||||||
|
active_border = activeBorderColor,
|
||||||
|
inactive_border = inactiveBorderColor,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||||
|
resize_on_border = false,
|
||||||
|
|
||||||
|
-- Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||||
|
allow_tearing = false,
|
||||||
|
|
||||||
|
-- layout = scrolling, # Change to niri-like side-scrolling layout
|
||||||
|
layout = dwindle,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- https://wiki.hyprland.org/Configuring/Variables/#decoration
|
||||||
|
decoration = {
|
||||||
|
-- rounding = 8 # Use round window corners
|
||||||
|
rounding = 0,
|
||||||
|
|
||||||
|
-- Dim unfocused windows (0.0 = no dim, 1.0 = fully dimmed)
|
||||||
|
-- dim_inactive = true,
|
||||||
|
-- dim_strength = 0.15,
|
||||||
|
|
||||||
|
shadow = {
|
||||||
|
enabled = true,
|
||||||
|
range = 2,
|
||||||
|
render_power = 3,
|
||||||
|
color = "rgba(1a1a1aee)",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- https://wiki.hyprland.org/Configuring/Variables/#blur
|
||||||
|
blur = {
|
||||||
|
enabled = true,
|
||||||
|
size = 2,
|
||||||
|
passes = 2,
|
||||||
|
special = true,
|
||||||
|
brightness = 0.60,
|
||||||
|
contrast = 0.75,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- https://wiki.hypr.land/Configuring/Variables/#group
|
||||||
|
group = {
|
||||||
|
col = {
|
||||||
|
border_active = activeBorderColor,
|
||||||
|
border_inactive = inactiveBorderColor,
|
||||||
|
-- border_locked_active = -1,
|
||||||
|
-- border_locked_inactive = -1,
|
||||||
|
},
|
||||||
|
|
||||||
|
groupbar = {
|
||||||
|
font_size = 12,
|
||||||
|
font_family = "monospace",
|
||||||
|
font_weight_active = "ultraheavy",
|
||||||
|
font_weight_inactive = "normal",
|
||||||
|
|
||||||
|
indicator_height = 0,
|
||||||
|
indicator_gap = 5,
|
||||||
|
height = 22,
|
||||||
|
gaps_in = 5,
|
||||||
|
gaps_out = 0,
|
||||||
|
|
||||||
|
text_color = "rgb(ffffff)",
|
||||||
|
text_color_inactive = "rgba(ffffff90)",
|
||||||
|
col = {
|
||||||
|
active = "rgba(00000040)",
|
||||||
|
inactive = "rgba(00000020)",
|
||||||
|
},
|
||||||
|
|
||||||
|
gradients = true,
|
||||||
|
gradient_rounding = 0,
|
||||||
|
gradient_round_only_edges = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- https://wiki.hyprland.org/Configuring/Variables/#animations
|
||||||
|
animations = {
|
||||||
|
-- enabled = no # Disable all animations
|
||||||
|
enabled = true,
|
||||||
|
},
|
||||||
|
-- See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||||
|
dwindle = {
|
||||||
|
-- pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||||
|
preserve_split = true, -- You probably want this
|
||||||
|
force_split = 2, -- Always split on the right
|
||||||
|
},
|
||||||
|
|
||||||
|
-- See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||||
|
master = {
|
||||||
|
new_status = "master",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||||
|
misc = {
|
||||||
|
disable_hyprland_logo = true,
|
||||||
|
disable_splash_rendering = true,
|
||||||
|
focus_on_activate = true,
|
||||||
|
anr_missed_pings = 3,
|
||||||
|
on_focus_under_fullscreen = 1,
|
||||||
|
disable_watchdog_warning = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- https://wiki.hypr.land/Configuring/Variables/#cursor
|
||||||
|
cursor = {
|
||||||
|
hide_on_key_press = true,
|
||||||
|
warp_on_change_workspace = 1,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Auto toggle scratchpad on switching workspace from scratchpad
|
||||||
|
binds = {
|
||||||
|
hide_special_on_workspace_change = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- https://wiki.hypr.land/Configuring/Variables/#layout
|
||||||
|
layout = {
|
||||||
|
-- Avoid overly wide single-window layouts on wide screens
|
||||||
|
-- single_window_aspect_ratio = 1 1,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Default curves and animations, see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Animations/
|
||||||
|
hl.curve("easeOutQuint", { type = "bezier", points = { { 0.23, 1 }, { 0.32, 1 } } })
|
||||||
|
hl.curve("easeInOutCubic", { type = "bezier", points = { { 0.65, 0.05 }, { 0.36, 1 } } })
|
||||||
|
hl.curve("linear", { type = "bezier", points = { { 0, 0 }, { 1, 1 } } })
|
||||||
|
hl.curve("almostLinear", { type = "bezier", points = { { 0.5, 0.5 }, { 0.75, 1 } } })
|
||||||
|
hl.curve("quick", { type = "bezier", points = { { 0.15, 0 }, { 0.1, 1 } } })
|
||||||
|
|
||||||
|
-- Default springs
|
||||||
|
hl.curve("easy", { type = "spring", mass = 1, stiffness = 71.2633, dampening = 15.8273644 })
|
||||||
|
|
||||||
|
hl.animation({ leaf = "global", enabled = true, speed = 10, bezier = "default" })
|
||||||
|
hl.animation({ leaf = "border", enabled = true, speed = 5.39, bezier = "easeOutQuint" })
|
||||||
|
hl.animation({ leaf = "windows", enabled = true, speed = 4.79, spring = "easy" })
|
||||||
|
hl.animation({ leaf = "windowsIn", enabled = true, speed = 4.1, spring = "easy", style = "popin 87%" })
|
||||||
|
hl.animation({ leaf = "windowsOut", enabled = true, speed = 1.49, bezier = "linear", style = "popin 87%" })
|
||||||
|
hl.animation({ leaf = "fadeIn", enabled = true, speed = 1.73, bezier = "almostLinear" })
|
||||||
|
hl.animation({ leaf = "fadeOut", enabled = true, speed = 1.46, bezier = "almostLinear" })
|
||||||
|
hl.animation({ leaf = "fade", enabled = true, speed = 3.03, bezier = "quick" })
|
||||||
|
hl.animation({ leaf = "layers", enabled = true, speed = 3.81, bezier = "easeOutQuint" })
|
||||||
|
hl.animation({ leaf = "layersIn", enabled = true, speed = 4, bezier = "easeOutQuint", style = "fade" })
|
||||||
|
hl.animation({ leaf = "layersOut", enabled = true, speed = 1.5, bezier = "linear", style = "fade" })
|
||||||
|
hl.animation({ leaf = "fadeLayersIn", enabled = true, speed = 1.79, bezier = "almostLinear" })
|
||||||
|
hl.animation({ leaf = "fadeLayersOut", enabled = true, speed = 1.39, bezier = "almostLinear" })
|
||||||
|
hl.animation({ leaf = "workspaces", enabled = true, speed = 1.94, bezier = "almostLinear", style = "fade" })
|
||||||
|
hl.animation({ leaf = "workspacesIn", enabled = true, speed = 1.21, bezier = "almostLinear", style = "fade" })
|
||||||
|
hl.animation({ leaf = "workspacesOut", enabled = true, speed = 1.94, bezier = "almostLinear", style = "fade" })
|
||||||
|
hl.animation({ leaf = "zoomFactor", enabled = true, speed = 7, bezier = "quick" })
|
||||||
|
|
||||||
|
-- Style Gum confirm to match terminal theme
|
||||||
|
hl.env("GUM_CONFIRM_PROMPT_FOREGROUND", "6") -- Cyan
|
||||||
|
hl.env("GUM_CONFIRM_SELECTED_FOREGROUND", "0") -- Black
|
||||||
|
hl.env("GUM_CONFIRM_SELECTED_BACKGROUND", "2") -- Green
|
||||||
|
hl.env("GUM_CONFIRM_UNSELECTED_FOREGROUND", "7") -- White
|
||||||
|
hl.env("GUM_CONFIRM_UNSELECTED_BACKGROUND", "8") -- Dark grey
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
-- See https://wiki.hyprland.org/Configuring/Monitors/
|
||||||
|
-- List current monitors and resolutions possible: hyprctl monitors
|
||||||
|
-- Format: monitor = [port], resolution, position, scale
|
||||||
|
|
||||||
|
-- Optimized for retina-class 2x displays, like 13" 2.8K, 27" 5K, 32" 6K.
|
||||||
|
-- hl.monitor({
|
||||||
|
-- output = "eDP-1",
|
||||||
|
-- mode = "3840x2160",
|
||||||
|
-- position = "0x0",
|
||||||
|
-- scale = 2,
|
||||||
|
-- })
|
||||||
|
hl.monitor({
|
||||||
|
output = "desc:Samsung Electric Company LU28R55 HNMN500475",
|
||||||
|
mode = "3840x2160",
|
||||||
|
position = "auto-left",
|
||||||
|
scale = 1.5,
|
||||||
|
})
|
||||||
|
hl.monitor({
|
||||||
|
output = "desc:Samsung Electric Company LU28R55 HNMN500462",
|
||||||
|
mode = "3840x2160",
|
||||||
|
position = "auto-right",
|
||||||
|
scale = 1.5,
|
||||||
|
})
|
||||||
|
-- hl.monitor({
|
||||||
|
-- output = "HDMI-A-1",
|
||||||
|
-- mode = "preferred",
|
||||||
|
-- position = "auto",
|
||||||
|
-- scale = "auto",
|
||||||
|
-- })
|
||||||
|
|
||||||
|
-- Good compromise for 27" or 32" 4K monitors (but fractional!)
|
||||||
|
-- hl.env("GDK_SCALE", 1.75)
|
||||||
|
-- hl.monitor({
|
||||||
|
-- mode = "preferred",
|
||||||
|
-- position = "auto",
|
||||||
|
-- scale = 1.6,
|
||||||
|
-- })
|
||||||
|
|
||||||
|
-- Straight 1x setup for low-resolution displays like 1080p or 1440p
|
||||||
|
-- Or for ultrawide monitors like 34" 3440x1440 or 49" 5120x1440
|
||||||
|
-- hl.env("GDK_SCALE", 1)
|
||||||
|
-- hl.monitor({
|
||||||
|
-- mode = "preferred",
|
||||||
|
-- position = "auto",
|
||||||
|
-- scale = 1,
|
||||||
|
-- })
|
||||||
|
|
||||||
|
-- Portrait/rotated secondary monitor (transform: 1 = 90°, 3 = 270°)
|
||||||
|
-- hl.monitor({
|
||||||
|
-- output = "DP-2",
|
||||||
|
-- mode = "preferred",
|
||||||
|
-- position = "auto",
|
||||||
|
-- scale = 1,
|
||||||
|
-- transform = 1,
|
||||||
|
-- })
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
-- See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||||
|
-- Hyprland 0.53+ syntax
|
||||||
|
hl.window_rule({
|
||||||
|
name = "suppress-maximise-events",
|
||||||
|
match = { class = ".*" },
|
||||||
|
supress_event = "maximize",
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Tag all windows for default opacity (apps can override with -default-opacity tag)
|
||||||
|
hl.window_rule({
|
||||||
|
name = "default-opacity",
|
||||||
|
tag = "+default-opacity",
|
||||||
|
match = { class = ".*" },
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Fix some dragging issues with XWayland
|
||||||
|
hl.window_rule({
|
||||||
|
name = "xwayland-dragging",
|
||||||
|
match = {
|
||||||
|
class = "^$",
|
||||||
|
title = "^$",
|
||||||
|
xwayland = true,
|
||||||
|
float = true,
|
||||||
|
fullscreen = false,
|
||||||
|
pin = false,
|
||||||
|
},
|
||||||
|
no_focus = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- App-specific tweaks (may remove default-opacity tag)
|
||||||
|
require("apps")
|
||||||
|
|
||||||
|
-- Apply default opacity after apps have had a chance to opt out
|
||||||
|
hl.window_rule({
|
||||||
|
name = "apply-opacity",
|
||||||
|
match = { tag = "default-opacity" },
|
||||||
|
opacity = "0.97, 0.9",
|
||||||
|
})
|
||||||
@@ -0,0 +1,78 @@
|
|||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 1,
|
||||||
|
monitor = "DP-1",
|
||||||
|
})
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 2,
|
||||||
|
monitor = "DP-2",
|
||||||
|
})
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 3,
|
||||||
|
monitor = "DP-1",
|
||||||
|
})
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 4,
|
||||||
|
monitor = "DP-2",
|
||||||
|
})
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 5,
|
||||||
|
monitor = "DP-1",
|
||||||
|
})
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 6,
|
||||||
|
monitor = "DP-2",
|
||||||
|
})
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 7,
|
||||||
|
monitor = "DP-1",
|
||||||
|
})
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 8,
|
||||||
|
monitor = "DP-2",
|
||||||
|
})
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 9,
|
||||||
|
monitor = "DP-1",
|
||||||
|
})
|
||||||
|
hl.workspace_rule({
|
||||||
|
workspace = 10,
|
||||||
|
monitor = "DP-2",
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.bind("SUPER + code:10", hl.dsp.focus({ workspace = 2 }), { description = "Switch to Home" })
|
||||||
|
hl.bind("SUPER + code:10", hl.dsp.focus({ workspace = 1 }), { description = "Switch to Home" })
|
||||||
|
hl.bind("SUPER + code:11", hl.dsp.focus({ workspace = 4 }), { description = "Switch to Dev" })
|
||||||
|
hl.bind("SUPER + code:11", hl.dsp.focus({ workspace = 3 }), { description = "Switch to Dev" })
|
||||||
|
hl.bind("SUPER + code:12", hl.dsp.focus({ workspace = 6 }), { description = "Switch to Art" })
|
||||||
|
hl.bind("SUPER + code:12", hl.dsp.focus({ workspace = 5 }), { description = "Switch to Art" })
|
||||||
|
hl.bind("SUPER + code:13", hl.dsp.focus({ workspace = 8 }), { description = "Switch to Gaming" })
|
||||||
|
hl.bind("SUPER + code:13", hl.dsp.focus({ workspace = 7 }), { description = "Switch to Gaming" })
|
||||||
|
hl.bind("SUPER + code:14", hl.dsp.focus({ workspace = 10 }), { description = "Switch to Writing" })
|
||||||
|
hl.bind("SUPER + code:14", hl.dsp.focus({ workspace = 9 }), { description = "Switch to Writing" })
|
||||||
|
|
||||||
|
-- Move active window to a workspace with SUPER + SHIFT + [1-9; 0]
|
||||||
|
hl.bind(
|
||||||
|
"SUPER + SHIFT + code:10",
|
||||||
|
hl.dsp.window.move({ workspace = 1 }),
|
||||||
|
{ description = "Move window to workspace 1" }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
"SUPER + SHIFT + code:11",
|
||||||
|
hl.dsp.window.move({ workspace = 2 }),
|
||||||
|
{ description = "Move window to workspace 2" }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
"SUPER + SHIFT + code:12",
|
||||||
|
hl.dsp.window.move({ workspace = 3 }),
|
||||||
|
{ description = "Move window to workspace 3" }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
"SUPER + SHIFT + code:13",
|
||||||
|
hl.dsp.window.move({ workspace = 4 }),
|
||||||
|
{ description = "Move window to workspace 4" }
|
||||||
|
)
|
||||||
|
hl.bind(
|
||||||
|
"SUPER + SHIFT + code:14",
|
||||||
|
hl.dsp.window.move({ workspace = 5 }),
|
||||||
|
{ description = "Move window to workspace 5" }
|
||||||
|
)
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
-- ~/.config/wal/templates/colors.lua
|
||||||
|
return {
|
||||||
|
wallpaper = "rgb({wallpaper.strip})",
|
||||||
|
background = "rgb({background.strip})",
|
||||||
|
foreground = "rgb({foreground.strip})",
|
||||||
|
cursor = "rgb({cursor.strip})",
|
||||||
|
|
||||||
|
color0 = "rgb({color0.strip})",
|
||||||
|
color1 = "rgb({color1.strip})",
|
||||||
|
color2 = "rgb({color2.strip})",
|
||||||
|
color3 = "rgb({color3.strip})",
|
||||||
|
color4 = "rgb({color4.strip})",
|
||||||
|
color5 = "rgb({color5.strip})",
|
||||||
|
color6 = "rgb({color6.strip})",
|
||||||
|
color7 = "rgb({color7.strip})",
|
||||||
|
color8 = "rgb({color8.strip})",
|
||||||
|
color9 = "rgb({color9.strip})",
|
||||||
|
color10 = "rgb({color10.strip})",
|
||||||
|
color11 = "rgb({color11.strip})",
|
||||||
|
color12 = "rgb({color12.strip})",
|
||||||
|
color13 = "rgb({color13.strip})",
|
||||||
|
color14 = "rgb({color14.strip})",
|
||||||
|
color15 = "rgb({color15.strip})",
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user