LINUX.ORG.RU
решено ФорумTalks

Свистопердулька для вашего ПеКа

 , , wallwa, , живые обои


1

1

Ой всё! Устал, надоело пока, ничего не работает! Наверное заброшу но буду пытаться!, поэтому вываливаю как есть.
Работает кое-как только под Cinnamon и конечно X11

Валва она же Wallwa это дура на Lua которая позволяет запускать окошечки в режиме «обоев», это скрипт использующий другие программы для свое работы, может жрать ссылки, видеофайлы, картинки и прочее что умеет жрать mpv и показывать как живые обои, запускать просто программы и программы в прозрачном терминале. После запуска приложения хранит их состояния, можно поставить всё на паузу, закрыть и открыть разом, вернуть в обычный режим для позиционирования, позиционировать выжделением мышкой, прозрачность там, центрирование и прочее. Каждой программе даётся имя начинающиеся с @ а далее либо имя программы, либо ссылка или файл. Для запуска программы в прозрачном терминале нужно написать + передименем программы.

Видео презентация на память

Негодники (+пердолинг со сборкой вспомогательных утилит там ещё)

Расписывать и описывать что да как лень, один фиг это не до конца готовое, поэтому просто скопирую сюда выхлоп --help.

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.

Под Cinnamon тоже есть косяки, иногда окно продолжает держать фокус
и нужно кликнуть по рабочему столу куда-то. С другими WM/DE бедные беды
на большиснтве идёт перекрытие рабочего стола, в xfce4 всё проваливается под него.
Там делает кто как у некоторых рабочие столы без _NET_WM_WINDOW_TYPE_DESKTOP пашут.
Не всё так красиво под иксами тоже. Пока думаю, может чего и придумаю. Идеи есть, но…

А иногда всё нормально, может генерировать Bad Window
Может быть кому-то пригодится
Досвиданья :(

★★★★★

Последнее исправление: LINUX-ORG-RU (всего исправлений: 7)

Какое-то переизобретение conky, но лайк поставил, всяко лучше, чем комментаторы-ненужнисты и те, которые вякают и сами ни строки кода не написали. Продолжай в том же духе. Сам пользуюсь xfce4, жаль, что тут работать не будет :(

Выложи в aur может.

artemlinux
()
Последнее исправление: artemlinux (всего исправлений: 1)

послушал песню про оленя. функции на 500 строк все-таки не следует писать. я хоть и не фанат мартина и его писанину считаю ересью… хотя функции не более 20-30 строк советовали писать, еще когда его в помине не было слышно

rtxtxtrx ★★
()
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от rtxtxtrx

Там большая функция это «разбор» параметров, хотя там никакого разбора и нет, практически swith:case для пары @item:команда ну и тело с действием и сразу выход. Не режут же же свичи на куски просто ради того чтобы свичи поменьше были :)

Да и в целом код говнокод, это он и так уже разбит на функции, до этого был просто сплошной поток кода.

LINUX-ORG-RU ★★★★★
() автор топика
Ответ на: комментарий от artemlinux

Сам пользуюсь xfce4, жаль

Там можно (вроде) сделать, но блин оно перекроет рабочий стол, а я хочу как в корице, где рабочий стол это прозрачное окно, на котором мызгают значки и прочие иконки с пикрограммами (есть они или нет не важно) важно что оно должно быть вверху и перехватывать события для возможности показа контекстного меню на рабочем столе, аналогично отображение родных обоев должно быть на уровень ниже и не контролироваться оконным менеджером, родные обои должны быть прибиты гвоздями в самый низ как root окно, окна под wallwa же должны впихнуться между рабочим столом и root окном, на самом деле всё работа везде, просто под xfce4 окон ущедших в пиз стека и под _NET_WM_WINDOW_TYPE_DESKTOP просто не видно. Причём не потому что оконный менеджер делает на них unmap а потому что они перекрываются рабочим столом, оно и должно перекрывать, но должно быть и видно.

Короче раб стол нужен, иначе будет фокус на тех окнах что ушли в _NET_WM_WINDOW_TYPE_DESKTOP, но он должен быть такой чтобы под ним были видны эти окна…

Не знаю пока. А в ауре делать нечего, слишком сыро, разве что локально играться.

LINUX-ORG-RU ★★★★★
() автор топика
Последнее исправление: LINUX-ORG-RU (всего исправлений: 2)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)