Skip to content

Commit 464f64c

Browse files
authored
Merge pull request #78 from odknt/improve_linux_support
LINUX: Fix getAllMonitors() returns empty list if XDG_CURRENT_DESKTOP is not set
2 parents bdf506b + d40663a commit 464f64c

2 files changed

Lines changed: 6 additions & 6 deletions

File tree

src/ewmhlib/_ewmhlib.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def getDisplays(forceUpdate: bool = False) -> List[Xlib.display.Display]:
4242
global _displays
4343
if forceUpdate:
4444
_displays = []
45-
if not _displays and os.environ['XDG_SESSION_TYPE'].lower() != "wayland":
45+
if not _displays and os.environ.get('XDG_SESSION_TYPE', '').lower() != "wayland":
4646
# Wayland adds a "fake" display (typically ":1") that freezes when trying to get a connection. Using default
4747
# Thanks to SamuMazzi - https://github.com/SamuMazzi for pointing out this issue
4848
files: List[str] = os.listdir("/tmp/.X11-unix")
@@ -1044,7 +1044,7 @@ def __init__(self, window: Union[int, XWindow]):
10441044
self.ewmhRoot: EwmhRoot = defaultEwmhRoot if self.root.id == defaultRoot.id else EwmhRoot(self.root)
10451045
self.extensions = _Extensions(self.id, self.display, self.root)
10461046

1047-
self._currDesktop = os.environ['XDG_CURRENT_DESKTOP'].lower()
1047+
self._currDesktop = os.environ.get('XDG_CURRENT_DESKTOP', '').lower()
10481048

10491049
def getProperty(self, prop: Union[str, int], prop_type: int = Xlib.X.AnyPropertyType) \
10501050
-> Optional[Xlib.protocol.request.GetProperty]:

src/pywinctl/_pywinctl_linux.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def getActiveWindow() -> Optional[LinuxWindow]:
7272
# https://discourse.gnome.org/t/get-window-id-of-a-window-object-window-get-xwindow-doesnt-exist/10956/3
7373
# https://www.reddit.com/r/gnome/comments/d8x27b/is_there_a_program_that_can_show_keypresses_on/
7474
win_id: Union[str, int] = 0
75-
if os.environ['XDG_SESSION_TYPE'].lower() == "wayland":
75+
if os.environ.get('XDG_SESSION_TYPE', '').lower() == "wayland":
7676
# swaymsg -t get_tree | jq '.. | select(.type?) | select(.focused==true).pid' -> Not working (socket issue)
7777
# pynput / mouse --> Not working (no global events allowed, only application events)
7878
_, activeWindow = _WgetAllWindows()
@@ -113,7 +113,7 @@ def getAllWindows():
113113
114114
:return: list of Window objects
115115
"""
116-
if os.environ['XDG_SESSION_TYPE'].lower() == "wayland":
116+
if os.environ.get('XDG_SESSION_TYPE', '').lower() == "wayland":
117117
windowsList, _ = _WgetAllWindows()
118118
windows = [str(win["id"]) for win in windowsList if win and win.get("id", False)]
119119
else:
@@ -328,8 +328,8 @@ def __init__(self, hWnd: Union[XWindow, int, str]):
328328
self._xWin: XWindow = self._win.xWindow
329329
self.watchdog = _WatchDog(self)
330330

331-
self._currDesktop = os.environ['XDG_CURRENT_DESKTOP'].lower()
332-
self._currSessionType = os.environ['XDG_SESSION_TYPE'].lower()
331+
self._currDesktop = os.environ.get('XDG_CURRENT_DESKTOP', '').lower()
332+
self._currSessionType = os.environ.get('XDG_SESSION_TYPE', '').lower()
333333
self._motifHints: List[int] = []
334334

335335
def getExtraFrameSize(self, includeBorder: bool = True) -> Tuple[int, int, int, int]:

0 commit comments

Comments
 (0)