Class: RosettAi::DBus::FocusMonitorInterface

Inherits:
DBus::Object
  • Object
show all
Defined in:
lib/rosett_ai/dbus/focus_monitor_interface.rb

Overview

D-Bus interface for focus monitoring.

Interface: be.neatnerds.rosettai.FocusMonitor Methods: GetCurrentFocus() -> (ss) Return (app_id, window_title) Signals: FocusChanged(app_id: s, title: s) Emitted on active window change

Constant Summary collapse

INTERFACE =
'be.neatnerds.rosettai.FocusMonitor'

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ FocusMonitorInterface

Returns a new instance of FocusMonitorInterface.



28
29
30
31
32
33
34
# File 'lib/rosett_ai/dbus/focus_monitor_interface.rb', line 28

def initialize(path)
  super
  @current_app_id = ''
  @current_title = ''
  @adapter = nil
  @monitor_thread = nil
end

Instance Method Details

#startObject

Start focus monitoring



37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/rosett_ai/dbus/focus_monitor_interface.rb', line 37

def start
  compositor = CompositorDetector.detect
  RosettAi.logger.info("Detected compositor: #{compositor}")

  @adapter = create_adapter(compositor)
  return unless @adapter

  @adapter.on_focus_change do |app_id, title|
    handle_focus_change(app_id, title)
  end

  @adapter.start
end

#stopObject

Stop focus monitoring



52
53
54
55
# File 'lib/rosett_ai/dbus/focus_monitor_interface.rb', line 52

def stop
  @adapter&.stop
  @adapter = nil
end