[packages/ueberzug] new
atler
atler at pld-linux.org
Wed Jan 13 11:04:14 CET 2021
commit f6ef59e45673b6b807cf33b51474b27b5c87dc7e
Author: Jan Palus <atler at pld-linux.org>
Date: Wed Jan 13 11:02:09 2021 +0100
new
single_process_terminals.patch | 73 ++++++++++++++++++++++++++++++++++++++++++
ueberzug.spec | 47 +++++++++++++++++++++++++++
2 files changed, 120 insertions(+)
---
diff --git a/ueberzug.spec b/ueberzug.spec
new file mode 100644
index 0000000..4320ee0
--- /dev/null
+++ b/ueberzug.spec
@@ -0,0 +1,47 @@
+Summary: Command line util which allows to draw images on terminals
+Name: ueberzug
+Version: 18.1.9
+Release: 1
+License: GPL v3+
+Group: X11/Applications/Graphics
+Source0: https://github.com/seebye/ueberzug/archive/%{version}/%{name}-%{version}.tar.gz
+# Source0-md5: 9d6ee6e2ef75c68e318bdb224be71af1
+URL: https://github.com/seebye/ueberzug
+Patch0: single_process_terminals.patch
+BuildRequires: python3-modules >= 1:3.2
+BuildRequires: python3-setuptools
+BuildRequires: rpm-pythonprov
+BuildRequires: rpmbuild(macros) >= 1.720
+BuildRequires: xorg-lib-libX11-devel
+BuildRequires: xorg-lib-libXext-devel
+BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%description
+Überzug is a command line util which allows to draw images on
+terminals by using child windows.
+
+%prep
+%setup -q
+%patch0 -p1
+
+%build
+%py3_build
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+%py3_install
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(644,root,root,755)
+%doc README.md
+%attr(755,root,root) %{_bindir}/ueberzug
+%attr(755,root,root) %{py3_sitedir}/Xshm.cpython-3*.so
+%dir %{py3_sitedir}/ueberzug
+%{py3_sitedir}/ueberzug/*.py
+%{py3_sitedir}/ueberzug/__pycache__
+%{py3_sitedir}/ueberzug-%{version}-py*.egg-info
+%{py3_sitedir}/ueberzug/lib
diff --git a/single_process_terminals.patch b/single_process_terminals.patch
new file mode 100644
index 0000000..4f604aa
--- /dev/null
+++ b/single_process_terminals.patch
@@ -0,0 +1,73 @@
+From 160481b9922acb5f183bc5cb2af675cdc508db0c Mon Sep 17 00:00:00 2001
+From: Jan Palus <atler at pld-linux.org>
+Date: Wed, 13 Jan 2021 01:57:44 +0100
+Subject: [PATCH] add support for single process terminals
+
+some terminals (urxvt in daemon mode, mate-terminal) consist of single
+process having multiple X windows. This in turn breaks ueberzug which
+requires 1:1 mapping between PID and window id. If present use WINDOWID
+environment variable set by those terminals as a direct pointer to
+window which should be target for displayed image.
+---
+ ueberzug/xutil.py | 24 +++++++++++++++++++-----
+ 1 file changed, 19 insertions(+), 5 deletions(-)
+
+diff --git a/ueberzug/xutil.py b/ueberzug/xutil.py
+index 2c6c871..6864aa4 100644
+--- a/ueberzug/xutil.py
++++ b/ueberzug/xutil.py
+@@ -1,6 +1,7 @@
+ """This module contains x11 utils"""
+ import functools
+ import asyncio
++import os
+
+ import Xlib
+ import Xlib.display as Xdisplay
+@@ -84,6 +85,16 @@ def get_pid_by_window_id(display: Xdisplay.Display, window_id: int):
+ else None)
+
+
++def get_visible_window_ids(display: Xdisplay.Display = None):
++ d = display or get_display()
++ try:
++ return d.screen().root.get_full_property(
++ d.intern_atom('_NET_CLIENT_LIST'),
++ Xlib.X.AnyPropertyType).value
++ finally:
++ if not display:
++ d.close()
++
+ def get_pid_window_id_map():
+ """Determines the pid of each mapped window.
+
+@@ -92,11 +103,7 @@ def get_pid_window_id_map():
+ """
+ with get_display() as display:
+ root = display.screen().root
+- visible_window_ids = \
+- (root.get_full_property(
+- display.intern_atom('_NET_CLIENT_LIST'),
+- Xlib.X.AnyPropertyType)
+- .value)
++ visible_window_ids = get_visible_window_ids(display)
+ return {**{
+ get_pid_by_window_id(display, window.id): window.id
+ for window in root.query_tree().children
+@@ -159,6 +166,13 @@ def get_parent_window_infos():
+ Returns:
+ list of TerminalWindowInfo
+ """
++
++ window_id = os.getenv('WINDOWID')
++
++ if window_id and window_id.isnumeric() and int(window_id) in get_visible_window_ids():
++ pty = get_first_pty(get_parent_pids(process.get_own_pid()))
++ return [TerminalWindowInfo(int(window_id), pty)]
++
+ window_infos = []
+ client_pids = {}
+
+--
+2.30.0
+
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/ueberzug.git/commitdiff/f6ef59e45673b6b807cf33b51474b27b5c87dc7e
More information about the pld-cvs-commit
mailing list