Coverage for /home/antoine/projects/xpra-git/dist/python3/lib64/python/xpra/client/gtk3/client.py : 64%
Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1# This file is part of Xpra.
2# Copyright (C) 2013-2020 Antoine Martin <antoine@xpra.org>
3# Xpra is released under the terms of the GNU GPL v2, or, at your option, any
4# later version. See the file COPYING for details.
6import os
8from gi.repository import GObject, Gdk #@UnresolvedImport
10from xpra.os_util import OSX, POSIX, is_Wayland
11from xpra.client.gtk_base.gtk_client_base import GTKXpraClient
12from xpra.client.gtk3.client_window import ClientWindow
13from xpra.platform.gui import get_xdpi, get_ydpi
16class XpraClient(GTKXpraClient):
18 ClientWindowClass = ClientWindow
20 def __repr__(self):
21 return "gtk3.client"
23 def client_type(self) -> str:
24 return "Python/GTK3"
26 def client_toolkit(self) -> str:
27 if POSIX and not OSX:
28 backend = os.environ.get("GDK_BACKEND", "")
29 if not backend and is_Wayland():
30 backend = "Wayland"
31 if backend:
32 #capitalize, ie: "x11" -> "X11"
33 backend = backend[0].upper()+backend[1:]
34 return "GTK3 %s" % backend
35 return "GTK3"
38 def get_notifier_classes(self):
39 ncs = GTKXpraClient.get_notifier_classes(self)
40 if not OSX:
41 try:
42 from xpra.client.gtk3.gtk3_notifier import GTK3_Notifier
43 ncs.append(GTK3_Notifier)
44 except Exception as e:
45 from xpra.log import Logger
46 log = Logger("gtk", "client")
47 log.warn("Warning: failed to load the GTK3 notification class")
48 log.warn(" %s", e)
49 return ncs
51 def get_screen_resolution(self) -> int:
52 screen = Gdk.Screen.get_default()
53 if not screen:
54 #wayland?
55 return -1
56 return screen.get_resolution()
58 def get_xdpi(self) -> int:
59 xdpi = get_xdpi()
60 if xdpi>0:
61 return xdpi
62 return self.get_screen_resolution()
64 def get_ydpi(self) -> int:
65 ydpi = get_ydpi()
66 if ydpi>0:
67 return ydpi
68 return self.get_screen_resolution()
71 def get_tray_menu_helper_class(self):
72 from xpra.client.gtk3.tray_menu import GTK3TrayMenu
73 return GTK3TrayMenu
76 def get_mouse_position(self):
77 #with GTK3, we can get None values!
78 root = self.get_root_window()
79 if not root:
80 return -1, -1
81 p = root.get_pointer()[-3:-1]
82 return self.sp(p[0] or 0, p[1] or 0)
85GObject.type_register(XpraClient)