Nie sądzę, że jest to wbudowane w system, ale czy można to zrobić bez większych problemów?
Powiedzmy, że otwieram określony program za pomocą klawisza skrótu, a kiedy ponownie go naciskam, okno programu jest wyświetlane na pierwszym planie.
Chcę to zrobić w systemie Ubuntu 9.04.
Może z D-Bus? Jacyś eksperci?
Aktualizacja : Oto, z czym skończyłem na wypadek, gdyby komuś to pomogło:
#!/bin/bash
if [ -f "/tmp/myterm.pid" ]; then
WID=`cat /tmp/myterm.pid`
xdotool windowactivate $WID
if [ "$?" != "0" ]; then
WID=""
fi
else
WID=`xdotool search --title "UNIQUE TITLE" | head -1`
fi
if [ "$WID" == "" ]; then
/usr/bin/gnome-terminal --window-with-profile=MYPROFILE "$@"
WID=`xdotool search --title "UNIQUE TITLE" | head -1`
echo $WID > /tmp/myterm.pid
else
xdotool windowactivate $WID
fi
Z pewnością można to uprościć, ale nie jestem bash
czarodziejem. Ponadto, aby mój przykład działał, utworzyłem niestandardowy profil w Terminalu, który stosuje unikalny tytuł do okna, dzięki czemu można go później znaleźć. Możliwości są nieskończone!
Odpowiedzi:
wmctrl
Program jest właśnie to, czego szukasz (sudo apt-get install wmctrl
). Możesz użyćwmctrl -a "AppTitle"
polecenia, aby przenieść aplikację na pierwszy plan.wmctrl -l
wyświetli listę wszystkich dostępnych okien, więc powinno być łatwe napisanie skryptu powłoki, który sprawdza, czy program jest uruchomiony i albo go uruchamia, albo przesuwa na pierwszy plan. Następnie możesz po prostu powiązać to ze skrótem klawiaturowym.Najpierw zapisz gdzieś poniższy skrypt, użyję
/home/jtb/code/bringToFront
. Wymaga dwóch argumentów, pierwszy wpisuje się w terminalu, aby uruchomić program, drugi jest podciągiem tytułu okna programu. Jeśli w tytule nie ma stałego unikalnego ciągu, musisz znaleźć trochę więcej pracy, aby znaleźć okno programu.Skrypt w bieżącym katalogu uruchom,
chmod +x bringToFront
aby skrypt był wykonywalny. Następnie upewnij się, że działa; aby uruchomić / skoncentrować firefoxa, który możesz uruchomić./bringToFront firefox "Mozilla Firefox"
.Teraz musimy powiązać klawisz skrótu. Uruchom
gconf-editor
i przejdź do struktury folderów w lewo do/apps/metacity/keybinding_commands
.command
Prawdopodobnie dwukrotnie kliknij pierwszy z pustą wartościącommand_1
. Wpisz pełną ścieżkę do skryptu i podaj dwa parametry, np/home/jtb/code/bringToFront firefox Firefox
.Z panelu po lewej wybierz
global_keybindings
następny folder w górę.run
Prawdopodobnie znajdź wpis pasujący do właśnie zdefiniowanego poleceniarun_command_1
. Kliknij go dwukrotnie i wpisz skrót klawiaturowy, którego chcesz użyć. Umieść modyfikatory w nawiasach kątowych, np<Ctrl><Alt>F
.Teraz Control+ Alt+ Fspowoduje wyświetlenie okna Firefoksa na pierwszym planie lub uruchomienie go, jeśli jeszcze nie jest uruchomione.
źródło
Oto inny sposób, aby to zrobić
xdotools
. Proces wyskakujący jest rozpoznawany przez wiersz polecenia wydany w celu jego uruchomienia (nie jest potrzebny plik pid ani unikalny tytuł okna).źródło
Dziękuję za to. Używam jego zmodyfikowanej wersji, aby utworzyć skrypt skrótu do okna, który obsługuje także cykliczne przechodzenie między wieloma instancjami. Jeśli jesteś zainteresowany:
http://somanov.wordpress.com/2009/12/02/window-shortcuts-for-linux-desktops/
Twoje zdrowie :)
źródło
Odpowiedź opublikowana wcześniej przez jtb jest doskonała, ale czasami chcesz dopasować dokładne tytuły (np. Chcesz otworzyć „GitKraken”, ale tytuł przeglądarki „GitKraken vs CLI” również pasuje do zapytania).
Teraz możesz wywołać skrypt bringToFront w następujący sposób:
źródło
To rozwiązanie nie jest sparametryzowane, ale użyłem go do skupienia się lub uruchomienia kalkulatora gnome.
Opcja -R znajduje okno lub kończy się niepowodzeniem, jeśli zostanie znalezione, zostanie przeniesione na bieżący pulpit, podniesione i podane fokus. Nazwy kalkulatora gnome to okno z nazwą Kalkulator , można go łatwo sparametryzować, ale nigdy nie znalazłem takiej potrzeby. Mam to zmapowane
Ctrl-Alt-c
.źródło
Miałem ten sam problem i ponieważ nie znalazłem żadnego odpowiedniego rozwiązania, stworzyłem jeden:
https://hyperkeys.xureilab.com
https://github.com/xurei/hyperkeys
Możesz przypiąć okno za pomocą zdefiniowanego skrótu. Ja osobiście używam SHIFT + ALT + [QWER] do przypięcia i ALT + [QWER] do przeniesienia na przód. Nie możesz jednak otworzyć aplikacji, jeśli nie jest otwarta.
Jest to narzędzie typu open source, pierwsze w Linuksie. Dostępna jest również wersja dla systemu Windows.
Mam nadzieję, że to pomoże ! Szukam opinii, więc jeśli masz jakieś pytanie, stwórz problem ;-)
źródło