README.md

Wallwa - В разработке (WIP)

Wallwa это утилита командной строки для манипуляций над окнами. Запуск почти любого X11 окна в режим _NET_WM_WINDOW_TYPE_DESKTOP и обратно. Корректно работает пока только под Cinnamon. Статус других DE/WM внизу.

  • Отобразить фото/видео/анимацию в качестве обоев (используется mpv)
  • Воспризвести медиаконтент по ссылке в качестве фона рабочего стола (mpv)
  • Отобразить текстовый вывод произольных CLI приложений (используется urxvt)
  • Отобразить произвольное графическое окно/окна в режирме “обоев”, “виджета”
  • Задать прозначность “фоновым” окнам
  • Менять размер, положение и порядок отображения несколькими способами
    • выделяя размер и область расположения мышкой (через slop)
    • переводя окно в обчный режим и обратно
    • через аргументы командной строки установи позиции и размера (в том числе относительные)
  • Создавать композицию из нескольких фоновых окон если нужно
  • Запускать и закрывать все “фоновые” окна разом с сохранием их размеров и позиций

screenshot

ВНИМАНИЕ! 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 [???]
    • окно в фоне, но сохраняет фокус

Описание

Скрипт для манипуляций над окнами под X11 в режиме "обоев"

Конвейеры
0 успешных
0 с ошибкой