diff --git a/wayland/.config/hypr/hyprland.conf b/wayland/.config/hypr/hyprland.conf index 0b01541..64f143c 100644 --- a/wayland/.config/hypr/hyprland.conf +++ b/wayland/.config/hypr/hyprland.conf @@ -27,7 +27,11 @@ master { inherit_fullscreen = true } -monitor = eDP-1, 1920x1200@60, 0x0, 1 +# name, resolution, position, scale +monitor = DP-4, highrr, 0x0, 1 +monitor = HDMI-A-5, preferred, auto-right, 1 +monitor = DP-3, highres, auto-left, 1 +monitor = , preferred, auto, 1 # Force all non-floating windows to spawn 'maximized' (Monocle mode) # 'fullscreenstate 1' maximizes the window (keeping the bar visible) @@ -41,7 +45,8 @@ windowrulev2 = fullscreenstate 1 0, class:^.*$, floating:0 input { kb_layout = us,ru,us kb_variant = colemak,, - follow_mouse = 0 + follow_mouse = 1 + accel_profile = flat } ################################ @@ -66,17 +71,38 @@ misc { ################################ # Workspaces +# This is extremely stupid ################################ -workspace = 1, default:true -workspace = 2 -workspace = 3 -workspace = 4 -workspace = 5 -workspace = 6 -workspace = 7 -workspace = 8 -workspace = 9 +workspace = 1, default:true, monitor:DP4 +workspace = 2, monitor:DP4 +workspace = 3, monitor:DP4 +workspace = 4, monitor:DP4 +workspace = 5, monitor:DP4 +workspace = 6, monitor:DP4 +workspace = 7, monitor:DP4 +workspace = 8, monitor:DP4 +workspace = 9, monitor:DP4 + +workspace = 11, monitor:DP3 +workspace = 12, monitor:DP3 +workspace = 13, monitor:DP3 +workspace = 14, monitor:DP3 +workspace = 15, monitor:DP3 +workspace = 16, monitor:DP3 +workspace = 17, monitor:DP3 +workspace = 18, monitor:DP3 +workspace = 19, monitor:DP3 + +workspace = 21, monitor:HDMI-A-5 +workspace = 22, monitor:HDMI-A-5 +workspace = 23, monitor:HDMI-A-5 +workspace = 24, monitor:HDMI-A-5 +workspace = 25, monitor:HDMI-A-5 +workspace = 26, monitor:HDMI-A-5 +workspace = 27, monitor:HDMI-A-5 +workspace = 28, monitor:HDMI-A-5 +workspace = 29, monitor:HDMI-A-5 ################################ # Environment (fonts & menu colors) @@ -114,7 +140,7 @@ bind = $mod, K, layoutmsg, cycleprev bind = $mod, H, movefocus, l bind = $mod, L, movefocus, r -bind = $mod, B, exec, pkill yambar || yambar +bind = $mod, B, exec, pkill waybar || waybar ################################ # Window movement @@ -129,25 +155,25 @@ bind = $mod SHIFT, K, movewindow, u # Workspaces ################################ -bind = $mod, 1, workspace, 1 -bind = $mod, 2, workspace, 2 -bind = $mod, 3, workspace, 3 -bind = $mod, 4, workspace, 4 -bind = $mod, 5, workspace, 5 -bind = $mod, 6, workspace, 6 -bind = $mod, 7, workspace, 7 -bind = $mod, 8, workspace, 8 -bind = $mod, 9, workspace, 9 +bind = $mod, 1, exec, ~/.local/bin/hypr-ws workspace 1 +bind = $mod, 2, exec, ~/.local/bin/hypr-ws workspace 2 +bind = $mod, 3, exec, ~/.local/bin/hypr-ws workspace 3 +bind = $mod, 4, exec, ~/.local/bin/hypr-ws workspace 4 +bind = $mod, 5, exec, ~/.local/bin/hypr-ws workspace 5 +bind = $mod, 6, exec, ~/.local/bin/hypr-ws workspace 6 +bind = $mod, 7, exec, ~/.local/bin/hypr-ws workspace 7 +bind = $mod, 8, exec, ~/.local/bin/hypr-ws workspace 8 +bind = $mod, 9, exec, ~/.local/bin/hypr-ws workspace 9 -bind = $mod SHIFT, 1, movetoworkspacesilent, 1 -bind = $mod SHIFT, 2, movetoworkspacesilent, 2 -bind = $mod SHIFT, 3, movetoworkspacesilent, 3 -bind = $mod SHIFT, 4, movetoworkspacesilent, 4 -bind = $mod SHIFT, 5, movetoworkspacesilent, 5 -bind = $mod SHIFT, 6, movetoworkspacesilent, 6 -bind = $mod SHIFT, 7, movetoworkspacesilent, 7 -bind = $mod SHIFT, 8, movetoworkspacesilent, 8 -bind = $mod SHIFT, 9, movetoworkspacesilent, 9 +bind = $mod SHIFT, 1, exec, ~/.local/bin/hypr-ws movetoworkspacesilent 1 +bind = $mod SHIFT, 2, exec, ~/.local/bin/hypr-ws movetoworkspacesilent 2 +bind = $mod SHIFT, 3, exec, ~/.local/bin/hypr-ws movetoworkspacesilent 3 +bind = $mod SHIFT, 4, exec, ~/.local/bin/hypr-ws movetoworkspacesilent 4 +bind = $mod SHIFT, 5, exec, ~/.local/bin/hypr-ws movetoworkspacesilent 5 +bind = $mod SHIFT, 6, exec, ~/.local/bin/hypr-ws movetoworkspacesilent 6 +bind = $mod SHIFT, 7, exec, ~/.local/bin/hypr-ws movetoworkspacesilent 7 +bind = $mod SHIFT, 8, exec, ~/.local/bin/hypr-ws movetoworkspacesilent 8 +bind = $mod SHIFT, 9, exec, ~/.local/bin/hypr-ws movetoworkspacesilent 9 # Mod + Shift + Comma (Throw to Left Monitor, Stay Here) bind = $mod SHIFT, comma, movewindow, mon:l @@ -198,7 +224,7 @@ exec-once = ~/.local/bin/import-gsettings exec-once = mako # Status bar -exec-once = yambar +exec-once = waybar # Night light exec-once = gammastep -t 6500:3200 -l 42.2407:-83.6133 diff --git a/wayland/.config/waybar/config.jsonc b/wayland/.config/waybar/config.jsonc index 4bc134a..368a938 100644 --- a/wayland/.config/waybar/config.jsonc +++ b/wayland/.config/waybar/config.jsonc @@ -1,217 +1,93 @@ -// -*- mode: jsonc -*- { - // "layer": "top", // Waybar at top layer - // "position": "bottom", // Waybar position (top|bottom|left|right) - //"height": 30, // Waybar height (to be removed for auto height) - // "width": 1280, // Waybar width - "spacing": 4, // Gaps between modules (4px) - // Choose the order of the modules - "modules-left": [ - "hyprland/workspaces", - "hyprland/mode", - "hyprland/scratchpad", - "custom/media" - ], - "modules-center": [ - "hyprland/window" - ], - "modules-right": [ - "pulseaudio", - "network", - "power-profiles-daemon", - "cpu", - "memory", - "temperature", - //"backlight", - "keyboard-state", - "hyprland/language", - "battery", - //"battery#bat2", - "tray", - "clock" - //"custom/power" - ], - // Modules configuration - // "hyprland/workspaces": { - // "disable-scroll": true, - // "all-outputs": true, - // "warp-on-scroll": false, - // "format": "{name}: {icon}", - // "format-icons": { - // "1": "", - // "2": "", - // "3": "", - // "4": "", - // "5": "", - // "urgent": "", - // "focused": "", - // "default": "" - // } - // }, - "keyboard-state": { - "numlock": true, - "capslock": true, - "format": "{name} {icon}", - "format-icons": { - "locked": "", - "unlocked": "" - } - }, - "hyprland/mode": { - "format": "{}" - }, - "hyprland/scratchpad": { - "format": "{icon} {count}", - "show-empty": false, - "format-icons": ["", ""], - "tooltip": true, - "tooltip-format": "{app}: {title}" - }, - "mpd": { - "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ", - "format-disconnected": "Disconnected ", - "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ", - "unknown-tag": "N/A", - "interval": 5, - "consume-icons": { - "on": " " - }, - "random-icons": { - "off": " ", - "on": " " - }, - "repeat-icons": { - "on": " " - }, - "single-icons": { - "on": "1 " - }, - "state-icons": { - "paused": "", - "playing": "" - }, - "tooltip-format": "MPD (connected)", - "tooltip-format-disconnected": "MPD (disconnected)" - }, - "idle_inhibitor": { + "layer": "top", + "position": "top", + "height": 24, + "spacing": 4, + + // Layout + "modules-left": ["hyprland/workspaces"], + "modules-center": ["hyprland/window"], + "modules-right": ["custom/version", "cpu", "memory", "temperature", "clock"], + + // --- Modules --- + +"hyprland/workspaces": { + "disable-scroll": true, + "all-outputs": false, + // We set the format to {icon} so it looks up the mapping below "format": "{icon}", "format-icons": { - "activated": "", - "deactivated": "" + // Monitor 1 (Standard) + "1": "1", + "2": "2", + "3": "3", + "4": "4", + "5": "5", + "6": "6", + "7": "7", + "8": "8", + "9": "9", + "10": "10", + + // Monitor 2 (Map 11-20 back to 1-10) + "11": "1", + "12": "2", + "13": "3", + "14": "4", + "15": "5", + "16": "6", + "17": "7", + "18": "8", + "19": "9", + "20": "10", + + // Monitor 3 (Map 21-30 back to 1-10, just in case) + "21": "1", + "22": "2", + "23": "3", + "24": "4", + "25": "5", + "26": "6", + "27": "7", + "28": "8", + "29": "9", + "30": "10", + + // Fallback for any other workspace + "default": "" } }, - "tray": { - // "icon-size": 21, - "spacing": 10, - // "icons": { - // "blueman": "bluetooth", - // "TelegramDesktop": "$HOME/.local/share/icons/hicolor/16x16/apps/telegram.png" - // } + + "hyprland/window": { + "format": "{title}", + "max-length": 50, + "separate-outputs": true }, - "clock": { - // "timezone": "America/New_York", - "tooltip-format": "{:%Y %B}\n{calendar}", - "format-alt": "{:%Y-%m-%d}" + + "custom/version": { + "exec": "cat ~/.cache/hyprland-version", + "interval": 300, + "format": "{}" }, + "cpu": { - "format": "{usage}% ", - "tooltip": false + "interval": 10, + "format": "CPU {usage}%" }, + "memory": { - "format": "{}% " + "interval": 30, + "format": "MEM {percentage}%" }, + "temperature": { - // "thermal-zone": 2, - // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", "critical-threshold": 80, - // "format-critical": "{temperatureC}°C {icon}", - "format": "{temperatureC}°C {icon}", - "format-icons": ["", "", ""] + "format": "TMP {temperatureC}°C" }, - "backlight": { - // "device": "acpi_video1", - "format": "{percent}% {icon}", - "format-icons": ["", "", "", "", "", "", "", "", ""] - }, - "battery": { - "states": { - // "good": 95, - "warning": 30, - "critical": 15 - }, - "format": "{capacity}% {icon}", - "format-full": "{capacity}% {icon}", - "format-charging": "{capacity}% ", - "format-plugged": "{capacity}% ", - "format-alt": "{time} {icon}", - // "format-good": "", // An empty format will hide the module - // "format-full": "", - "format-icons": ["", "", "", "", ""] - }, - "battery#bat2": { - "bat": "BAT2" - }, - "power-profiles-daemon": { - "format": "{icon}", - "tooltip-format": "Power profile: {profile}\nDriver: {driver}", - "tooltip": true, - "format-icons": { - "default": "", - "performance": "", - "balanced": "", - "power-saver": "" - } - }, - "network": { - // "interface": "wlp2*", // (Optional) To force the use of this interface - "format-wifi": "{essid} ({signalStrength}%) ", - "format-ethernet": "{ipaddr}/{cidr} ", - "tooltip-format": "{ifname} via {gwaddr} ", - "format-linked": "{ifname} (No IP) ", - "format-disconnected": "Disconnected ⚠", - "format-alt": "{ifname}: {ipaddr}/{cidr}" - }, - "pulseaudio": { - // "scroll-step": 1, // %, can be a float - "format": "{volume}% {icon} {format_source}", - "format-bluetooth": "{volume}% {icon} {format_source}", - "format-bluetooth-muted": " {icon} {format_source}", - "format-muted": " {format_source}", - "format-source": "{volume}% ", - "format-source-muted": "", - "format-icons": { - "headphone": "", - "hands-free": "", - "headset": "", - "phone": "", - "portable": "", - "car": "", - "default": ["", "", ""] - }, - "on-click": "pavucontrol" - }, - "custom/media": { - "format": "{icon} {text}", - "return-type": "json", - "max-length": 40, - "format-icons": { - "spotify": "", - "default": "🎜" - }, - "escape": true, - "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder - // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name - }, - "custom/power": { - "format" : "⏻ ", - "tooltip": false, - "menu": "on-click", - "menu-file": "$HOME/.config/waybar/power_menu.xml", // Menu file in resources folder - "menu-actions": { - "shutdown": "shutdown", - "reboot": "reboot", - "suspend": "systemctl suspend", - "hibernate": "systemctl hibernate" - } + + "clock": { + // 2025-12-28 Sun 16:05 + "format": "{:%Y-%m-%d %a %H:%M}", + "tooltip-format": "{:%Y %B}\n{calendar}" } } diff --git a/wayland/.config/waybar/style.css b/wayland/.config/waybar/style.css index 7e83028..db71211 100644 --- a/wayland/.config/waybar/style.css +++ b/wayland/.config/waybar/style.css @@ -1,327 +1,63 @@ * { - /* `otf-font-awesome` is required to be installed for icons */ - font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif; - font-size: 13px; + border: none; + border-radius: 0; + /* Use your terminal font here. "monospace" acts as a fallback */ + font-family: "Input Mono", "Roboto Mono", monospace; + font-size: 14px; + font-weight: bold; + min-height: 0; } window#waybar { - background-color: rgba(43, 48, 59, 0.5); - border-bottom: 3px solid rgba(100, 114, 125, 0.5); + background-color: #4B7B82; color: #ffffff; - transition-property: background-color; - transition-duration: .5s; } -window#waybar.hidden { - opacity: 0.2; +tooltip { + background: #374D4E; + border: 1px solid #ffffff; +} +tooltip label { + color: #ffffff; } -/* -window#waybar.empty { - background-color: transparent; -} -window#waybar.solo { - background-color: #FFFFFF; -} -*/ +/* --- Module Blocks --- */ -window#waybar.termite { - background-color: #3F3F3F; +/* Generic style for right-side modules */ +#custom-version, +#cpu, +#memory, +#temperature, +#clock { + background-color: #374D4E; + color: #ffffff; + padding: 0 10px; + margin: 4px 2px; /* Creates small gaps between blocks */ } -window#waybar.chromium { - background-color: #000000; - border: none; -} - -button { - /* Use box-shadow instead of border so the text isn't offset */ - box-shadow: inset 0 -3px transparent; - /* Avoid rounded borders under each button name */ - border: none; - border-radius: 0; -} - -/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ -button:hover { - background: inherit; - box-shadow: inset 0 -3px #ffffff; -} - -/* you can set a style on hover for any module like this */ -#pulseaudio:hover { - background-color: #a37800; -} +/* --- Workspaces --- */ #workspaces button { - padding: 0 5px; - background-color: transparent; + padding: 0 10px; + background-color: #374D4E; color: #ffffff; + margin: 4px 2px; } -#workspaces button:hover { - background: rgba(0, 0, 0, 0.2); -} - -#workspaces button.focused { - background-color: #64727D; - box-shadow: inset 0 -3px #ffffff; +/* The active workspace */ +#workspaces button.active { + background-color: #ffffff; + color: #4B7B82; /* Inverted colors for active state */ } +/* Windows with urgency (notifications) */ #workspaces button.urgent { background-color: #eb4d4b; } -#mode { - background-color: #64727D; - box-shadow: inset 0 -3px #ffffff; -} - -#clock, -#battery, -#cpu, -#memory, -#disk, -#temperature, -#backlight, -#network, -#pulseaudio, -#wireplumber, -#custom-media, -#tray, -#mode, -#idle_inhibitor, -#scratchpad, -#power-profiles-daemon, -#mpd { +/* --- Window Title (Center) --- */ +#window { + background-color: transparent; + color: #ffffff; padding: 0 10px; - color: #ffffff; -} - -#window, -#workspaces { - margin: 0 4px; -} - -/* If workspaces is the leftmost module, omit left margin */ -.modules-left > widget:first-child > #workspaces { - margin-left: 0; -} - -/* If workspaces is the rightmost module, omit right margin */ -.modules-right > widget:last-child > #workspaces { - margin-right: 0; -} - -#clock { - background-color: #64727D; -} - -#battery { - background-color: #ffffff; - color: #000000; -} - -#battery.charging, #battery.plugged { - color: #ffffff; - background-color: #26A65B; -} - -@keyframes blink { - to { - background-color: #ffffff; - color: #000000; - } -} - -/* Using steps() instead of linear as a timing function to limit cpu usage */ -#battery.critical:not(.charging) { - background-color: #f53c3c; - color: #ffffff; - animation-name: blink; - animation-duration: 0.5s; - animation-timing-function: steps(12); - animation-iteration-count: infinite; - animation-direction: alternate; -} - -#power-profiles-daemon { - padding-right: 15px; -} - -#power-profiles-daemon.performance { - background-color: #f53c3c; - color: #ffffff; -} - -#power-profiles-daemon.balanced { - background-color: #2980b9; - color: #ffffff; -} - -#power-profiles-daemon.power-saver { - background-color: #2ecc71; - color: #000000; -} - -label:focus { - background-color: #000000; -} - -#cpu { - background-color: #2ecc71; - color: #000000; -} - -#memory { - background-color: #9b59b6; -} - -#disk { - background-color: #964B00; -} - -#backlight { - background-color: #90b1b1; -} - -#network { - background-color: #2980b9; -} - -#network.disconnected { - background-color: #f53c3c; -} - -#pulseaudio { - background-color: #f1c40f; - color: #000000; -} - -#pulseaudio.muted { - background-color: #90b1b1; - color: #2a5c45; -} - -#wireplumber { - background-color: #fff0f5; - color: #000000; -} - -#wireplumber.muted { - background-color: #f53c3c; -} - -#custom-media { - background-color: #66cc99; - color: #2a5c45; - min-width: 100px; -} - -#custom-media.custom-spotify { - background-color: #66cc99; -} - -#custom-media.custom-vlc { - background-color: #ffa000; -} - -#temperature { - background-color: #f0932b; -} - -#temperature.critical { - background-color: #eb4d4b; -} - -#tray { - background-color: #2980b9; -} - -#tray > .passive { - -gtk-icon-effect: dim; -} - -#tray > .needs-attention { - -gtk-icon-effect: highlight; - background-color: #eb4d4b; -} - -#idle_inhibitor { - background-color: #2d3436; -} - -#idle_inhibitor.activated { - background-color: #ecf0f1; - color: #2d3436; -} - -#mpd { - background-color: #66cc99; - color: #2a5c45; -} - -#mpd.disconnected { - background-color: #f53c3c; -} - -#mpd.stopped { - background-color: #90b1b1; -} - -#mpd.paused { - background-color: #51a37a; -} - -#language { - background: #00b093; - color: #740864; - padding: 0 5px; - margin: 0 5px; - min-width: 16px; -} - -#keyboard-state { - background: #97e1ad; - color: #000000; - padding: 0 0px; - margin: 0 5px; - min-width: 16px; -} - -#keyboard-state > label { - padding: 0 5px; -} - -#keyboard-state > label.locked { - background: rgba(0, 0, 0, 0.2); -} - -#scratchpad { - background: rgba(0, 0, 0, 0.2); -} - -#scratchpad.empty { - background-color: transparent; -} - -#privacy { - padding: 0; -} - -#privacy-item { - padding: 0 5px; - color: white; -} - -#privacy-item.screenshare { - background-color: #cf5700; -} - -#privacy-item.audio-in { - background-color: #1ca000; -} - -#privacy-item.audio-out { - background-color: #0069d4; } diff --git a/wayland/.config/yambar/config.yml b/wayland/.config/yambar/config.yml index 9e728f3..b2e337c 100644 --- a/wayland/.config/yambar/config.yml +++ b/wayland/.config/yambar/config.yml @@ -8,7 +8,6 @@ _styles: # --- BAR CONFIG --- bar: - monitor: ${MON_NAME} height: 20 location: top #background: 222222ff @@ -16,149 +15,10 @@ bar: font: Inconsolata LGC:size=10 left: - - script: - path: /usr/bin/yambar-hyprland-wses - anchors: - #ws_focused: &ws_focused fba922ff - ws_focused: &ws_focused fba922ff - ws_active: &ws_active ffffffff - ws_empty: &ws_empty 000000ff - ws_other: &ws_other bbbbbbff - # you can use `{workspace_N}` here to use the workspace name - # assigned by Hyprland instead of hard-coding one here. That - # name is, as far as I can tell, always just the index of the - # workspace though, so not all that valuable. - ws_1: &ws_1 " 1" - ws_2: &ws_2 "2" - ws_3: &ws_3 "3" - ws_4: &ws_4 "4" - ws_5: &ws_5 "5" - ws_6: &ws_6 "6" - ws_7: &ws_7 "7" - ws_8: &ws_8 "8" - ws_9: &ws_9 "9" + - mem: + poll-interval: 2500 content: - list: - spacing: 6 - items: - - map: - default: - string: { text: *ws_1, foreground: *ws_other } - conditions: - workspace_count < 2: - # if you replace all of these empty: entries with - # - # string: { text: *ws_N, foreground: *ws_empty } - # - # instead, then you'll always see the full - # workspace list. however, you'll be unable to use - # `{workspace_N}` as the workspace names in the - # anchors list above. - empty: {} - workspace_1_focused: - string: { text: *ws_1, foreground: *ws_focused } - workspace_1_active: - string: { text: *ws_1, foreground: *ws_active } - workspace_1_windows == 0: - string: { text: *ws_1, foreground: *ws_empty } - # All of the maps below are identical to the one above, - # except with N++. - - map: - default: - string: { text: *ws_2, foreground: *ws_other } - conditions: - workspace_count < 3: - empty: {} - workspace_2_focused: - string: { text: *ws_2, foreground: *ws_focused } - workspace_2_active: - string: { text: *ws_2, foreground: *ws_active } - workspace_2_windows == 0: - string: { text: *ws_2, foreground: *ws_empty } - - map: - default: - string: { text: *ws_3, foreground: *ws_other } - conditions: - workspace_count < 4: - empty: {} - workspace_3_focused: - string: { text: *ws_3, foreground: *ws_focused } - workspace_3_active: - string: { text: *ws_3, foreground: *ws_active } - workspace_3_windows == 0: - string: { text: *ws_3, foreground: *ws_empty } - - map: - default: - string: { text: *ws_4, foreground: *ws_other } - conditions: - workspace_count < 5: - empty: {} - workspace_4_focused: - string: { text: *ws_4, foreground: *ws_focused } - workspace_4_active: - string: { text: *ws_4, foreground: *ws_active } - workspace_4_windows == 0: - string: { text: *ws_4, foreground: *ws_empty } - - map: - default: - string: { text: *ws_5, foreground: *ws_other } - conditions: - workspace_count < 6: - empty: {} - workspace_5_focused: - string: { text: *ws_5, foreground: *ws_focused } - workspace_5_active: - string: { text: *ws_5, foreground: *ws_active } - workspace_5_windows == 0: - string: { text: *ws_5, foreground: *ws_empty } - - map: - default: - string: { text: *ws_6, foreground: *ws_other } - conditions: - workspace_count < 7: - empty: {} - workspace_6_focused: - string: { text: *ws_6, foreground: *ws_focused } - workspace_6_active: - string: { text: *ws_6, foreground: *ws_active } - workspace_6_windows == 0: - string: { text: *ws_6, foreground: *ws_empty } - - map: - default: - string: { text: *ws_7, foreground: *ws_other } - conditions: - workspace_count < 8: - empty: {} - workspace_7_focused: - string: { text: *ws_7, foreground: *ws_focused } - workspace_7_active: - string: { text: *ws_7, foreground: *ws_active } - workspace_7_windows == 0: - string: { text: *ws_7, foreground: *ws_empty } - - map: - default: - string: { text: *ws_8, foreground: *ws_other } - conditions: - workspace_count < 9: - empty: {} - workspace_8_focused: - string: { text: *ws_8, foreground: *ws_focused } - workspace_8_active: - string: { text: *ws_8, foreground: *ws_active } - workspace_8_windows == 0: - string: { text: *ws_8, foreground: *ws_empty } - - map: - default: - string: { text: *ws_9, foreground: *ws_other } - conditions: - workspace_count < 10: - empty: {} - workspace_9_focused: - string: { text: *ws_9, foreground: *ws_focused } - workspace_9_active: - string: { text: *ws_9, foreground: *ws_active } - workspace_9_windows == 0: - string: { text: *ws_9, foreground: *ws_empty } + string: {text: " {used:mb}MB"} center: - foreign-toplevel: diff --git a/wayland/.local/bin/hypr-status.sh b/wayland/.local/bin/hypr-status.sh index 908fb33..2e01acf 100755 --- a/wayland/.local/bin/hypr-status.sh +++ b/wayland/.local/bin/hypr-status.sh @@ -9,39 +9,9 @@ else HYPR_VER="hyprland" fi -# 2. Power Profile -if [ -r /sys/firmware/acpi/platform_profile ]; then - PROFILE="$(cut -c1-3 /sys/firmware/acpi/platform_profile)" -else - PROFILE="unk" -fi - # 3. Load Average LOADAVG="$(cut -d' ' -f1 /proc/loadavg)" -# 4. Battery -if command -v upower >/dev/null 2>&1; then - BAT_DEV="$(upower -e | grep BAT | head -n1)" - if [ -n "$BAT_DEV" ]; then - BAT_PCT="$(upower -i "$BAT_DEV" | awk '/percentage/ {print $2}')" - BAT_STATE="$(upower -i "$BAT_DEV" | awk '/state/ {print $2}')" - - if [ -n "$BAT_PCT" ]; then - case "$BAT_STATE" in - charging) BAT="+$BAT_PCT" ;; - discharging|fully-charged) BAT="$BAT_PCT" ;; - *) BAT="?$BAT_PCT" ;; - esac - else - BAT="?" - fi - else - BAT="?" - fi -else - BAT="?" -fi - # 5. Date DATE="$(date '+%Y-%m-%d %a %H:%M')" @@ -49,8 +19,8 @@ DATE="$(date '+%Y-%m-%d %a %H:%M')" # We use the unicode vertical bar '│' (U+2502) to be safe from parsing errors. # We also append a newline explicitly. -printf "hstatus|string| %s │ %s │ %s │ %s │ %s\n" \ - "$HYPR_VER" "$PROFILE" "$LOADAVG" "$BAT" "$DATE" +printf "hstatus|string| %s │ %s │ %s\n" \ + "$HYPR_VER" "$LOADAVG" "$DATE" # FORCE FLUSH: This is likely why you saw {hstatus} before. # Some shells buffer printf. This ensures it sends immediately. diff --git a/wayland/.local/bin/hypr-ws b/wayland/.local/bin/hypr-ws new file mode 100755 index 0000000..5b95dcb --- /dev/null +++ b/wayland/.local/bin/hypr-ws @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +# CONFIGURATION: Set your monitor names here +MON_1="DP-4" # Your primary laptop/screen (Workspaces 1-9) +MON_2="DP-3" # Your external screen (Workspaces 11-19) +MON_3="HDMI-A-5" + +# Get current focused monitor +current_mon=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | .name') +command=$1 # "workspace" or "movetoworkspace" +arg=$2 # The key pressed (1-9) + +offset=0 + +if [ "$current_mon" == "$MON_2" ]; then + offset=10 +elif [ "$current_mon" == "$MON_3" ]; then + offset=20 +fi + +# Calculate the actual workspace ID +target=$((arg + offset)) + +# Dispatch the command +hyprctl dispatch "$command" "$target" diff --git a/wayland/.wl-packagelist b/wayland/.wl-packagelist index 516c624..b593c18 100644 --- a/wayland/.wl-packagelist +++ b/wayland/.wl-packagelist @@ -1,2 +1,2 @@ -yambar hyprland xdg-desktop-portal-hyprland xdg-desktop-portal wayland wayland-protocols xorg-xwayland pipewire pipewire-pulse wireplumber brightnessctl gammastep mako bemenu foot grim slurp swaybg noto-fonts noto-fonts-emoji ttf-jetbrains-mono nscde nwg-look qt5ct qt6ct redmond97-gtk-theme-git qt5-styleplugins qt6gtk2 chicago95-gtk-theme-git chicago95-icon-theme-git yambar-hyprland-wses +yambar hyprland xdg-desktop-portal-hyprland xdg-desktop-portal wayland wayland-protocols xorg-xwayland pipewire pipewire-pulse wireplumber brightnessctl gammastep mako bemenu foot grim slurp swaybg noto-fonts noto-fonts-emoji ttf-jetbrains-mono nscde nwg-look qt5ct qt6ct redmond97-gtk-theme-git qt5-styleplugins qt6gtk2 chicago95-gtk-theme-git chicago95-icon-theme-git yambar-hyprland-wses wl-clipboard waybar hyprpicker