Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: otevírání aplikace na určitou plochu  (Přečteno 4923 krát)

MacHala

  • Stálý člen
  • **
  • Příspěvků: 1104
  • Big Bro iz watching joo!
    • ZlejT
otevírání aplikace na určitou plochu
« kdy: 14 Března 2009, 00:02:26 »
PROMO:
Chcete otevírat aplikace na určitou plochu a nevíte jak na to, aniž byst se museli upisovat ďáblu (respektive jíst jeho koláč)? Máme pro vás řešení! Využijte dnešní speciální nabídky. Platí jen 24 hodin denně, 7 dní v týdnu a 53-54 týdnů v roce. Proto neváhejte a změňte svůj život právě teď!


Takže k věci. Aby to fungovalo, budete potřebovat wmctrl (sudo aptitude install wmctrl), potom stačí následující skript ulozit do souboru  a nastavit spustitelný příznak. Nechcete-li nijak měnit funkčnost, zajímají vás pouze proměné KAM a PROGRAM (popis zdrojak). Po vyplnění můžete používat tento skript na spouštění dané aplikace na určenou plochu.

Kód: [Vybrat]
#!/bin/sh
KAM=2 # na kterou plochu to chci
PROGRAM=gnome-terminal # jmeno aplikace

###############################################################################

POCET_BEZICICH=`wmctrl -l| wc -l`
wmctrl -l | cut -d' ' -f1 > /tmp/wclist1.txt
$PROGRAM &
WIDTH=`xrandr --prop | sed -ne 's/^.*current\ \([0-9]*\).*/\1/p'` ## rozliseni, x-ova souradnice
COMPIZ=`ps x | grep -v grep | grep -c compiz`
while [ $POCET_BEZICICH -eq `wmctrl -l| wc -l` ]; do
sleep 1
done
wmctrl -l | cut -d' ' -f1 > /tmp/wclist2.txt
WIN_ID=`diff /tmp/wclist1.txt /tmp/wclist2.txt | cut -sd' ' -f2`
if [ $COMPIZ -eq 0 ] ; then
wmctrl -ir $WIN_ID -t `expr $KAM - 1`
else
VIEWPORT=`xprop -root | sed -ne '/_NET_DESKTOP_VIEWPORT(CARDINAL)/s/.*= \([0-9]*\),.*/\1/p'` ## na kolikatem pixlu jsme (plochy brany jako souvisly pruh)
wmctrl -ir $WIN_ID -e 0,`expr -$VIEWPORT + \( $KAM - 1 \) \* $WIDTH`,-1,-1,-1
fi
rm /tmp/wclist*
exit 0

Problémy:
-okno se na moment objeví na aktuální ploše, než se přesune na správnou plochu
-otevřete-li(zavřete) nějaké jiné okno, dřív než se otevře aplikace, spouštěná pomocí tohoto skriptu, může se chovat neočekávaně (budete-li spouštět aplikaci s předem známým unikátním titulkem okna, je triviální skript pozměnit a problému předejít)
-nebude to fungovat na apliakce otevírající více oken (např. gimp) (tohle by ale nemusel být problém změnit, za předpokladu, že se otevřou současně)
-hlašte!  ;)

Poznámky:
-vyzkoušeno v gnome/kde s compizem i bez
-volbu aplikace a plochy nenastavuju z parametru cmd, protoze predpokladam, ze z bashe se to bude spoustet minimalne, zajemci si zajiste doplni
-jestli myslite, ze to jde nejak jednoduseji/lepe tak se podelte jak na to
-při spouštění ihned po startu bych asi doporučil nastavení nějaké prodlevy (na začátek přidat řádek sleep (počet vteřin) )


Kdo bude prvním aktivním uživatelem? (autor nepoužívá, páč intelignti preferují chaos  :D )

EDIT: napraven problem se zjistenim horizontalniho rozliseni
« Poslední změna: 18 Března 2009, 18:32:11 od MacHala »
Prislusnik ligy, za kreativni pouzivani interpunkcnich znamenek, carek, predevsim.
=======================================
Tweetuju jako http://twitter.com/zl8

t211

  • Návštěvník
  • Příspěvků: 29
Re: otevírání aplikace na určitou plochu
« Odpověď #1 kdy: 14 Března 2009, 00:41:55 »
Právě jsem ten skript vyzkoušel. Je to hezké.

PeLima

  • Návštěvník
  • Příspěvků: 23
Re: otevírání aplikace na určitou plochu
« Odpověď #2 kdy: 18 Března 2009, 15:26:39 »
Děkuju za nápad. Marně jsem se delší dobu snažil nějak k tomu ty aplikace přinutit.
Ale když chci aplikaci spouštět na 3 ploše, spustí se mi na druhé ploše, úplně vpravo nahoře. Není chyba v odečítání jedničky na řádku
wmctrl -ir $WIN_ID -e 0,`expr -$VIEWPORT + \( $KAM - 1 \) \* $WIDTH`,-1,-1,-1  ?

MacHala

  • Stálý člen
  • **
  • Příspěvků: 1104
  • Big Bro iz watching joo!
    • ZlejT
Re: otevírání aplikace na určitou plochu
« Odpověď #3 kdy: 18 Března 2009, 17:37:43 »
Děkuju za nápad. Marně jsem se delší dobu snažil nějak k tomu ty aplikace přinutit.
Ale když chci aplikaci spouštět na 3 ploše, spustí se mi na druhé ploše, úplně vpravo nahoře. Není chyba v odečítání jedničky na řádku
wmctrl -ir $WIN_ID -e 0,`expr -$VIEWPORT + \( $KAM - 1 \) \* $WIDTH`,-1,-1,-1  ?
ne, tam chyba neni (aspon nikde, kde jsem to zkousel, nebyla)...

jestli pouzivas compiz, tak spis myslim, ze to nacetlo spatne horizontalni rozliseni (resp. asi jsem pouzil spatnou cast vypisu na zjisteni)

muzes, prosim, napsat, jake mas rozliseni a co vypise prikaz
Kód: [Vybrat]
xprop -root | grep _NET_WORKAREA\(CARDINAL\)?
« Poslední změna: 18 Března 2009, 18:01:07 od MacHala »
Prislusnik ligy, za kreativni pouzivani interpunkcnich znamenek, carek, predevsim.
=======================================
Tweetuju jako http://twitter.com/zl8

PeLima

  • Návštěvník
  • Příspěvků: 23
Re: otevírání aplikace na určitou plochu
« Odpověď #4 kdy: 18 Března 2009, 17:58:19 »
Monitor mám nastavený na 1680x1050
Kód: [Vybrat]
xprop -root | grep _NET_WORKAREA\(CARDINAL\)mi vrátí :
CUT_BUFFER0(STRING) = "_NET_WORKAREA(CARDINAL) = 24, 25, 1656, 1000"
_NET_WORKAREA(CARDINAL) = 24, 25, 1656, 1000

.... to je dobře, nebo špatně?

MacHala

  • Stálý člen
  • **
  • Příspěvků: 1104
  • Big Bro iz watching joo!
    • ZlejT
Re: otevírání aplikace na určitou plochu
« Odpověď #5 kdy: 18 Března 2009, 18:13:27 »
Monitor mám nastavený na 1680x1050
Kód: [Vybrat]
xprop -root | grep _NET_WORKAREA\(CARDINAL\)mi vrátí :
CUT_BUFFER0(STRING) = "_NET_WORKAREA(CARDINAL) = 24, 25, 1656, 1000"
_NET_WORKAREA(CARDINAL) = 24, 25, 1656, 1000

.... to je dobře, nebo špatně?
to zalezi na uhlu pohledu, kazdopadne jsem tam ale udelal chybu... v promene WIDTH by melo byt 1680 a u tebe je tam jen 1656...
zatim si zmen radek WIDTH=`xprop... na WIDTH=1680 , chvilku mi bude trvat, nez zjistim jak to udelat univerzalne spravne...

EDIT:
bylo to trivialni, aby to fungovalo univerzalne, staci ten radek zmenit na: WIDTH=`xrandr --prop | sed -ne 's/^.*current\ \([0-9]*\).*/\1/p'`
(aspon doufam)
« Poslední změna: 18 Března 2009, 18:29:56 od MacHala »
Prislusnik ligy, za kreativni pouzivani interpunkcnich znamenek, carek, predevsim.
=======================================
Tweetuju jako http://twitter.com/zl8

Fuzzy

  • Aktivní člen
  • *
  • Příspěvků: 128
    • www.jarosov.org
Re: otevírání aplikace na určitou plochu
« Odpověď #6 kdy: 18 Března 2009, 20:42:58 »
v cem je vas postup lepsi od pouzivani devilspie? Podle me mnohem jednodussi konfigurace... Par prikazu a nastavim plochu, pozici, velikost atd. kazdeho spusteneho okna.
doma:Lenovo SL500, Ubuntu 10.10 + win XP, Lenovo S12 (VIA NANO), Ubuntu 10.10
práce: HP550, Ubuntu 10.04

PeLima

  • Návštěvník
  • Příspěvků: 23
Re: otevírání aplikace na určitou plochu
« Odpověď #7 kdy: 19 Března 2009, 10:21:31 »
Super, to je ono co jsem hledal! To je o tom, že vím co asi chci udělat, ale nevím, jak se jmenuje příslušný program, ještě jednou díky.
A dkonce je na to tady i návod http://wiki.ubuntu.cz/Automatické%20rozmisťování%20oken. Sice v návodu píšou že je jeho : "...vlastnosti jsou užitečné především pro uživatele kteří nejsou zvyklí na používání virtuálních ploch a tento program jim pomůže udržet pořádek ve změti oken...", ale co je začátečnického na tom, že nechci 20 programů spouštět na první ploše a pak je denodenně ručně přemisťovat na plochy následující aby se s tím dalo pracovat, když už si to ty programy nedokážou zapamatovat automaticky.


MacHala

  • Stálý člen
  • **
  • Příspěvků: 1104
  • Big Bro iz watching joo!
    • ZlejT
Re: otevírání aplikace na určitou plochu
« Odpověď #8 kdy: 19 Března 2009, 22:18:34 »
v cem je vas postup lepsi od pouzivani devilspie? Podle me mnohem jednodussi konfigurace... Par prikazu a nastavim plochu, pozici, velikost atd. kazdeho spusteneho okna.
a) tykej mi
b) vysvetli, co muze byt jednodusi nez napsat jmeno aplikace a cislo plochy (nemluve o tom, ze na rozumnych distrech neni potreba vubec nic instalovat)
c) devil's pie je gnome only, tohle by melo fungovat vsude, kde je podporovano EWMH
d) tem, kteri o tom nevi, jsem chtel ukazat, ze manipulovat s okny jde i jinak, nez jsou zvykli a trochu je inspirovat (koneckoncu, devils pie neni zadny zazrak - a to nemluvim o prenositelnosti - nastavi jen vychozi bod - naproti tomu wmctrl je nastroj, kterym muzes delat s okny psi kusy naprosto kdykoliv)
Prislusnik ligy, za kreativni pouzivani interpunkcnich znamenek, carek, predevsim.
=======================================
Tweetuju jako http://twitter.com/zl8

qUAKER

  • Host
Re: otevírání aplikace na určitou plochu
« Odpověď #9 kdy: 20 Března 2009, 14:41:49 »
jen bych chtěl říct, že pro uživatele prostředí Enlightenment DR17 není nutné toto použít a tato funkcionalita už je zabudována.

Stačí kliknout pravým na titlebar, dát Vlastnosti okna, zaškrtnout způsob jakým si to pamatovat(podle třídy atd) a pak zaškrtnout vlastnosti(pozici, virtuální plochu, styl okraje..)

PeLima

  • Návštěvník
  • Příspěvků: 23
Re: otevírání aplikace na určitou plochu
« Odpověď #10 kdy: 20 Března 2009, 15:50:42 »
No, předpokládal bych, že rozumné distro si bude umět nějakým způsobem uložit velikost, pozici okna a atributy "vždy na viditelné ploše" a "vždy navrchu". Třeba mě maximálně opruzuje, když si musím po každém restartu všechny spuštěné věci znovu přeuspořádat podle sebe.
Že je devil's pie Gnome only mi momentálně nevadí taky jsem Gnome only. Tvoje řešení je sice méně komplexní, ale zase pro okamžité použití mnohem rychlejší a jednodušší, dík za ně a za ukázku práce s wmctrl. Asi mi bude chilku trvat, než přečtu a strávím man wmctrl.

....
b) vysvetli, co muze byt jednodusi nez napsat jmeno aplikace a cislo plochy (nemluve o tom, ze na rozumnych distrech neni potreba vubec nic instalovat)
c) devil's pie je gnome only, tohle by melo fungovat vsude, kde je podporovano EWMH
d) tem, kteri o tom nevi, jsem chtel ukazat, ze manipulovat s okny jde i jinak, nez jsou zvykli a trochu je inspirovat (koneckoncu, devils pie neni zadny zazrak - a to nemluvim o prenositelnosti - nastavi jen vychozi bod - naproti tomu wmctrl je nastroj, kterym muzes delat s okny psi kusy naprosto kdykoliv)

 

Provoz zaštiťuje spolek OpenAlt.