From 129906cb9cac2172c44b5d1db26dbddf7dcc7521 Mon Sep 17 00:00:00 2001 From: S4NKALP Date: Sat, 28 Feb 2026 19:45:43 +0545 Subject: [PATCH] feat(root): add application switcher --- main.py | 13 +++++++++++-- modules/switcher.py | 10 +++++----- styles/main.css | 1 + styles/switcher.css | 38 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 55 insertions(+), 7 deletions(-) diff --git a/main.py b/main.py index 6af16d5..990868f 100644 --- a/main.py +++ b/main.py @@ -7,6 +7,7 @@ from modules.launcher.main import Launcher from modules.notification.notification import ModusNoti from modules.osd import OSD from modules.panel.main import Panel +from modules.switcher import ApplicationSwitcher from utils.functions import set_process_name for log in [ @@ -26,7 +27,7 @@ if __name__ == "__main__": # About().toggle(None) config = load_config() - + switcher = ApplicationSwitcher() panel = Panel() modusnoti = ModusNoti() launcher = Launcher() @@ -36,7 +37,15 @@ if __name__ == "__main__": css_file = monitor_file(get_relative_path("styles")) _ = css_file.connect("changed", lambda *_: set_css()) - app = Application(f"{APP_NAME}", panel, modusnoti, deskwidget, osd, launcher) + app = Application( + f"{APP_NAME}", + panel, + modusnoti, + deskwidget, + osd, + launcher, + switcher, + ) def set_css(): app.set_stylesheet_from_file( diff --git a/modules/switcher.py b/modules/switcher.py index 946b224..5dc9b43 100644 --- a/modules/switcher.py +++ b/modules/switcher.py @@ -1,18 +1,18 @@ import json import gi -from gi.repository import Gdk, Glace - -import config.data as data from fabric.hyprland.widgets import get_hyprland_connection from fabric.widgets.box import Box from fabric.widgets.eventbox import EventBox from fabric.widgets.image import Image from fabric.widgets.label import Label +from fabric.widgets.wayland import WaylandWindow as Window +from gi.repository import Gdk, Glace + +import config.data as data +from utils.functions import is_special_workspace from utils.icon_resolver import IconResolver from utils.occlusion import get_screen_dimensions -from utils.functions import is_special_workspace -from widgets.wayland import WaylandWindow as Window gi.require_version("Glace", "0.1") diff --git a/styles/main.css b/styles/main.css index 4c6802b..d594c28 100644 --- a/styles/main.css +++ b/styles/main.css @@ -16,6 +16,7 @@ @import url("./lock.css"); @import url("./todo.css"); @import url("./launcher.css"); +@import url("./switcher.css"); * { all: unset; diff --git a/styles/switcher.css b/styles/switcher.css index e69de29..c4a8cf6 100644 --- a/styles/switcher.css +++ b/styles/switcher.css @@ -0,0 +1,38 @@ +#application-switcher-container { + background: var(--shadow); + border-radius: 16px; +} + +#application-switcher-view { + min-height: 120px; + padding: 4px; +} + +#switcher-button { + padding: 4px; + min-width: 100px; +} + +#window-button { + background-color: var(--surface); + border-radius: 4px; +} + +#switcher-button:hover { + background-color: var(--surface); +} + +#window-button.active { + background-color: var(--surface-bright); + border: 3px solid var(--surface-bright); +} + +#switcher-button label { + color: var(--foreground); + font-size: 10px; + margin-top: 4px; +} + +#window-row { + padding: 18px; +}