Portál AbcLinuxu, 18. dubna 2024 09:48


Dotaz: Vytvorenie screenshotov vsetkych okien na ploche

26.3.2007 10:32 Michal Okresa
Vytvorenie screenshotov vsetkych okien na ploche
Přečteno: 178×
Odpovědět | Admin
zdravim, vedel by niekto poradit s tymto: Potrebujem urobit "screenshoty" zo vsetkych okien zobrazenych na obrazovke. Cize, sk su naukladane na sebe, tak ja chcem kompletne obrazky tych okien - nie len neprekrytych casti (este presnejsie povedane - obrazky okien naukladane vedla seba, nie cez seba). Pouzivam nieco taketo na zistenie stacku okien:
xprop -root | grep "_NET_CLIENT_LIST_STACKING(WINDOW)" | cut -d " " -f 5- | tr -d "," a testujem screenshoty napr:
xwd -id 0x1a0000a | xwud Fakt je, ze na MacOS (X11) mi to funguje tak ako potrebujem, ale na linuxe sa mi to nedari spojazdnit. Neviem cim to je, mozno nejake extension alebo co. Vysledok je ten, ze ak je okno cele viditelne, tak screenshot z neho ziskam, ale ak viditelne nie je, tak vidim to co je najvrchnejsie nad nim. Alternativne riesenia typu ziskat focus na okno a zosnimat, su neprijatelne lebo ak vybehne modalne okno, tak na spodne sa neprepnem. Dakujem. --
michael
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Josef Kufner avatar 26.3.2007 17:02 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Vytvorenie screenshotov vsetkych okien na ploche
Odpovědět | | Sbalit | Link | Blokovat | Admin
Kdysi dávno jsem narazil na nějaký udělátko pro FVWM, který dělalo obrázky oken a pak je nabízelo jako ikonky/náhledy. Zkus se po tom podívat, třeba ti to k něčemu bude. Pokud si vzpomínám dobře, tak se k tomu dalo doklikat celkem lehce z hlavní stránky FVWM, nebo ka neco.
Hello world ! Segmentation fault (core dumped)
26.3.2007 19:01 eh
Rozbalit Rozbalit vše Re: Vytvorenie screenshotov vsetkych okien na ploche
Odpovědět | | Sbalit | Link | Blokovat | Admin
(shell) xprop | grep WM_CLIENT_LEADER | awk {print'$5'}
0x1800028
Ale vubec tomu nerozumim, jen jsem v tom grepnul neco jinyho nez jsi grepoval ty. :-(
26.3.2007 19:02 eh
Rozbalit Rozbalit vše Re: Vytvorenie screenshotov vsetkych okien na ploche
Mozna lepe takto:
(shell) xprop|awk '$1~/^WM_CLIENT_LEADER/{print$5}'
0x1800028
26.3.2007 21:59 Michal Okresa
Rozbalit Rozbalit vše Re: Vytvorenie screenshotov vsetkych okien na ploche
ano, tymto ziskam napriklad id okna (KDesktop v KDE), ktore je nadradene pre moje okno. Lenze:
xprop -id 0x180000b | awk '$1~/^WM_CLIENT_LEADER/{print$5}'
0x1800002

xwd -id 0x1800002 | xwud
X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  73 (X_GetImage)
  Serial number of failed request:  941
  Current serial number in output stream:  941
xwud: Error => Unable to read dump file header.

Pre priblizenie o co ide (v povodnej otazke):
Ak si otvorim 2x xterm, tak ze sa castou prekryvaju
a chcem ziskat "screenshoty" oboch xterm-ov (teda ako keby bol iba jeden a potom iba ten druhy),
tak tym sposobom co som napisal v povodnej otazke ziskam:
  • "screenshot" horneho xtermu, tak ako ho chcem
  • "screenshot" spodneho xtermu ma spravny rozmer, ale vidim na nom aj cast horneho xtermu, ktory ho prekryva
A co ma dost zaraza je to, ze na MacOS (X11) mi to funguje bez problemov. Preto podozrievam ;-) nejaku Linux (alebo desktopove prostredie) vlastnost, ktora mi toto neumozni urobit.

A aby som uviedol, preco je to pre mna dolezite, tak si mozete pozriet stranku: http://www.cxtest.org/reports/raw_data?dl=464175. Je to vystup automatizovaneho testovania(teda necakany stav) a tam by bolo dobre vidiet co obsahuju aj spodne okna.

Dakujem za akekolvek napady, ktore ma posunu blizsie k rieseniu.
27.3.2007 10:05 palos | skóre: 3
Rozbalit Rozbalit vše Re: Vytvorenie screenshotov vsetkych okien na ploche
A co ma dost zaraza je to, ze na MacOS (X11) mi to funguje bez problemov. Preto podozrievam ;-) nejaku Linux (alebo desktopove prostredie) vlastnost, ktora mi toto neumozni urobit.
Fungovať by to malo vtedy, keď by window manager skladal okná pomocou COMPOSITE (čo väčšinou robí len ak ho o to požiadame, prípadne nejaký ten 3D window manager). MacOS X to robí podľa mojich informácií defaultne.
26.3.2007 22:16 Ash
Rozbalit Rozbalit vše Re: Vytvorenie screenshotov vsetkych okien na ploche
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jiný nástroj (třeba import -window ID (z imagemagick)) vezme také to nejvrchnější?
26.3.2007 22:33 michael
Rozbalit Rozbalit vše Re: Vytvorenie screenshotov vsetkych okien na ploche
ano vysledok je ten isty aj s import-om, pripadne inymi nastrojmi.
27.3.2007 13:35 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: Vytvorenie screenshotov vsetkych okien na ploche
import
saves any visible window on an X server
Ale dost WM umožňuje procházení spuštěných úloh pomocí miniscreenshotů, takže nějaký způsob musí existovat.
27.3.2007 13:58 Michal Okresa
Rozbalit Rozbalit vše Re: Vytvorenie screenshotov vsetkych okien na ploche
import nefunguje so ziadnou rozumnou kombinaciou parametrov
27.3.2007 16:55 Robert Krátký | skóre: 94 | blog: Robertův bloček
Rozbalit Rozbalit vše Re: Vytvorenie screenshotov vsetkych okien na ploche
Já vím. Proto jsem tam také vložil ten citát z manuálu. Měl jsem na mysli nějaký jiný způsob - např. takový, který využívají okenní manažery k vytváření náhledů otevřených oken (nevím však, jak to udělat).

Také mě napadlo, jestli neexistuje způsob, jak X serveru přikázat, aby určité okno přenesl na povrch. Neměl jsem čas to zkoumat, ale pokud ano, tak by šlo naskriptovat odchycení ID všech oken a jejich postupné vyzdvižení - v tom okamžiku by se uložil screenshot a pokračovalo by se s dalším.
27.3.2007 18:58 Michal Okresa
Rozbalit Rozbalit vše Re: Vytvorenie screenshotov vsetkych okien na ploche
skusal som aj utilitku xwit (window interface tool), ktora ma v manualovej stranke popisane funkcie ako -raise, -focus, -circulate, ... Vsetko veci, ktorymi by sa to dalo dosiahnut, ale fakt je taky, ze pod KDE mi vacsina tych parametrov bud nefungovala, alebo sa len rozblikal taskbar s oknom, s ktorym som pracoval. Takze to zlyhalo aj tu :-( . Este to asi skusim pod VNC s inym window managerom, ci to nebude tym.
27.3.2007 23:36 Ash
Rozbalit Rozbalit vše Re: Vytvorenie screenshotov vsetkych okien na ploche
Manuál čtu až když ostatní metody selžou, díky čemuž mi import funguje v pohodě.

Zřejmě to je otázka použitého WM, jakým způsobem řeší překrývání oken. Já používám beryl, tam je svým způsobem každé okno viditelné, nicméně očekávané screenshoty to dělá i z těch v danou chvíli z pohledu uživatele zakrytých. Jaký WM vlastně vy používáte?
27.3.2007 23:44 Ash
Rozbalit Rozbalit vše Re: Vytvorenie screenshotov vsetkych okien na ploche
Hm, tak po vyzkoušení vidím jako řešení určité použít akcelerovaný desktop. Trochu oklika, pravda, ale funkční. Zkoušel jsem klasické WM (KWin, IceWM, BlackBox, Metacity), všechy fungují stejně nevhodně. S berylem to funguje ok, okno se sejme normálně nezakryté.
27.3.2007 23:45 Ash
Rozbalit Rozbalit vše Re: Vytvorenie screenshotov vsetkych okien na ploche
Aha, čtu to potřebujete rozběhat kdekoliv. Takže nic.
stativ avatar 27.3.2007 10:50 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Vytvorenie screenshotov vsetkych okien na ploche
Odpovědět | | Sbalit | Link | Blokovat | Admin
Řekl bych že to bude způsobem práce s okny v X. Tam se vykresluje přímo jen ten obsah, který je vidět. Zkuste to spíše se zaplým composite (buď samotné composite, Nvidiácké, AIGLX nebo Xgl), protože tam grafická karta vykreslí komplet okno jako pixmapu a tu pak s příslušnými ůpravami zobrazí.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
27.3.2007 11:19 Michal Okresa
Rozbalit Rozbalit vše Re: Vytvorenie screenshotov vsetkych okien na ploche
Composite mam standardne povolene s nvidia ovladacmi, ale nepouzivam AIGLX, Xgl ani 3D window manazera. Ale zjavne mate pravdu, ze to bude prave v Composite. Tym padom je to pre mna nepouzitelne (riesenie musi fungovat na kazdom HW so standardnymi instalaciami linuxu) a teda screenshoty vsetkych okien neurobim :-(. Dakujem
27.3.2007 11:23 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: Vytvorenie screenshotov vsetkych okien na ploche
A co použít window manager, nastavit otevírání nových oken ve volném prostoru spolu s dostatečně velkou obrazovkou? 100% řešení to není, ale při rozumném množství oken by asi fungovalo.
27.3.2007 14:01 Michal Okresa
Rozbalit Rozbalit vše Re: Vytvorenie screenshotov vsetkych okien na ploche
zaujimava myslienka. Pri vytvoreni velkej virtualnej plochy by bolo mozne nad niecim takym uvazovat. Len sa obavam, ze modalne okna otvori nad povodnym oknom (lebo ak mam moznost pri vytvarani aplikacie nastavit fixnu poziciu modalneho okna, tak asi WM to bude respektovat).
Josef Kufner avatar 27.3.2007 21:35 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Vytvorenie screenshotov vsetkych okien na ploche
Nebo si můžeš nascriptovat, aby se ostatní okna posunyly mimo obrazovku, vyfotilo se to jedno a posunuly se zas zpět.
Hello world ! Segmentation fault (core dumped)
stativ avatar 27.3.2007 11:48 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Vytvorenie screenshotov vsetkych okien na ploche
Composite v kombinaci s nvidií je to samé jako AIGLX.
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.