Hide keyboard shortcuts

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. 

5 

6import os 

7 

8from gi.repository import GObject, Gdk #@UnresolvedImport 

9 

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 

14 

15 

16class XpraClient(GTKXpraClient): 

17 

18 ClientWindowClass = ClientWindow 

19 

20 def __repr__(self): 

21 return "gtk3.client" 

22 

23 def client_type(self) -> str: 

24 return "Python/GTK3" 

25 

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" 

36 

37 

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 

50 

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() 

57 

58 def get_xdpi(self) -> int: 

59 xdpi = get_xdpi() 

60 if xdpi>0: 

61 return xdpi 

62 return self.get_screen_resolution() 

63 

64 def get_ydpi(self) -> int: 

65 ydpi = get_ydpi() 

66 if ydpi>0: 

67 return ydpi 

68 return self.get_screen_resolution() 

69 

70 

71 def get_tray_menu_helper_class(self): 

72 from xpra.client.gtk3.tray_menu import GTK3TrayMenu 

73 return GTK3TrayMenu 

74 

75 

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) 

83 

84 

85GObject.type_register(XpraClient)