Linux: Przenoszenie okien na inne pulpity - www.srebniak.pl
Linux: Przenoszenie okien na inne pulpity
9 stycznia 2013
Categories: Linux
Witam. Niedawno miałem problem z ciekawym kalendarzem jakim jest rainlendar2. Standardowo okna pokazywane są na wszystkich pulpitach, jednak bez problemu możemy to zmienić w oknie ustawień. Sęk w tym, że program uruchamiany jest na aktualnym pulpicie, czyli przy autostarcie jest to pulpit pierwszy. Dodatkowo przy trzech oknach programu nie da się posługiwać ich nazwami, potrzebujemy ID ich okien.
Problem rozwiązałem za pomocą programu wmctrl i odpowiedniego skryptu.
#!/bin/bash
################
# konfiguracja #
################
# numer pulpitu, na który chcemy przenieść aplikację
# (pierwszy pulpit ma indeks 0!)
desktop=3;

#nazwa aplikacji
app=rainlendar2;

#uruchamiamy rainlendar jako proces w tle
# ( & <- nie czeka na zakończenie procesu, bez tego nie będzie działać)
$app &

pid=`pidof -s $app`;
x=0;

#jesli dlugosc zmiennej x jest mniejsza niz 5
while [ ${#x} -lt 5 ] ; do
# pobiera aktywne okna zawierajace PID
x=`wmctrl -lp | grep $pid`
#czeka sekunde, okno moze jeszcze nie istniec
sleep 1
done

# pobiera ID okien i zapisuje skrypt do wykonania
wmctrl -lp | awk '$3 == "’$pid’" { print "wmctrl -i -r " $1 " -t '$desktop’" }’ > /tmp/execute.sh

# ustawia prawa dostepu do skryptu wykonanego przez awk
chmod +x /tmp/execute.sh

# wykonuje skrypt
sh /tmp/execute.sh

rm -f /tmp/execute.sh
Konfiguracja:
  • desktop: numer pulpitu, na który chcemy przenieść aplikację.
  • app: nazwa aplikacji do uruchomienia.
Mam nadzieję, że skrypt okaże się pomocny. Sprawdzony na Cinnamonie ale powinien działać również na innych menedżerach okien.

Zapraszam do komentowania!
© 2021 Więcej informacji
o mnie