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 =

Returns D-Bus interface name.

Returns:

  • (String)

    D-Bus interface name.

'be.neatnerds.rosettai.FocusMonitor'

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ FocusMonitorInterface

Returns a new instance of FocusMonitorInterface.



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

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

Instance Method Details

#startObject

Start focus monitoring



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

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



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

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