Fixes startup on Wayland because Keybinder seems to be X11 only

This commit is contained in:
Stephen Boddy 2015-11-28 17:25:47 +01:00
parent 7fac78f24d
commit 85c0518643
2 changed files with 27 additions and 17 deletions

View File

@ -337,3 +337,10 @@ def spawn_new_terminator(cwd, args):
dbg("Spawning: %s" % cmd) dbg("Spawning: %s" % cmd)
subprocess.Popen([cmd]+args) subprocess.Popen([cmd]+args)
def display_manager():
"""Try to detect which display manager we run under"""
if os.environ.get('WAYLAND_DISPLAY'):
return 'WAYLAND'
# Fallback assumption of X11
return 'X11'

View File

@ -9,9 +9,8 @@ import uuid
import gi import gi
from gi.repository import GObject from gi.repository import GObject
from gi.repository import Gtk, Gdk from gi.repository import Gtk, Gdk
from gi.repository import Keybinder
from util import dbg, err, make_uuid from util import dbg, err, make_uuid, display_manager
import util import util
from translation import _ from translation import _
from version import APP_NAME from version import APP_NAME
@ -19,9 +18,12 @@ from container import Container
from factory import Factory from factory import Factory
from terminator import Terminator from terminator import Terminator
try: if display_manager() == 'X11':
try:
gi.require_version('Keybinder', '3.0')
from gi.repository import Keybinder from gi.repository import Keybinder
except ImportError: Keybinder.init()
except ImportError:
err('Warning: python-keybinder is not installed. This means the \ err('Warning: python-keybinder is not installed. This means the \
hide_window shortcut will be unavailable') hide_window shortcut will be unavailable')
@ -120,6 +122,7 @@ class Window(Container, Gtk.Window):
# Attempt to grab a global hotkey for hiding the window. # Attempt to grab a global hotkey for hiding the window.
# If we fail, we'll never hide the window, iconifying instead. # If we fail, we'll never hide the window, iconifying instead.
if self.config['keybindings']['hide_window'] != None: if self.config['keybindings']['hide_window'] != None:
if display_manager() == 'X11':
try: try:
self.hidebound = Keybinder.bind( self.hidebound = Keybinder.bind(
self.config['keybindings']['hide_window'], self.config['keybindings']['hide_window'],