From d08cd50ca2d2a77bd2b373ce1c2c768ce74e7552 Mon Sep 17 00:00:00 2001 From: Olivier Duchateau Date: Wed, 8 May 2019 22:09:13 +0200 Subject: [PATCH] Avoid None type on Wayland session --- catfish/CatfishWindow.py | 16 ++++++++++++---- catfish/__init__.py | 7 ++++++- catfish_lib/__init__.py | 2 +- catfish_lib/helpers.py | 24 ++++++++++++++++++++++-- 4 files changed, 41 insertions(+), 8 deletions(-) diff --git a/catfish/CatfishWindow.py b/catfish/CatfishWindow.py index 0ec14c9..4891ec2 100644 --- a/catfish/CatfishWindow.py +++ b/catfish/CatfishWindow.py @@ -28,7 +28,13 @@ from shutil import copy2, rmtree from xml.sax.saxutils import escape import pexpect -from gi.repository import Gdk, GdkPixbuf, GLib, GObject, Gtk, Pango +gi.require_version('GLib', '2.0') +gi.require_version('GObject', '2.0') +gi.require_version('Pango', '1.0') +gi.require_version('Gdk', '3.0') +gi.require_version('GdkPixbuf', '2.0') +gi.require_version('Gtk', '3.0') +from gi.repository import GLib, GObject, Pango, Gdk, GdkPixbuf, Gtk from catfish.AboutCatfishDialog import AboutCatfishDialog from catfish.CatfishSearchEngine import CatfishSearchEngine @@ -317,9 +323,11 @@ class CatfishWindow(Window): return (s.get_width(), s.get_height()) def get_display_size(self): - s = self.get_screen() - m = s.get_monitor_at_window(s.get_active_window()) - monitor = s.get_monitor_geometry(m) + d = Gdk.Display.get_default() + w = Gdk.get_default_root_window() + + m = d.get_monitor_at_window(w) + monitor = m.get_geometry() return (monitor.width, monitor.height) def on_calendar_day_changed(self, widget): diff --git a/catfish/__init__.py b/catfish/__init__.py index 45be7f2..a1e6086 100644 --- a/catfish/__init__.py +++ b/catfish/__init__.py @@ -17,6 +17,7 @@ # with this program. If not, see . import optparse +import sys from locale import gettext as _ @@ -27,7 +28,7 @@ from gi.repository import Gtk from catfish import CatfishWindow -from catfish_lib import set_up_logging, get_version +from catfish_lib import set_up_logging, get_version, check_x11_version import signal @@ -72,6 +73,10 @@ def main(): 'constructor for your class instances' options, args = parse_options() + if not check_x11_session(): + sys.stderr.write(_('Try GDK_BACKEND=x11 {0}\n'.format(sys.argv[0]))) + sys.exit(0) + # Run the application. window = CatfishWindow.CatfishWindow() window.parse_options(options, args) diff --git a/catfish_lib/__init__.py b/catfish_lib/__init__.py index 1e7f503..e237a1b 100644 --- a/catfish_lib/__init__.py +++ b/catfish_lib/__init__.py @@ -19,6 +19,6 @@ '''facade - makes catfish_lib package easy to refactor while keeping its api constant''' -from . helpers import set_up_logging # noqa +from . helpers import set_up_logging, check_x11_session # noqa from . Window import Window # noqa from . catfishconfig import get_version # noqa diff --git a/catfish_lib/helpers.py b/catfish_lib/helpers.py index 46a9c78..6adbc81 100644 --- a/catfish_lib/helpers.py +++ b/catfish_lib/helpers.py @@ -22,9 +22,12 @@ import os import sys import gi -gi.require_version('Gtk', '3.0') # noqa +gi.require_version('GLib', '2.0') +gi.require_version('GObject', '2.0') +gi.require_version('Gdk', '3.0') +gi.require_version('Gtk', '3.0') -from gi.repository import Gtk, GObject +from gi.repository import GLib, GObject, Gdk, Gtk from . catfishconfig import get_data_file from . Builder import Builder @@ -152,3 +155,20 @@ def alias(alternative_function_name): function.aliases.append(alternative_function_name) return function return decorator + + +def check_x11_session(): + '''Is it an X.org session?''' + backend_env = GLib.environ_getenv(GLib.get_environ(), 'GDK_BACKEND') + if backend_env is None: + # We look for default display + display = Gdk.Display.get_default().get_name() + if display.startswith('wayland'): + return False + else: + return True + else: + if backend_env.lower() == 'x11': + return True + else: + return False -- 2.20.1