[SCRIPT] Updated
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
from ignis.widgets import Widget
|
||||
from ignis.services.hyprland import HyprlandService, HyprlandWorkspace
|
||||
|
||||
hyprland = HyprlandService.get_default()
|
||||
|
||||
|
||||
class WorkspaceButton(Widget.Button):
|
||||
def __init__(self, workspace: HyprlandWorkspace) -> None:
|
||||
super().__init__(
|
||||
css_classes=["workspace", "unset"],
|
||||
on_click=lambda x: workspace.switch_to(),
|
||||
halign="start",
|
||||
valign="center",
|
||||
)
|
||||
if workspace.id == hyprland.active_workspace.id:
|
||||
self.add_css_class("active")
|
||||
|
||||
|
||||
def scroll_workspaces(direction: str) -> None:
|
||||
current = hyprland.active_workspace.id
|
||||
if direction == "up":
|
||||
target = current - 1
|
||||
hyprland.switch_to_workspace(target)
|
||||
else:
|
||||
target = current + 1
|
||||
if target == 11:
|
||||
return
|
||||
hyprland.switch_to_workspace(target)
|
||||
|
||||
|
||||
class Workspaces(Widget.Box):
|
||||
def __init__(self):
|
||||
if hyprland.is_available:
|
||||
child = [
|
||||
Widget.EventBox(
|
||||
on_scroll_up=lambda x: scroll_workspaces("up"),
|
||||
on_scroll_down=lambda x: scroll_workspaces("down"),
|
||||
css_classes=["workspaces"],
|
||||
child=hyprland.bind_many(
|
||||
["workspaces", "active_workspace"],
|
||||
transform=lambda workspaces, *_: [
|
||||
WorkspaceButton(i) for i in workspaces
|
||||
],
|
||||
),
|
||||
)
|
||||
]
|
||||
else:
|
||||
child = []
|
||||
super().__init__(child=child)
|
||||
Reference in New Issue
Block a user