Aby mieć możliwość minimalizacji „okno” poprzez kliknięcie prawym przyciskiem myszy na ikonę w wyrzutni Unity (Ubuntu 14.04), I po szczegółowe instrukcje tutaj o zmianę .desktop
pliku i wykonane niestandardowego Firefox
wyrzutni w ~/.local/share/applications/
folderze. Odpowiednia część pliku .desktop to:
Actions=NewWindow;NewPrivateWindow;Minimize
[Desktop Action NewWindow]
Name=Open a New Window
Exec=firefox -new-window
OnlyShowIn=Unity;
[Desktop Action NewPrivateWindow]
Name=Open a New Private Window
Exec=firefox -private-window
OnlyShowIn=Unity;
[Desktop Action Minimize]
Name=Minimize Windows
Exec=sh /home/myusername/Documents/xdotool_sh/minimize.sh firefox
OnlyShowIn=Unity;
Akcja „Minimalizuj” na pulpicie wywołuje prosty skrypt powłoki, minimize.sh
który ma następującą treść:
#/bin/bash
name=$1
for i in $(xdotool search --class "$name"); do
xdotool windowminimize $i
done
Skrypt wykorzystuje xdotool
, które można zainstalować z oficjalnych repozytoriów, aby znaleźć wszystkie firefox
okna, iterować je i minimalizować.
Skrypt działa, a opcja menu uruchamiania „Minimalizuj system Windows” również działa, ale gdy tylko okna zostaną zminimalizowane, wskaźnik myszy przechodzi w tryb „zajęty” i pozostaje taki przez około 20 sekund (chociaż akcje myszy są nadal czuły).
Czy ktoś wie, dlaczego uruchomienie skryptu powłoki z odpowiedniej opcji menu w Unity może prowadzić do takiego zachowania?
EDYCJA : Najwyraźniej okres oczekiwania jest nieunikniony, jak wyjaśniono w odpowiedzi Jacoba Vlijma. Ponieważ mysz pozostaje responsywna, uniknięcie transformacji wskaźnika w obracającym się kole jest częściowym obejściem estetycznym, jak wyjaśniono na askubuntu .
EDYCJA 2 : nadanie systemowi fałszywego okna jest lepszym rozwiązaniem, jak wyjaśnił Jacob poniżej.
Odpowiedzi:
Doskonałe pytanie.
Powód
Zwykle podczas uruchamiania aplikacji GUI z Unity Launcher, program uruchamiający czeka na pojawienie się okna. Podczas oczekiwania pokazuje „obracające się koło”. Nie będzie jednak czekać wiecznie; po około 20 sekundach program uruchamiający zakłada, że okno się nie pojawi i rezygnuje z czekania.
1. Główne polecenie programu uruchamiającego aplikację
W
.desktop
pliku dotyczącym pierwszegoExec=
wiersza (polecenia głównego) możesz powiedzieć programowi uruchamiającemu, aby poczekał lub nie, w wierszu:aby poczekać, lub
żeby nie czekać.
2. Skrócona lista elementów programu uruchamiającego
Jednak w przypadku możliwych szybkich pozycji (kliknięcie prawym przyciskiem) elementów uruchamiających domyślną wartością jest
StartupNotify=true
. Niestety, ta wartość jest stała i nie może być zmieniona przez nic.Oznacza to, że jeśli uruchomisz dowolne polecenie, klikając prawym przyciskiem myszy ikonę programu uruchamiającego w Unity Launcher, program uruchamiający oczekuje okna i czeka na niego, pokazując obracające się koło.
Najważniejsze jest to, że chociaż można to wyjaśnić, wydaje się, że obecnie nie ma rozwiązania tego problemu, oprócz stworzenia dedykowanego programu uruchamiającego dla skryptu i dodania wiersza
StartupNotify=false
do pliku.Dowód
Możesz sam sprawdzić zachowanie. Utwórz dwa wyrzutnie:
i:
Zapisz je jako
test1.desktop
itest2.desktop
przeciągnij oba programy uruchamiające do programu uruchamiającego Unity. Kliknij je i zobacz różnicę w zachowaniu.Edytować; jeśli naprawdę Ci to przeszkadza, nakarm Unity fałszywym oknem
Jeśli masz wiele skryptów na krótkich listach i / lub naprawdę Ci to przeszkadza, istnieje inne rozwiązanie kosmetyczne; możemy sfałszować , niewidoczny (w pełni przezroczysty), aby pokazać okno, które zostanie uwzględnione w twoim skrypcie. Twój skrypt byłby wtedy (np.)
gdzie polecenie
fake_window
wywoła nasze (fałszywe) okno, sprawiając, że Unity zakończy wirujące koło.Jak skonfigurować
~/bin
Skopiuj poniższy skrypt do pustego pliku, zapisz go jako
fake_window
(bez rozszerzenia)~/bin
i włączDodaj na samym końcu skryptu polecenie:
Wyloguj się i zaloguj ponownie (lub uruchom
source ~/.profile
)To wszystko, koło będzie się teraz obracać tylko tak długo, jak długo uruchomi się skrypt.
Wyjaśnienie
Skrypt ma stworzyć minimalistyczny okno. Okno jest jednak w pełni przezroczyste i ma rozmiar 0x0 pikseli i dlatego jest niewidoczne. Zniszczy się natychmiast, gdy będzie istniał.
Wywołując okno na końcu skryptu, spełnisz życzenie Unity dotyczące okna, zatrzymując koło.
źródło
Chciałem tylko dodać alternatywną implementację fałszywego okna, która jest nieco prostsza i nie wyzwala ostrzeżeń pythonowych w systemie Ubuntu 16.04.
źródło