Wallwa - В разработке (WIP)
Wallwa это утилита командной строки для манипуляций над окнами. Запуск почти любого X11
окна в режим _NET_WM_WINDOW_TYPE_DESKTOP
и обратно. Корректно работает пока только под Cinnamon
. Статус других DE/WM внизу.
- Отобразить фото/видео/анимацию в качестве обоев (используется
mpv
) - Воспризвести медиаконтент по ссылке в качестве фона рабочего стола (
mpv
) - Отобразить текстовый вывод произольных
CLI
приложений (используетсяurxvt
) - Отобразить произвольное графическое окно/окна в режирме “обоев”, “виджета”
- Задать прозначность “фоновым” окнам
- Менять размер, положение и порядок отображения несколькими способами
- выделяя размер и область расположения мышкой (через
slop
) - переводя окно в обчный режим и обратно
- через аргументы командной строки установи позиции и размера (в том числе относительные)
- выделяя размер и область расположения мышкой (через
- Создавать композицию из нескольких фоновых окон если нужно
- Запускать и закрывать все “фоновые” окна разом с сохранием их размеров и позиций
ВНИМАНИЕ! WALLWA ЗАПУСКАЕТ КОМАНДЫ КОТОРЫЕ ЕЙ ПЕРЕДАЮТ КАК ЕСТЬ, БУДТЕ АККУРАТНЫ
Зачем
Например я держу на синеватом фоне рабочего стола, текстовый вывод трёх программ.
Зависимости
sudo apt install lua procps mpv slop x11-utils xdotool rxvt-unicode coreutils
Сборка
Потребуются две вспомогательные утилиты xlower
и xwidpid
они будут собраны и установлены автоматически через make
, так как их нет в репозиториях.
Зависимости сборки для xlower
и xwidpid
sudo apt install libx11-dev gcc make pkg-config libxres-dev libxres-dev
Получение и сборка xlower
, xwidpid
make
Установка и удаление
Глобально
sudo make install
sudo make uninstall
Локально
make PREFIX=$HOME/.local install
make PREFIX=$HOME/.local uninstall
Независимо
make DESTDIR=$HOME/some_you_dir install
make DESTDIR=$HOME/some_you_dir uninstall
Использование
Простейшее использования
wallwa https://www.youtube.com/watch?v=YvJxhWcX_VU
запуск видеообоев по ссылкеwallwa file.mkv
запуск видеобоев из файлаwallwa "xterm -e htop"
запуск “длинной” команды с графическим окномwallwa +htop
тоже самое что выше, но в прозрачном терминалеwallwa minetest
просто запуск окна произвольной программы
Всему что вы запускаете вы даёте имя, имя начинается с cимвола @
все манипуляции совершаются с его указанием, если имя не указано то используется автоматическое имя @default
. wallwa
принимет максимум два параметра, первый это имя, второй это ссылка, медиафайл ,имя программы для запуска или одна из нескольких команд манипуляций над ними. Есть команды для манипуляций над всеми окнами разом в таком случае имя указывать ненужно. Типичный пример использования. Если перед именем программы стоит символ +
то подразумевается что это программа для терминала например wallwa +htop
запустит htop
в прозрачном терминале и отобразит как фон рабочего стола эта команда аналочна этой wallwa @default +htop
так как имя подставилось автоматически Если wallwa
получает ссылку или неисполняемый файл то подразумевается что это обои поэтому они всегда разворачиваются на полный экран, это может перекрыть ранее запущенные окна и для этого нужно либо опустить последнее открытое окно -b
либо поднять другие -t
Простой пример использования.
wallwa video.mp4
Запустить видеобобои (можно по ссылке)wallwa 70%
Установить прозначность обоев на 70%wallwa @top +htop
Запуститьhtop
wallwa @cav +cava
Запуститьcava
wallwa @cav 50%
Установить прозначностьcava
на 50%wallwa @top -g
Забрать окноhtop
в обычный режим, задать размер и положениеwallwa @top -s
Вернуть окно в режим “обоев”wallwa @top +top
Заменитьhtop
наtop
с сохранением размера и положенияwallwa -k
“Выключить” видеообоиwallwa -l
Загрузить из обратноwallwa @cav -m
Выбрать расположение и размер дляcava
выделенем мышиwallwa -pa
Приостановить работу всех “фоновых” оконwallwa -ra
Продолжить из работу сноваwallwa -ka
Закрыть всё настроенное вышеwallwa -i
Получить информацию о сохранённых командах и их статусеwallwa -la
Запустить всё снова как было
Вариаций того что мнжно делать много, можно играться, важно то что после того как всё настроено можно просто разом запускать и закрывать всю композицию окон.
Более полное описание использования в справке
Usage: wallwa [URL|FILE|APPLICATION|+APPLICATION]
This utilite execute GUI application or open mediafile
or execute CLI application in transparent terminal and
move any this variants to desktop background like wallpaper.
Working only under X11 Xorg.
Wallwa command line options give maximum 2 arguments
first afrument is string ID started at '@' symbol it
wallwa item name, after item can be URL,FILE or executable app
wallwa use mpv for play mediacontent every time in fullscreen mode
as wallpaper, wallwa use urxvt terminal in transparent mode for CLI.
If first argument not set, automanicly set and use @default item
Arguments:
-h --help Show this help message
-i --info Show items list
-l --load Load selected item
-la --load-all Load all items
-m --mouse Select item position and size uses mouse
-g --get Get selected item as normal window
-ga --get-all Get all active items as normal window
-s --set Set selected item to background
-s --set-all Set all active items to background
-t --top In background mode move selected item to up
-t --top-all In background mode restack all items in forward range
-b --back In background mode move selected item to down
-b --back-all In background mode restack all items in backward range
-k --kill Kill selected item
-ka --kill-all Kill all active items
-d --del Delete selected item and kill
-da --del-all Delete all items and kill
-p --pause Pause selected item
-pa --pause-all Pause all active items
-r --resume Resume selected item
-ra --resume-all Resume all items from "pause"
-c --center Reposition selected item in screen center
-ca --center-all Rereposition all items in screen center
-f --full Resize selected item to fullscreen
-fa --full-all Resize all items in fullscreen
[FILE] Open mediafile in mpv
[URL] Open mediastream in mpv
application Execute any* GUI applications in background mode
+application Execute any CLI applications in transparent terminal
[NUMBER]% Set opacity for selected item
[NUMBER]%% Set opacity for all items
[NUMBER]x[NUMBER] Set size for selected item
[NUMBER]:[NUMBER] Set pose for selected item
[NUMBER]x[NUMBER]-center Set item size for selected item
and centred item in screen
*[NUMBER]x[NUMBER] Relative change size for selected item
*[NUMBER]:[NUMBER] Relative change pose for selected item
In relative mode +[NUMBER] add value, -[NUMBER] sub value, [0] no change
For example:
@itemname *+50:0 #move window to left on 50px
@itemname *-10x+20 #sub in window width size 10px and add 20px height
More examples:
This example show case when you have live video wallpaper and htop in
background mode, you have 2 items @default and @wallpaper and manipulate
this items resize, move, restack, pause, resume, close and open again, you
can make many @items and manipulate each individually or all of them at once
wallwa +htop #execute htop in transparent terminal as @default item
wallwa -m #resize and repose htop window
wallwa -k #kill @default item
wallwa -l #load again @default item
wallwa @wallpaper w.mp4 #play video wallpaper in fullscreen mode
wallwa @default -t #raise htop above the wallpaper
wallwa @wallpaper 50% #set transparent value for wallpaper
wallwa -pa #pause @default and @wallpaper
wallwa -ra #resume @default and @wallpaper
wallwa -ka #close
wallwa -la #run again
wallwa -da #delete all items and start playing again :D
If you command for wallwa have multiple words use quotes
For example you can run another (not urxvt) terminal
wallwa @myhtop "xterm -fg white -bg black -e htop"
Wallwa save size and cood position for item you can
execute another application in current pose and size item
wallwa @myhtop "xterm -fg white -bg black -e htop"
wallwa @myhtop "xterm -fg red -bg blue -e htop"
wallwa @myhtop +htop
wallwa @myhtop +btop
wallwa @myhtop "xterm -e top"
Current wallwa implemented as Lua script and uses
other awesome applications for its work such as
* mpv for playing any media content
* urxvt for transparent terminal for CLI applications
* ps for get PIDs
* slop for use mouse for repose and resize item window
* xprop for set and get window parameters
* wmctrl for get WID from PID (no used now)
* xwidpid for get WID from PID (used now)
* xlower for move window to low stack
* xdotool for relative change size and pose
* xwininfo for information about window visible
* realpath for give absolute path for files and applications
Notice:
WALLWA EXECUTE PROGRAMS FROM COMMAND LINE, NO RUN DANGER
COMMANDS, YOU SELF CHECK VALID URL, PLEASE BE CAREFUL WHAT
COMMANDS YOU PASS TO RUN. This doesn't just apply to any terminal input.
wallwa can make "Bad Window" erros, becouse Xorg async.
If you see "Bad Window" error try
#reload all items
wallwa -ka ; #kill all
wallwa -la ; #load all
#or delete all items
wallwa -da
*Some GUI applications work uncorrect in background mode, for example
chromium,firefox,tilix,gnome-terminal and maybe other applications
not work correctly in background mode or no change state to background
This windows have multiple WID`s and now correctly spawn in background
but uncorrect behavior with options -g, -s, -b, -t manipulations.
If window have single WID all works fine
wallwa is prototype util, maybe reimplemented in future.
На заметку
Может вызывать ошибку Bad Window
, это “нормально” ничего страшного. Манипуляции с окнами через -g
/-ga
/--get-all
, -s
/-sa
/--set-all
могут чуть неверно применять размеры окна, поправлю потом. По хорошему вообще всё переписывать надо…
Текущие проблемы
- cinnamon [YES]
- kde-plasma [NOP]
- окно мигает при -s,-b и уходит за обои рабочего стола
- gnome [NOP]
- окно в фоне, но сохраняет фокус
- xfce4 [NOP]
- окно в фоне, но уходит за рабочий стол, если по нему кликнуть
- mate [???]
- окно мигает при -s,-b и уходит за обои рабочего стола
- awesome [???]
- compiz [???]
- awesome [???]
- lxde [???]
- lxqt [???]
- openbox [NOP]
- окно в фоне, но сохраняет фокус
- dwm [???]
- окно в фоне, но сохраняет фокус