skoda ze prave odjizdis, ucesal sem ten skript a prave ho sem du hodit :-)
Nastaveni Bluecherry Klienta:
1. v hlavnim okne vybrat layout bez kamer
2. otevrit nove okno s layout velke mrizky s 4kamery na strane vpravo a dat maximalizovat
3. otevrit nove okno s layout jen 1kamera a NEdavat fullscreen ani maximalizovat
4. v Options zaskrtnout "Close to tray", "restore previous session" a NEzaskrtavat/Zrusit "startup in fullscreen"
5. vypnout bluechery-klient
Skript ulozit do /usr/local/bin/bluemulti a nastavit mu opravneni spusteni:
sudo chmod a+x /usr/local/bin/bluemulti
#!/bin/bash
### ZACATEK NASTAVENI
# o kolik pixelu se ma okno s 1Big cam zmensit zprava aby bylo videt 4small-cam-vpravo pod nim
ZMENSIT_BIG=378
### KONEC NASTAVENI
# nastaveni promene hlavniho/prvniho displeje
DISPLAY=:0
setup_xfce(){
# provadet nastaveni pouze pokud bezi Xfce prostredi
if (ps aux | grep -q [x]fwm4); then
echo -e "INFO: Nastavuji Xfce prostredi..."
# nastaveni aby se panel schovaval (volba 1 - inteligentne(neschova se kdyz neni zobrazene maximalizovane okno, 2 - schovaval by se vzdy)
xfconf-query -c xfce4-panel -p /panels/panel-0/autohide-behavior -s 1
# vytvoreni Tematu oken BezOkraju a aktivovani
mkdir -p ${HOME}/.local/share/themes/BezOkraju/xfwm4/
touch ${HOME}/.local/share/themes/BezOkraju/xfwm4/themerc
sleep 2
xfconf-query -c xfwm4 -p /general/theme -s BezOkraju
else
echo -e "POZOR: Prostredi nebylo nastavovano protoze NEni pouzite Xfce...\n\tPro spravne fungovani $(basename ${0}) musite rucne nastavit schovavani panelu ve svem prostredi...\n\tA pro bezokrajove okna pripravit prazdne tema nebo zapnout volbu dle moznosti pouziteho prostredi..."
fi
}
run_client(){
# pusteni bluecherry-client (pokud nebezi) s ukladani vystupu do $HOME
if ! (ps aux | grep -q [b]luecherry-client); then
bluelog="${HOME}/bluecherry-client-$(date +%Y%m%d-%H%M).log"
echo -e "INFO: Poustim klient na pozadi, jeho vystup se bude ukladat do ${bluelog}..."
nohup bluecherry-client &>${bluelog} &
sleep 5
else
echo -e "INFO: Klient jiz bezel..."
fi
}
set_windows(){
echo "INFO: Nastavuji pozice a velikosti oken..."
# zjisteni aktualniho rozliseni obrazovky ve formatu "xsouradnice ysouradnice"
screen_size="$(xrandr 2>/dev/null | grep \* | sed 's/ \+//;s/ \+.*//;s/x/ /')"
# zjisteni seznamu vsech Bluecherry/bluecherry otevrenych oken, pouze hodnoty "WinID Xres Yres Titulek"
win_all="$(wmctrl -l -G | grep -i bluecherry | awk '{print $1,$5,$6,$8}')"
### zjisteni WinID
# hlavni okno (poznani dle titulku Bluecherry ktere je s velkym B)
win_main_id="$(echo "${win_all}" | grep Bluecherry | awk '{print $1}')"
# okna s malejma kamerama (poznani dle rozmeru jako obrazovka znamenajici Maximalizaci (nebo Fullscreen)) + (potreba aby lista mela nastavene schovavani)
win_smallmax_id="$(echo "${win_all}" | grep "${screen_size}" | awk '{print $1}')"
# okna s 1 velkou kamerou (poznani dle toho ze neni to hlavni ani to Maximalizovane(=NEsmi byt 1big rucne nastaveno jako Maximalizovane))
win_bigwin_id="$(echo "${win_all}" | grep -v -e ${win_main_id:-dummy} -e ${win_smallmax_id} | awk '{print $1}')"
### hlavni okno
# minimalizace do ikony na liste vedle hodin (potreba nastavit "Close to tray")
wmctrl -i -c ${win_main_id} 2>/dev/null
### okno s malejma cam
# maimalizovane, pokud by bylo fullscreen tak by 1cam nebyla "vzdy nahore" proto se pripadne z fullscreen prepne na maximalizovane
wmctrl -i -r ${win_smallmax_id} -b remove,fullscreen
wmctrl -i -r ${win_smallmax_id} -b add,maximized_horz,maximized_vert
# nastaveni titulku okna (aby pri prepinani na liste nebo pres alt+tab bylo podle nazvu okna poznat rovnou pro kterej layout to je)
wmctrl -i -r ${win_smallmax_id} -N "bluecherry 4male"
### okno s vekou cam
# vypocet X souradnice
win_bigwin_xres="$((${screen_size/ *}-${ZMENSIT_BIG}))"
# maximalizovane vertikalne a rozmer okna
wmctrl -i -r ${win_bigwin_id} -b remove,maximized_horz
wmctrl -i -r ${win_bigwin_id} -b add,maximized_vert
wmctrl -i -r ${win_bigwin_id} -e 0,0,0,${win_bigwin_xres},-1
# nastaveni "vzdy nahore" (aby pri tuknuti mysi na viditelnou cast okna pro 4small-cam-vpravo zustalo stale okno 1big v popredi)
wmctrl -i -r ${win_bigwin_id} -b add,above
# nastaveni titulku okna (aby pri prepinani na liste nebo pres alt+tab bylo podle nazvu okna poznat rovnou pro kterej layout to je)
wmctrl -i -r ${win_bigwin_id} -N "bluecherry 1velka"
}
setup_client(){
blue_conf="${HOME}/.config/bluecherry/bluecherry.conf"
blue_multi_conf="${blue_conf}.$(basename ${0})"
if [ "${1}" = "storeconf" ]; then
# ulozeni aktualniho nastaveni kdyz se bluemulti spusti s parametrem storeconf, vhodne pri prvotnim nastaveni layoutu a oken
echo "INFO: Ukladam aktualni nastaveni klienta z ${blue_conf} do ${blue_multi_conf}..."
cp -b ${blue_conf} ${blue_multi_conf}
else
# ulozeni aktualniho nastaveni kdyz se bluemulti spusti s parametrem storeconf, vhodne aby pripadne kdyz nekdo nedopatrenim okno s cam zavre
echo "INFO: Obnovuji ulozene nastaveni clienta z ${blue_multi_conf} do ${blue_conf}..."
cp -a ${blue_multi_conf} ${blue_conf}
fi
}
setup_xfce
setup_client ${1}
run_client
set_windows
echo "INFO: Dokonceno..."
Pouze na zacatku si uprav dle sve potreby, o kol sem ma to 1big cam okno zprava zmensit...
Je to odzkousene v Xubuntu 18.04, pouziva prostredi Xfce ktere skript sam nastavi, pokud bys chtel pouzit jine distro co bude s Xfce prostredim, melo by nastavit take, pokud chces pouzit jine prostredi, tak musis sam nastavit aby se panel automaticky schovaval(je to proto ze okno s 4cam nemuze byt fullscreen aby mohlo byt okno s 1cam v popredi i kdyz nekdo tukne na cast 4cam) a pokud nechces u okna mit viditelne okraje, tak bys musel sam pridat nejake tema bez okraju nebo to v prostredi nastavit (u Xubuntu ci Xfce i tohle skritp resi sam)
edit: snazil sem se ty kroky "lidsky" popsat aby si se pripadne dokazal zorientovat co, proc, jak ten skript dela a pripadne mohl upravit neco podle sebe...
edit2: aby nekdo nemohl nedopatrenim zavrit okno nebo maximalizovat/fullscreenovat coz by rozhodilo ten skript pri pristim spusteni, jakmile provedes to nataveni layoutu a otevreni oken, pustis ten skript s parametrem:
bluemulti storeconf
to ulozi aktualni nastaveni "bokem" a pri kazdem spusteni pres bluemulti (das do (v Xfce) do Nastaveni/RelaceASposuteni/Automaticky) se toto nastaveni obnovi, pro prvotni odzkouseni poustej bluemulti z terminalu kde to pise informace co dela a pripadne errory
edit3: do Spusteni to das BEZ parametru storeconf, jinak by to vzdy davalo bokem i spatne zmenene nastaveni clienta, storeconf pouzijes JEN po nastaveni, pripadne kdyz bys to(layouty) pak nekdy chtel zmenit, mas to info v komentarich v skriptu ale radeji to pisu i takto