Class: Rkremap::WinAttrKDE

Inherits:
Object
  • Object
show all
Defined in:
lib/rkremap/winattr_kde.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeWinAttrKDE

Returns a new instance of WinAttrKDE.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/rkremap/winattr_kde.rb', line 7

def initialize
  @app_win = {}

  bus = DBus.session_bus
  kwin_service = bus.service('org.kde.KWin')
  kwin_scripting = kwin_service.object('/Scripting')
  kwin_scripting.introspect
  full_path = File.expand_path('./kwin_script.js', __dir__)
  if kwin_scripting.isScriptLoaded(full_path)[0]
    kwin_scripting.unloadScript(full_path)
  end
  kwin_scripting.loadScript(full_path)
  kwin_scripting.start

  create_service
end

Instance Attribute Details

#focus_winObject (readonly)

Returns the value of attribute focus_win.



5
6
7
# File 'lib/rkremap/winattr_kde.rb', line 5

def focus_win
  @focus_win
end

Instance Method Details

#app_title(win_id) ⇒ Object



28
29
30
# File 'lib/rkremap/winattr_kde.rb', line 28

def app_title(win_id)
  @app_win[win_id][:caption]
end

#class_name(window) ⇒ Object



24
25
26
# File 'lib/rkremap/winattr_kde.rb', line 24

def class_name(window)
  @app_win[window][:resource_class]
end

#create_serviceObject



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/rkremap/winattr_kde.rb', line 41

def create_service
  winattr = self

  bus = DBus.session_bus
  service = bus.request_service('net.tmtms.Rkremap')
  klass = Class.new(DBus::Object) do
    dbus_interface 'net.tmtms.RkremapInterface' do
      dbus_method :windowActivated, 'in id:s, in caption:s, in resourceName:s, in resourceClass:s' do |id, caption, resource_name, resource_class|
        winattr.set(id, caption, resource_name, resource_class)
      end
      dbus_method :windowRemoved, 'in id:s' do |id|
        winattr.remove(id)
      end
    end
  end
  obj = klass.new('/net/tmtms/Rkremap')
  service.export(obj)

  Thread.new do
    loop = DBus::Main.new
    loop << bus
    loop.run
  end
  sleep 0.1
end

#remove(id) ⇒ Object



37
38
39
# File 'lib/rkremap/winattr_kde.rb', line 37

def remove(id)
  @app_win.delete id
end

#set(id, caption, resource_name, resource_class) ⇒ Object



32
33
34
35
# File 'lib/rkremap/winattr_kde.rb', line 32

def set(id, caption, resource_name, resource_class)
  @app_win[id] = {caption: caption, resource_name: resource_name, resource_class: resource_class}
  @focus_win = id
end