Skip to content

Instantly share code, notes, and snippets.

@kinkerl
Created November 14, 2011 19:26
Show Gist options
  • Save kinkerl/1364864 to your computer and use it in GitHub Desktop.
Save kinkerl/1364864 to your computer and use it in GitHub Desktop.
Inject onboard in a magic panel
#!/usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
import gobject
import sys
import subprocess
import time
class MagicPanel:
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_accept_focus(False) #important for onscreen stuff
self.window.set_default_size(gtk.gdk.screen_width(), 200)
self.window.move(0, gtk.gdk.screen_height() - 200)
self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DOCK)
socket = gtk.Socket()
socket.show()
self.window.add(socket)
#inject onboard
subprocess.Popen("onboard", shell=True)
time.sleep(3)
cmd = "xwininfo -root -children -all 2>/dev/null | grep '\"Onboard\":'"
try:
ret = subprocess.check_output(cmd, shell=True).strip()
ret = ret[:ret.find(' ')].strip()
except:
print "window probably not found"
ret = long(ret, 16)
#onboard injected
socket.add_id(ret)
self.window.show()
#x server magic for maximized windows
self.window.window.property_change("_NET_WM_STRUT", "CARDINAL", 32, gtk.gdk.PROP_MODE_REPLACE, [0, 0, 0, 200])
def main(self):
gtk.main()
if __name__ == "__main__":
mp = MagicPanel()
mp.main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment