Відкрийте вже запущену програму через термінал


10

Як перейти на вже запущену програму за допомогою терміналу?

Для прикладу:

firefox відкриває нове вікно Firefox.

Чи є команда, яка зосередить уже відкрите вікно firefox?


1
Виходячи з прийнятої відповіді, я думаю, ви хотіли зосередити наявне вікно, а не відкрити нове вікно. Я надіслав редагування для уточнення, але він очікує на розгляд.
jpaugh

Відповіді:


14

Як однолінійний

Якщо припустимо, що ви встановили wmctrl (запустіть, sudo apt-get install wmctrlякщо ні):

Команда:

wmctrl -ia "$(wmctrl -lp | grep "$(pgrep gedit)" | tail -1 | awk '{ print $1 }')"

Підніме останнє відкрите geditвікно. Замініть його будь-яким іншим додатком.

Пояснення

pgrep gedit

отримує під gedit

wmctrl -lp

перелічує всі вікна та підручник, до якого вони належать

awk '{ print $1 }'

розбиває вікно-id (перша рядок у рядку)

$(wmctrl -lp | grep "$(pgrep gedit)" | tail -1 | awk '{ print $1 }')

тому знаходить ідентифікатор вікна останнього створеного вікна gedit(виведення wmctrl -lpсписків вікон у хронологічному порядку створення, якщо програма має кілька вікон, tail -1повертає останнє).

wmctrl -ia

згодом піднімає вікно своїм window-id

Невеликим сценарієм

... запускається з додатком як аргумент:

#!/bin/bash

wmctrl -ia "$(wmctrl -lp | grep "$(pgrep "$1")" | tail -1 | awk '{ print $1 }')"
  • Збережіть його у порожній файл як switchto.sh
  • Зробіть його виконуваним
  • Запустити його як (наприклад)

    /path/to/switchto.sh firefox
    

Альтернативи?

Теоретично команда:

xdotool search --class gedit windowactivate

повинен робити (вид) те саме; в цьому випадку воно повинно підняти перше знайдене вікно gedit.
Однак це здається менш надійним. У моїй системі (Єдність) вона взагалі нічого не робила.


1

Якщо ви запустили Firefox за допомогою, firefox &ви можете jobsпереглянути його номер. Щоб вивести його на передній план, напишіть, %n firefoxщо nозначає його номер. Приклад:

sabrina@ubuntu:~$ jobs
[1]+ Stopped      firefox
sabrina@ubuntu:~$ fg %1

Також ви можете "вбити" програму:

sabrina@ubuntu:~$ kill %1
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.