From 1c8fae28972916f78e34657324389eb8cfabc637 Mon Sep 17 00:00:00 2001 From: bullshar-k <273740932+bullshar-k@users.noreply.github.com> Date: Fri, 16 Oct 2026 01:03:03 -0400 Subject: [PATCH] create waybar and hyprland config for desktop switch from KDE --- desktop/hyprland.lua | 341 +++++++++++++++++++++++++ desktop/waybar/config.jsonc | 173 +++++++++++++ desktop/waybar/style.css | 265 +++++++++++++++++++ laptop/hyprland.lua | 2 +- {waybar => laptop/waybar}/config.jsonc | 0 {waybar => laptop/waybar}/style.css | 0 6 files changed, 780 insertions(+), 1 deletion(-) create mode 100644 desktop/hyprland.lua create mode 100644 desktop/waybar/config.jsonc create mode 100755 desktop/waybar/style.css rename {waybar => laptop/waybar}/config.jsonc (100%) rename {waybar => laptop/waybar}/style.css (100%) diff --git a/desktop/hyprland.lua b/desktop/hyprland.lua new file mode 100644 index 0000000..7340667 --- /dev/null +++ b/desktop/hyprland.lua @@ -0,0 +1,341 @@ +------------------ +---- MONITORS ---- +------------------ +-- Fallback for any monitor not matched below (e.g. a hotplugged screen). +hl.monitor({ + output = "", + mode = "preferred", + position = "auto", + scale = "auto", +}) + +-- Samsung Odyssey G61SH primary +hl.monitor({ + output = "DP-2", + mode = "2560x1440@240", + position = "0x363", + scale = 1, +}) + +-- MSI G274QPX — secondary, portrait rotated 90 right +hl.monitor({ + output = "DP-1", + mode = "2560x1440@120", + position = "2560x0", + scale = 1, + transform = 1, +}) + + +--------------------- +---- MY PROGRAMS ---- +--------------------- +local terminal = "kitty" +local fileManager = "dolphin" +local menu = "fuzzel" +local browser = "librewolf" +local waybarCmd = "waybar" + + +------------------- +---- AUTOSTART ---- +------------------- +hl.on("hyprland.start", function () + -- status bar + hl.exec_cmd(waybarCmd) + + -- wallpaper + hl.exec_cmd("swaybg -i /home/shark/pictures/wall/wall.png -m fill") + + -- clipboard history (wl-cliphist) + hl.exec_cmd("wl-paste --type text --watch cliphist store") + hl.exec_cmd("wl-paste --type image --watch cliphist store") + + -- notifications (waybar's custom/notifications module talks to mako) + hl.exec_cmd("command -v mako >/dev/null 2>&1 && mako") + + -- polkit agent — needed for GUI auth prompts (KDE handled this before). + -- Uncomment after installing an agent, e.g. hyprpolkitagent or polkit-gnome: + -- hl.exec_cmd("/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1") +end) + + +------------------------------- +---- ENVIRONMENT VARIABLES ---- +------------------------------- + + +hl.env("XCURSOR_SIZE", "24") +hl.env("HYPRCURSOR_SIZE", "24") + +hl.env("LIBVA_DRIVER_NAME", "nvidia") -- hardware video decode +hl.env("__GLX_VENDOR_LIBRARY_NAME", "nvidia") -- use the NVIDIA driver for GLX apps +-- hl.env("NVD_BACKEND", "direct") -- explicit sync / direct scanout incase of flicker +-- hl.env("AQ_DRM_DEVICES", "/dev/dri/card1:/dev/dri/card0") -- if Hyprland grabs the AMD iGPU instead + + +----------------------- +----- PERMISSIONS ----- +----------------------- + +----------------------- +---- LOOK AND FEEL ---- +----------------------- +hl.config({ + general = { + gaps_in = 5, + gaps_out = 12, + + border_size = 2, + + col = { + active_border = { colors = {"rgba(33ccffee)", "rgba(00ff99ee)"}, angle = 45 }, + inactive_border = "rgba(595959aa)", + }, + + -- Set to true to enable resizing windows by clicking and dragging on borders and gaps + resize_on_border = false, + + -- Please see https://wiki.hypr.land/Configuring/Advanced-and-Cool/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.0, + inactive_opacity = 1.0, + + shadow = { + enabled = true, + range = 4, + render_power = 3, + color = 0xee1a1a1a, + }, + + blur = { + enabled = true, + size = 3, + passes = 1, + vibrancy = 0.1696, + }, + }, + + animations = { + enabled = true, + }, +}) + +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 = 238.1191, dampening = 24.21279333 }) + +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" }) + +hl.config({ + dwindle = { + preserve_split = true, -- You probably want this + }, +}) + +hl.config({ + master = { + new_status = "master", + }, +}) + +hl.config({ + scrolling = { + fullscreen_on_one_column = true, + }, +}) + +---------------- +---- MISC ---- +---------------- + +hl.config({ + misc = { + force_default_wallpaper = -1, -- Set to 0 or 1 to disable the anime mascot wallpapers + disable_hyprland_logo = false, -- If true disables the random hyprland logo / anime girl background. :( + }, +}) + + +--------------- +---- INPUT ---- +--------------- + +hl.config({ + input = { + kb_layout = "us", + kb_variant = "", + kb_model = "", + kb_options = "", + kb_rules = "", + + follow_mouse = 1, + + sensitivity = 0, + }, +}) +--------------------- +---- KEYBINDINGS ---- +--------------------- + +local mainMod = "SUPER" + +local closeWindowBind = hl.bind(mainMod .. " + C", hl.dsp.window.close()) +-- closeWindowBind:set_enabled(false) +hl.bind(mainMod .. " + M", hl.dsp.exit()) +hl.bind(mainMod .. " + R", hl.dsp.exec_cmd(terminal)) +hl.bind(mainMod .. " + SPACE", hl.dsp.exec_cmd(menu)) +hl.bind(mainMod .. " + D", hl.dsp.exec_cmd(browser)) +hl.bind(mainMod .. " + X", hl.dsp.window.close()) + +hl.bind(mainMod .. " + Q", hl.dsp.focus({ workspace = "-1" })) +hl.bind(mainMod .. " + E", hl.dsp.focus({ workspace = "+1" })) +hl.bind(mainMod .. " + T", hl.dsp.focus({ workspace = "empty" })) +hl.bind(mainMod .. " + SHIFT + T", function() + local ws = hl.get_active_workspace() + if ws then + for _, w in ipairs(ws:get_windows()) do + hl.dispatch(hl.dsp.window.close({ window = w.address })) + end + hl.dispatch(hl.dsp.focus({ workspace = "-1" })) + end +end) + +-- Fullscreen toggle, and "back to normal tiling" +hl.bind(mainMod .. " + F", hl.dsp.window.fullscreen({ action = "toggle" })) +hl.bind(mainMod .. " + V", function() + local w = hl.get_active_window() + if not w then return end + if w.fullscreen ~= 0 then + hl.dispatch(hl.dsp.window.fullscreen({ action = "unset" })) + elseif w.floating then + hl.dispatch(hl.dsp.window.float({ action = "toggle" })) + end +end) +-- Restart waybar (e.g. after editing its config) +hl.bind(mainMod .. " + B", hl.dsp.exec_cmd("pkill -x waybar; " .. waybarCmd)) +hl.bind(mainMod .. " + P", hl.dsp.window.pseudo()) +hl.bind(mainMod .. " + J", hl.dsp.layout("togglesplit")) -- dwindle only + +-- Move focus with mainMod + arrow keys +hl.bind(mainMod .. " + left", hl.dsp.focus({ direction = "left" })) +hl.bind(mainMod .. " + right", hl.dsp.focus({ direction = "right" })) +hl.bind(mainMod .. " + up", hl.dsp.focus({ direction = "up" })) +hl.bind(mainMod .. " + down", hl.dsp.focus({ direction = "down" })) + +-- Move focus with ALT + WASD +hl.bind("ALT + W", hl.dsp.focus({ direction = "up" })) +hl.bind("ALT + A", hl.dsp.focus({ direction = "left" })) +hl.bind("ALT + S", hl.dsp.focus({ direction = "down" })) +hl.bind("ALT + D", hl.dsp.focus({ direction = "right" })) + +-- Move the focused window with ALT + arrow keys +hl.bind("ALT + left", hl.dsp.window.move({ direction = "left" })) +hl.bind("ALT + right", hl.dsp.window.move({ direction = "right" })) +hl.bind("ALT + up", hl.dsp.window.move({ direction = "up" })) +hl.bind("ALT + down", hl.dsp.window.move({ direction = "down" })) + +-- Switch workspaces with mainMod + [0-9] +-- Move active window to a workspace with mainMod + SHIFT + [0-9] +for i = 1, 10 do + local key = i % 10 -- 10 maps to key 0 + hl.bind(mainMod .. " + " .. key, hl.dsp.focus({ workspace = i})) + hl.bind(mainMod .. " + SHIFT + " .. key, hl.dsp.window.move({ workspace = i })) +end + +-- Example special workspace (scratchpad) +hl.bind(mainMod .. " + S", hl.dsp.workspace.toggle_special("magic")) +hl.bind(mainMod .. " + SHIFT + S", hl.dsp.window.move({ workspace = "special:magic" })) + +-- Scroll through existing workspaces with mainMod + scroll +hl.bind(mainMod .. " + mouse_down", hl.dsp.focus({ workspace = "e+1" })) +hl.bind(mainMod .. " + mouse_up", hl.dsp.focus({ workspace = "e-1" })) + +-- Move/resize windows with mainMod + LMB/RMB and dragging +hl.bind(mainMod .. " + mouse:272", hl.dsp.window.drag(), { mouse = true }) +hl.bind(mainMod .. " + mouse:273", hl.dsp.window.resize(), { mouse = true }) + +-- Multimedia keys: volume / mic mute. +-- The desktop has no backlight, so the XF86MonBrightness* keys are repurposed +-- for external-monitor brightness (DDC/CI). Replace with the number from +-- `ddcutil detect`; add a bind per monitor (or a script looping over them). +hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+"), { locked = true, repeating = true }) +hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"), { locked = true, repeating = true }) +hl.bind("XF86AudioMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"), { locked = true, repeating = true }) +hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"), { locked = true, repeating = true }) +-- hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("ddcutil setvcp 10 + 5 --bus "), { locked = true, repeating = true }) +-- hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("ddcutil setvcp 10 - 5 --bus "), { locked = true, repeating = true }) + +-- Requires playerctl +hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"), { locked = true }) +hl.bind("XF86AudioPause", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true }) +hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"), { locked = true }) +hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"), { locked = true }) + + +-------------------------------- +---- WINDOWS AND WORKSPACES ---- +-------------------------------- +local suppressMaximizeRule = hl.window_rule({ + -- Ignore maximize requests from all apps. + name = "suppress-maximize-events", + match = { class = ".*" }, + + suppress_event = "maximize", +}) +-- suppressMaximizeRule:set_enabled(false) + +hl.window_rule({ + -- Fix some dragging issues with XWayland + name = "fix-xwayland-drags", + match = { + class = "^$", + title = "^$", + xwayland = true, + float = true, + fullscreen = false, + pin = false, + }, + + no_focus = true, +}) + + +-- Hyprland-run windowrule +hl.window_rule({ + name = "move-hyprland-run", + match = { class = "hyprland-run" }, + + move = "20 monitor_h-120", + float = true, +}) diff --git a/desktop/waybar/config.jsonc b/desktop/waybar/config.jsonc new file mode 100644 index 0000000..79a596d --- /dev/null +++ b/desktop/waybar/config.jsonc @@ -0,0 +1,173 @@ +[ + { + "layer": "top", + "position": "top", + "height": 36, + "margin-top": 7, + "margin-left": 446, + "margin-right": 446, + "spacing": 6, + "modules-left": [ + "hyprland/workspaces", + "hyprland/window" + ], + "modules-center": [ + "cpu", + "temperature", + "memory", + "disk", + "network" + ], + "modules-right": [ + "tray", + "custom/notifications", + "pulseaudio", + "clock", + "custom/power" + ], + "hyprland/workspaces": { + "format": "{id}", + "on-click": "activate", + "sort-by-number": true + }, + "hyprland/window": { + "format": "{title}", + "max-length": 50, + "rewrite": { + "(.*) \u2014 Mozilla Firefox": "\uf279 $1", + "(.*) - Chromium": "\uf268 $1", + "(.*) - Visual Studio Code": "\uf121 $1", + "(.*) - zed": "\uf121 $1", + "(.*) - Discord": "\uf392 $1", + "(.*) - Steam": "\uf1b6 $1" + } + }, + "cpu": { + "format": "\uf4bc {usage}%", + "interval": 2, + "tooltip": true, + "tooltip-format": "CPU: {usage}%" + }, + "temperature": { + "format": "\uf2c9 {temperatureC}\u00b0", + "interval": 2, + "tooltip": true, + "tooltip-format": "CPU Temp: {temperatureC}\u00b0C" + }, + "memory": { + "format": "\uefcd {used:0.1f}G", + "interval": 2, + "tooltip": true, + "tooltip-format": "RAM: {used:0.1f}GB / {total:0.1f}GB ({percentage}%)" + }, + "disk": { + "format": "\uf07a {used}", + "interval": 30, + "path": "/", + "tooltip": true, + "tooltip-format": "Disk: {used} / {total} ({percentage_used}%)" + }, + "network": { + "format-wifi": "\uf07a {bandwidthDownBytes} \uf07a {bandwidthUpBytes}", + "format-ethernet": "\uf07a {bandwidthDownBytes} \uf07a {bandwidthUpBytes}", + "format-disconnected": "\uf1eb Offline", + "interval": 2, + "tooltip": true, + "tooltip-format-wifi": "WiFi: {essid} ({signalStrength}%)\nDown: {bandwidthDownBits}\nUp: {bandwidthUpBits}", + "tooltip-format-ethernet": "Ethernet: {ifname}\nDown: {bandwidthDownBits}\nUp: {bandwidthUpBits}" + }, + "tray": { + "icon-size": 16, + "spacing": 8, + "show-passive-items": true + }, + "custom/notifications": { + "format": "{}", + "exec": "$HOME/.config/waybar/scripts/notifications.sh", + "interval": 2, + "return-type": "json", + "on-click": "makoctl dismiss --all", + "on-click-right": "makoctl restore" + }, + "pulseaudio": { + "format": "{icon} {volume}%", + "format-muted": "\uf2e2 Muted", + "format-icons": { + "default": [ + "\uf026", + "\uf027", + "\uf028" + ] + }, + "on-click": "pavucontrol", + "on-scroll-up": "pactl set-sink-volume @DEFAULT_SINK@ +5%", + "on-scroll-down": "pactl set-sink-volume @DEFAULT_SINK@ -5%", + "tooltip": true, + "tooltip-format": "{desc}" + }, + "clock": { + "format": "{:%I:%M %p %a, %b %d}", + "tooltip": true, + "tooltip-format": "{calendar}", + "calendar": { + "mode": "month", + "weeks-pos": "right", + "on-scroll": 1, + "format": { + "months": "{}", + "weekdays": "{}", + "today": "{}" + } + } + }, + "custom/power": { + "format": "\uf011", + "tooltip": "Session Menu", + "on-click": "python3 $HOME/.config/waybar/scripts/logout-menu.py" + }, + "output": "DP-2" + }, + { + "output": "DP-1", + "layer": "top", + "position": "top", + "height": 36, + "margin-top": 7, + "margin-left": 50, + "margin-right": 50, + "spacing": 6, + "modules-left": [ + "hyprland/workspaces#portrait" + ], + "modules-center": [], + "modules-right": [ + "clock#portrait", + "custom/power#portrait" + ], + "hyprland/workspaces#portrait": { + "format": "{id}", + "on-click": "activate", + "sort-by-number": true + }, + "clock#portrait": { + "format": "{:%I:%M %p}", + "tooltip": true, + "tooltip-format": "{calendar}", + "calendar": { + "mode": "month", + "weeks-pos": "right", + "on-scroll": 1, + "format": { + "months": "{}", + "weekdays": "{}", + "today": "{}" + } + } + }, + "custom/power#portrait": { + "format": "\uf011", + "tooltip": "Session Menu", + "on-click": "python3 $HOME/.config/waybar/scripts/logout-menu.py" + } + } +] diff --git a/desktop/waybar/style.css b/desktop/waybar/style.css new file mode 100755 index 0000000..2b05cf8 --- /dev/null +++ b/desktop/waybar/style.css @@ -0,0 +1,265 @@ +/* ─── Noctalia-inspired Waybar stylesheet ─── */ +/* GruvboxAlt dark colors, floating bar with 12px radius */ + +* { + all: initial; + font-family: + "JetBrainsMono Nerd Font", "JetBrains Mono", "Font Awesome 6 Free", + monospace; + font-size: 13px; + font-weight: 500; +} + +/* ─── Main Bar ─── */ +#waybar { + background-color: rgba(29, 32, 33, 0.85); + color: #ebdbb2; + border-radius: 8px; + padding: 4px 8px; +} + +/* ─── Module Sections ─── */ +.modules-left, +.modules-center, +.modules-right { + padding: 0 4px; +} + +/* ─── Individual Modules ─── */ +#image, +#workspaces, +#window, +#cpu, +#temperature, +#memory, +#disk, +#network, +#tray, +#custom-notifications, +#pulseaudio, +#clock, +#custom-power, +#custom-power#portrait { + padding: 4px 10px; + margin: 2px 3px; + border-radius: 8px; + background-color: transparent; +} + +/* ─── Image (logo) ─── */ +#image { + padding: 4px 8px; + margin: 2px 3px; + border-radius: 8px; + background-color: transparent; +} + +/* ─── Workspaces (hyprland/workspaces) ─── */ +#workspaces, +#workspaces#portrait { + background-color: transparent; + padding: 2px 6px; +} + +#workspaces button, +#workspaces#portrait button { + padding: 2px 7px; + margin: 0 2px; + color: #665c54; + background-color: transparent; + border-radius: 6px; + transition: all 0.2s ease; +} + +/* Occupied workspace */ +#workspaces button.occupied, +#workspaces#portrait button.occupied { + color: #d79921; +} + +/* Empty workspace */ +#workspaces button.empty, +#workspaces#portrait button.empty { + color: #665c54; +} + +/* Focused workspace */ +#workspaces button.focused, +#workspaces button.active, +#workspaces#portrait button.focused, +#workspaces#portrait button.active { + color: #282828; + background-color: #b8bb26; + font-weight: bold; +} + +/* Urgent workspace */ +#workspaces button.urgent, +#workspaces#portrait button.urgent { + color: #cc241d; + background-color: rgba(204, 36, 29, 0.2); +} + +/* Hover effect */ +#workspaces button:hover, +#workspaces#portrait button:hover { + background-color: rgba(184, 187, 38, 0.3); + color: #ebdbb2; +} + +#workspaces button.focused:hover, +#workspaces button.active:hover, +#workspaces#portrait button.focused:hover, +#workspaces#portrait button.active:hover { + background-color: #b8bb26; + color: #282828; +} + +#workspaces button { + padding: 2px 5px; + margin: 0 2px; + color: #665c54; + background-color: transparent; + border-radius: 6px; + transition: all 0.2s ease; +} + +/* Occupied workspace */ +#workspaces button.occupied { + color: #d79921; +} + +/* Empty workspace */ +#workspaces button.empty { + color: #665c54; +} + +/* Focused workspace */ +#workspaces button.focused, +#workspaces button.active { + color: #282828; + background-color: #b8bb26; + font-weight: bold; +} + +/* Urgent workspace */ +#workspaces button.urgent { + color: #cc241d; + background-color: rgba(204, 36, 29, 0.2); +} + +/* Hover effect */ +#workspaces button:hover { + background-color: rgba(184, 187, 38, 0.3); + color: #ebdbb2; +} + +#workspaces button.focused:hover, +#workspaces button.active:hover { + background-color: #b8bb26; + color: #282828; +} + +/* ─── Active Window (hyprland/window) ─── */ +#window { + color: #ebdbb2; + background-color: transparent; +} + +/* ─── Center System Stats ─── */ +#cpu { + color: #fb4934; +} + +#temperature { + color: #fe8019; +} + +#temperature.critical { + color: #cc241d; + background-color: rgba(204, 36, 29, 0.2); +} + +#memory { + color: #d79921; +} + +#disk { + color: #b8bb26; +} + +#network { + color: #8ec07c; +} + +#network.disconnected { + color: #928374; +} + +/* ─── System Tray ─── */ +#tray { + background-color: transparent; + padding: 4px 8px; +} + +#tray > .passive { + -gtk-icon-effect: dim; +} + +#tray > .needs-attention { + -gtk-icon-effect: highlight; + background-color: rgba(214, 93, 14, 0.3); +} + +/* ─── Notifications ─── */ +#custom-notifications { + color: #689d6a; +} + +#custom-notifications.has-notifications { + color: #fb4934; +} + +/* ─── Pulseaudio ─── */ +#pulseaudio { + color: #83a598; +} + +#pulseaudio.muted { + color: #928374; +} + +/* ─── Clock ─── */ +#clock, +#clock#portrait { + color: #ebdbb2; + background-color: transparent; + font-weight: 600; +} + +/* ─── Power Button ─── */ +#custom-power, +#custom-power#portrait { + color: #fb4934; + background-color: transparent; + font-size: 14px; + padding: 2px 12px; +} + +#custom-power:hover, +#custom-power#portrait:hover { + background-color: rgba(251, 73, 52, 0.15); +} + +/* ─── Tooltip ─── */ +tooltip { + background-color: rgba(29, 32, 33, 0.95); + border: 1px solid rgba(80, 73, 69, 0.8); + border-radius: 8px; + padding: 8px; +} + +tooltip label { + color: #ebdbb2; + padding: 4px; +} diff --git a/laptop/hyprland.lua b/laptop/hyprland.lua index e278249..1ae21b1 100644 --- a/laptop/hyprland.lua +++ b/laptop/hyprland.lua @@ -183,7 +183,7 @@ hl.config({ sensitivity = 0, -- -1.0 - 1.0, 0 means no modification. touchpad = { - natural_scroll = false, + natural_scroll = true, }, }, }) diff --git a/waybar/config.jsonc b/laptop/waybar/config.jsonc similarity index 100% rename from waybar/config.jsonc rename to laptop/waybar/config.jsonc diff --git a/waybar/style.css b/laptop/waybar/style.css similarity index 100% rename from waybar/style.css rename to laptop/waybar/style.css