Я часто должен делать снимки экрана окон, которые больше, чем в настоящее время показываемый рабочий стол. Я нахожусь на Ubuntu 11.04, gnome-about
говорит Версия: 2.32.1; compiz --version
заявляет Compiz 0.9.4.0 - и у меня есть четыре виртуальных рабочих стола/рабочих области, которые расположены как таковые:
Вышеупомянутые изображения были получены путем перемещения в каждую отдельную рабочую область и делания снимка экрана через клавишу Print Screen - то есть gnome-screenshot
. (Я знаю, что существуют лучшие способы получить firefox
выстрелы, как "дополнение" Средства сохранения Страницы - вышеупомянутое взято просто в качестве примера универсального окна увеличенного размера).
Править: Я, по-видимому, использую неправильную номенклатуру здесь (найденный с помощью Xorg - Получают текущий Виртуальный рабочий стол - число/имя/тег/идентификатор? - Unix и Linux) - это складывается в вышеупомянутом примере, у меня все еще есть только одна рабочая область; то, что изменяется, вместо этого, является областью просмотра - это что wmctrl -d
шоу на каждом из "виртуальных рабочих столов":
$ wmctrl -d 0 * DG: 2048x1200 VP: 0,0 WA: 0,1 1024x598 Workspace 1 $ wmctrl -d 0 * DG: 2048x1200 VP: 0,600 WA: 0,1 1024x598 Workspace 1 $ wmctrl -d 0 * DG: 2048x1200 VP: 1024,0 WA: 0,1 1024x598 Workspace 1 $ wmctrl -d 0 * DG: 2048x1200 VP: 1024,600 WA: 0,1 1024x598 Workspace 1
wmctrl -o 1024,0
Очевидно, перемещение в каждый виртуальный рабочий стол, делание снимка экрана и сшивание их вместе - и наконец вырезание окна приложения - немного утомительны, таким образом, я блуждал, если бы был инструмент (предпочтительно командная строка), который позволил бы мне выбирать окно, которое больше, чем текущий рабочий стол и делает снимок экрана его всего содержания, сразу. Могло быть два сценария здесь также:
Первый случай возможен, если не каким-либо другим способом, то вручную (поскольку я сделал это выше) - и для второго случая, я предполагаю, что для приложения должно быть возможно или "переместить" окно кратко в общую все-настольную область - или создать "виртуальный" графический контекст, не показанный на экране и представить окно там (хотя, я не знаю, что достаточно деталей знает наверняка).
Я попробовал следующие инструменты до сих пор:
gnome-screenshot
xwd
scrot
import
(ImageMagick)и они все получат просто "угол" окна целого приложения, которое показывают на текущем рабочем столе (в ситуации как показано выше). При попытке получить "корневой" или "полный экран", все они получают просто в настоящее время представляемый рабочий стол (не общая площадь всех виртуальных рабочих столов).
Я также попробовал shutter
(0.87.2 Версия 1071), и в то время как я нашел информацию что от версии 0.86.4 вперед, "можно получить все виртуальные рабочие столы теперь. Затвор пройдет всех их, сделает снимок всех и составит их в один большой снимок экрана" - я действительно давал нажатию попытки "Capture all Workspaces" - но это только делает снимок текущей рабочей области/рабочего стола; получения окна аналогично сокращаются в пределах текущего рабочего стола (или сбой с "Ошибкой при делании снимка экрана: Возможно, указатель мыши не мог быть захвачен, или выбранная область недопустима". если окно полностью находится в виртуальном рабочем столе кроме текущего).
Затем я считал, что существует плагин снимка экрана для compiz
- и с тех пор здесь compiz
управляет виртуальными рабочими столами, я думал, что это могло обработать общую площадь - но нет никаких настроек там (в менеджере по настройкам CompizConfig), но: "Позвольте плагину", выходному каталогу и кнопке включить и установить горячие клавиши для "Начатого прямоугольного снимка экрана" - и так как по-видимому только вещью, которую можно сделать, является перетаскивание с мышью для определения прямоугольной области, я сомневаюсь, что плагин помог бы получению общей площади сразу.
Таким образом я хотел бы попросить некоторые предложения об инструментах, которые могут:
Я предпочел бы что-то, что имеет дело с этим материалом в памяти - я сам мог придумать что-то худшее: такой как a bash
сценарий, который отправляет нажатия клавиш для изменения рабочих столов (или только через wmctrl
), и делает отдельные снимки экрана там - но это было бы болью для использования, тем более, что я буду визуально подвергнут "настольному переключению", в то время как снимок экрана является получениями... Если не какие-либо полные программы, предложения для C/Perl/Python API, которые могут получить доступ к растровым данным по всем/любым виртуальным рабочим столам, были бы большими также.
На своей рабочей станции FreeBSD я создал сценарий bash для захвата нескольких виртуальных рабочих пространств, а затем пропустил результаты через ImageMagic 'montage', чтобы сшить их. Вот скрипт bash:
#!/usr/local/bin/bash
dnum=$(xdotool get_num_desktops)
desk=0
while [[ "$desk" -lt "$dnum" ]];
do
xdotool set_desktop $desk;
sleep 2;
maim --format png /dev/stdout > ~/capture/desktop$desk.png;
desk=$((desk+1));
done
Вот команда, которую я запускаю в каталоге ~ / capture /, чтобы соединить их вместе:
montage desktop*.png -tile 10x1 -geometry 1920x2160+1+1 workspaces.png
Очевидно, что можно изменить -tile и -геометрия для собственной системы. ;)
Для этого решения необходимо установить bash, maim (или эквивалентный), xdotool и ImageMagick. НТН
Хорошо, найденный этим для X-окон:
Форумы FVWM • Тема представления - Thumbnailing Окно на другой Области просмотра
Относительно того, почему Вы не можете получить доступ к окну (то есть, сделайте снимок его, когда это не находится на том же столе/страница как текущая область просмотра), то, потому что окна, которые не находятся на текущей странице, не отображаются. Это верно, когда каждый изменяет страницы/столы - окна не отображаются, и окна на текущей области просмотра повторно отображаются.
Так, я предполагаю, что средство, что я хочу, невозможно? Хотя существует два обходных решения:
xrandr
увеличить виртуальный размер (каждый из четырех) области просмотраЭто - то, что работы для меня - сначала запрашивают для наблюдения, которые производят Вас, хотите, затем выполняйтесь:
$ xrandr -q
Screen 0: minimum 320 x 200, current 1024 x 600, maximum 4096 x 4096
LVDS1 connected 1024x600+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1024x600 60.0*+
800x600 60.3 56.2
640x480 59.9
VGA1 disconnected (normal left inverted right x axis y axis)
$ xrandr --output LVDS1 --panning 1600x768
... см. также X/Config/Resolution - Ubuntu Wiki
xvfb
для виртуального рендерингаПолучил это через x11 - Удаленный внеэкранный рендеринг - Отказ сервера, также посмотрите Xvfb - Википедия, свободная энциклопедия для примеров. Это - то, что работало на меня - каждая команда входит в собственный терминал (поскольку некоторые из них предназначены, чтобы быть сервисами),
# start xvfb as display 1 - note the "screen 0" there refers to "its own" screen 0; should set it to 24-bit color
Xvfb :1 -screen 0 1600x1200x24 -pixdepths 3 -fp /usr/share/fonts/X11/Type1
# start metacity on display 1 (would start gdm, but [Bug #598848: gdm no longer works with xvfb](https://bugs.launchpad.net/bugs/598848)
# needed to we have title bars, and possibility to move windows around
DISPLAY=:1 metacity
# start application (here web-browser arora) again on display 1
DISPLAY=:1 arora
# start vnc server, which will bridge display 1 to port 5900
# note - this command exists, however starts a server in background
x11vnc -display :1 -bg -nopw -listen localhost -xkb
# start vnc viewer on port 5900 - so we can see display 1:
# note also - when vncviewer exits, it also will kill the x11vnc server
vncviewer -FullColor=1 localhost:5900
Проблема здесь состоит в том, что не все части ОС инициализируются - таким образом, нет никакого художественного оформления окна, и только основное X шрифтов; хотя, приложения могут найти свои собственные шрифты, как замечено ниже:
xvfb
взгляды почти идеал мне - так как я мог в основном настроить "невидимую" среду, столь большую, как я хочу, и делают снимки экрана непосредственно от него (использование xwd
). Проблема состоит в том, что я не могу иметь окна на "своем" ДИСПЛЕЕ =:0, затем переключить его на 'виртуальный' ДИСПЛЕЙ =:1 для screenshotting, затем возвратить его для ОТОБРАЖЕНИЯ =:0. Затем нужно настроить приложение специально для xvfb
; и раз так происходит, Вам нужно больше размера - затем, целая цепочка выше должна быть перезапущена.
С другой стороны, я нахожу работу с 4 рабочими областями, и большие области просмотра (shwere мышь перемещает Вас в области просмотра), немного сбивающий с толку - с другой стороны, может изменить размер там на лету, и ничто не должно быть перезапущено; и плюс я могу использовать любой из обычных инструментов снимка экрана (но я должен был бы все еще переключить области просмотра).
Само собой разумеется, я все еще любил бы слышать о возможном решении для командной строки, которое могло сделать этот вид screenshotting сразу :)