squash
This commit is contained in:
@@ -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;",
|
||||
|
||||
@@ -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)])
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user