This commit is contained in:
2025-05-19 09:32:17 +02:00
parent 5d08a48b6c
commit 8ecec8768d
27 changed files with 2752 additions and 28 deletions

View File

@@ -8,18 +8,19 @@ from bar.modules.player import Player
from bar.modules.vinyl import VinylButton
from fabric.widgets.wayland import WaylandWindow as Window
from fabric.system_tray.widgets import SystemTray
from fabric.river.widgets import (
RiverWorkspaces,
RiverWorkspaceButton,
RiverActiveWindow,
get_river_connection,
)
from fabric.utils import (
invoke_repeater,
)
from fabric.widgets.circularprogressbar import CircularProgressBar
from bar.config import VINYL
from bar.services.river.widgets import (
RiverWorkspaces,
RiverWorkspaceButton,
RiverActiveWindow,
get_river_connection,
)
class StatusBar(Window):
@@ -42,8 +43,6 @@ class StatusBar(Window):
)
if river_service:
self.river = river_service
else:
self.river = get_river_connection()
self.workspaces = RiverWorkspaces(
display,
@@ -56,6 +55,7 @@ class StatusBar(Window):
self.system_tray = tray
self.active_window = RiverActiveWindow(
river_service=self.river,
name="active-window",
max_length=50,
style="color: #ffffff; font-size: 14px; font-weight: bold;",

View File

@@ -3,8 +3,9 @@ from fabric.widgets.wayland import WaylandWindow as Window
from fabric.widgets.box import Box
from fabric.widgets.label import Label
from fabric.widgets.entry import Entry
from fabric.utils import idle_add
from gi.repository import Gdk
from bar.services.wlr.service import WaylandWindowTracker, Window as WaylandWindow
from pywayland.client import Display
class FuzzyWindowFinder(Window):
@@ -20,8 +21,9 @@ class FuzzyWindowFinder(Window):
type="popup",
visible=False,
)
self._all_windows = ["Test", "Uwu", "Tidal"]
self.window_tracker = WaylandWindowTracker()
self.window_tracker.ready_signal.connect(lambda *_: print("Tracker is ready"))
self._all_windows: list[WaylandWindow] = []
self.viewport = Box(name="viewport", spacing=4, orientation="v")
@@ -46,6 +48,12 @@ class FuzzyWindowFinder(Window):
self.add(self.picker_box)
self.arrange_viewport("")
def open(self):
self._all_windows = self.window_tracker.windows
print(self._all_windows[0])
self.arrange_viewport("")
self.show()
def notify_text(self, entry, *_):
text = entry.get_text()
self.arrange_viewport(text) # Update list on typing
@@ -56,6 +64,8 @@ class FuzzyWindowFinder(Window):
# self.move_selection_2d(event.keyval)
# return True
print(event.keyval)
if event.keyval == Gdk.KEY_Return:
self.window_tracker.activate_window(self._filtered[0])
if event.keyval in [Gdk.KEY_Escape, 103]:
self.hide()
return True
@@ -67,9 +77,12 @@ class FuzzyWindowFinder(Window):
def arrange_viewport(self, query: str = ""):
self.viewport.children = [] # Clear previous entries
filtered = [w for w in self._all_windows if query.lower() in w.lower()]
self._filtered = [
w for w in self._all_windows if query.lower() in w.title.lower()
]
titles = [w.title for w in self._filtered]
for window in filtered:
for window in titles:
self.viewport.add(
Box(name="slot-box", orientation="h", children=[Label(label=window)])
)