Class: RosettAi::DBus::StatusNotifierInterface

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

Overview

D-Bus StatusNotifierItem interface for system tray presence.

Implements org.kde.StatusNotifierItem, the freedesktop standard for system tray icons on Linux. Supports KDE, GNOME (via extension), and Xfce status notifier hosts.

Degrades gracefully if no StatusNotifierHost is available.

Constant Summary collapse

INTERFACE =
'org.kde.StatusNotifierItem'
CATEGORY =
'ApplicationStatus'
ICON_NAME =
'rosett-ai-symbolic'
APP_ID =
'be.neatnerds.rosettai'

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ StatusNotifierInterface

Returns a new instance of StatusNotifierInterface.



44
45
46
47
# File 'lib/rosett_ai/dbus/status_notifier_interface.rb', line 44

def initialize(path)
  super
  @current_status = 'Active'
end

Instance Method Details

#categoryObject



50
# File 'lib/rosett_ai/dbus/status_notifier_interface.rb', line 50

def category   = CATEGORY

#icon_nameObject



53
# File 'lib/rosett_ai/dbus/status_notifier_interface.rb', line 53

def icon_name  = ICON_NAME

#idObject



49
# File 'lib/rosett_ai/dbus/status_notifier_interface.rb', line 49

def id         = APP_ID

#statusObject



51
# File 'lib/rosett_ai/dbus/status_notifier_interface.rb', line 51

def status     = @current_status

#titleObject



52
# File 'lib/rosett_ai/dbus/status_notifier_interface.rb', line 52

def title      = "rai #{RosettAi::VERSION}"

#tool_tipObject

ToolTip is a struct: (icon_name, icon_pixmap[], title, body)



56
57
58
# File 'lib/rosett_ai/dbus/status_notifier_interface.rb', line 56

def tool_tip
  [ICON_NAME, [], "rai #{RosettAi::VERSION}", 'NeatNerds Code Companion']
end

#update_status(new_status) ⇒ Object

Update displayed status and emit signal.

Parameters:

  • new_status (String)

    one of 'Passive', 'Active', 'NeedsAttention'



63
64
65
66
# File 'lib/rosett_ai/dbus/status_notifier_interface.rb', line 63

def update_status(new_status)
  @current_status = new_status
  NewStatus(new_status)
end