Команда для активации (запуска или запуска вперед, если она уже запущена) программы

Вы должны найти свою версию графического драйвера в файле /var/log/Xorg.0.log. Будет несколько вхождений, но поиск строки «LoadModule». Когда вы подключаетесь к названию с вашим именем адаптера дисплея, например fglrx для проприетарного драйвера ATI, следующие несколько строк должны показывать версию вашего драйвера.

Например, моя система имеет: [!d1 ]

[    15.540] (II) LoadModule: "fglrx"
[    15.540] (II) Loading /usr/lib/x86_64-linux-gnu/xorg/extra-modules/extra-modules.dpkg-tmp/modules/drivers/fglrx_drv.so
[    15.549] (II) Module fglrx: vendor="FireGL - ATI Technologies Inc."
[    15.549]    compiled for 1.4.99.906, module version = 8.95.3
6
задан 18 November 2010 в 03:31

33 ответа

Маленький bash и xdotool должны сделать трюк. Примечания по установке xdotool в конце сообщения.

ActivateOrLaunch.sh

#!/usr/bin/env bash

# usage:
#    ActivateOrLaunch.sh firefox-bin
#
# Will launch firefox-bin or activate the first window in the windows stack
# --- Remember to chmod a+x ActivateOrLaunch.sh in order to execute.

# pgrep looks through the currently running processes and lists the process
#       IDs which matches the selection criteria to stdout
#       for more information on pgrep http://linux.die.net/man/1/pgrep

# if process is found by pgrep then pipe through head to get firt instance in
#    case of multiple processes running. If process not found $pid will be empty
pid=$(pgrep ${1} | head -n 1)

# Using "-z" check if $pid is empty, if so execute the process
if [ -z "$pid" ]; then
   echo "$1 not running... executing..."
   $1 &
else
   # process was found, find the first visible window and activate it
   echo "Found process $1 with PID $pid"

   # using xdotool [http://www.semicomplete.com/projects/xdotool/] get the first
   # visible windows using $pid. Redirect stderr to /dev/null and only select
   # the first visible windows using head
   wid=$(xdotool search --onlyvisible --pid $pid 2>/dev/null | head -n 1)

   # if $wid is empty the process does not have any visible windows... do nothing
   if [ -z "$wid" ]; then
     echo "Didn't find any visible windows for process $1 with PID: $pid"
   else
     # send the window id ($wid) from the window stack to xdotool
     echo "Activating first windows in stack"
     xdotool windowactivate $wid
   fi
fi

# ******** NOTES **********
# In order for this script to work correctly you need to pass the complete process 
# name for it to find any visible windows. The process needs needs to be in the path
# for it to execute if not running.
#
# For example
#
# If you try it with firefox-bin on Ubuntu 10.10 it will find the running process and 
# activate the window, but it will not be able to launch the process since the executable 
# in the path is called firefox which is a link to firefox.sh
# (/usr/bin/firefox -> ../lib/firefox-3.6.12/firefox.sh) which in turn executes firefox-bin
# (not in path).
#
# Next, if you use firefox it will find a process but won't be able to find any windows 
# since it's a wrapper function calling firefox-bin and doesn't have any windows. 

Вы можете найти код на xdotool

Я протестировал код на Ubuntu 10.10 (Gnome), и он сработал. Мне нужно немного полировать, так как я просто набрал его и не беспокоился о том, чтобы сделать его красивым (хотелось бы получить комментарии)

Чтобы установить xdotool, вы можете apt-get install xdotool (form me эта извлеченная версия 2.20100701.2691), если вы хотите получить самую последнюю и самую лучшую информацию отсюда (по состоянию на 20101116 это как версия 2.20101012.3049-4)

5
ответ дан 26 May 2018 в 00:23
  • 1
    Все, это лучше, чем у меня :) Приятно, краду его! – Jeremy 17 November 2010 в 06:26
  • 2
    Я загружаю его до github, вероятно, завтра ... Я отправлю ссылку в качестве комментария. Нужно сначала почистить его. – SiliconChaos 17 November 2010 в 07:33
  • 3
    Как оказалось, я пытаюсь использовать этот скрипт для сопоставления с медиа-ключом на моей клавиатуре. Поэтому я могу просто запрограммировать его для поиска точной фразы. – David Oneill 18 November 2010 в 19:08

Маленький bash и xdotool должны сделать трюк. Примечания по установке xdotool в конце сообщения.

ActivateOrLaunch.sh

#!/usr/bin/env bash # usage: # ActivateOrLaunch.sh firefox-bin # # Will launch firefox-bin or activate the first window in the windows stack # --- Remember to chmod a+x ActivateOrLaunch.sh in order to execute. # pgrep looks through the currently running processes and lists the process # IDs which matches the selection criteria to stdout # for more information on pgrep http://linux.die.net/man/1/pgrep # if process is found by pgrep then pipe through head to get firt instance in # case of multiple processes running. If process not found $pid will be empty pid=$(pgrep ${1} | head -n 1) # Using "-z" check if $pid is empty, if so execute the process if [ -z "$pid" ]; then echo "$1 not running... executing..." $1 & else # process was found, find the first visible window and activate it echo "Found process $1 with PID $pid" # using xdotool [http://www.semicomplete.com/projects/xdotool/] get the first # visible windows using $pid. Redirect stderr to /dev/null and only select # the first visible windows using head wid=$(xdotool search --onlyvisible --pid $pid 2>/dev/null | head -n 1) # if $wid is empty the process does not have any visible windows... do nothing if [ -z "$wid" ]; then echo "Didn't find any visible windows for process $1 with PID: $pid" else # send the window id ($wid) from the window stack to xdotool echo "Activating first windows in stack" xdotool windowactivate $wid fi fi # ******** NOTES ********** # In order for this script to work correctly you need to pass the complete process # name for it to find any visible windows. The process needs needs to be in the path # for it to execute if not running. # # For example # # If you try it with firefox-bin on Ubuntu 10.10 it will find the running process and # activate the window, but it will not be able to launch the process since the executable # in the path is called firefox which is a link to firefox.sh # (/usr/bin/firefox -> ../lib/firefox-3.6.12/firefox.sh) which in turn executes firefox-bin # (not in path). # # Next, if you use firefox it will find a process but won't be able to find any windows # since it's a wrapper function calling firefox-bin and doesn't have any windows.

Вы можете найти код на xdotool

Я протестировал код на Ubuntu 10.10 (Gnome), и он сработал. Мне нужно немного полировать, так как я просто набрал его и не беспокоился о том, чтобы сделать его красивым (хотелось бы получить комментарии)

Чтобы установить xdotool, вы можете apt-get install xdotool (form me эта извлеченная версия 2.20100701.2691), если вы хотите получить самую последнюю и самую лучшую информацию отсюда (по состоянию на 20101116 это как версия 2.20101012.3049-4)

5
ответ дан 25 July 2018 в 22:52

Маленький bash и xdotool должны сделать трюк. Примечания по установке xdotool в конце сообщения.

ActivateOrLaunch.sh

#!/usr/bin/env bash # usage: # ActivateOrLaunch.sh firefox-bin # # Will launch firefox-bin or activate the first window in the windows stack # --- Remember to chmod a+x ActivateOrLaunch.sh in order to execute. # pgrep looks through the currently running processes and lists the process # IDs which matches the selection criteria to stdout # for more information on pgrep http://linux.die.net/man/1/pgrep # if process is found by pgrep then pipe through head to get firt instance in # case of multiple processes running. If process not found $pid will be empty pid=$(pgrep ${1} | head -n 1) # Using "-z" check if $pid is empty, if so execute the process if [ -z "$pid" ]; then echo "$1 not running... executing..." $1 & else # process was found, find the first visible window and activate it echo "Found process $1 with PID $pid" # using xdotool [http://www.semicomplete.com/projects/xdotool/] get the first # visible windows using $pid. Redirect stderr to /dev/null and only select # the first visible windows using head wid=$(xdotool search --onlyvisible --pid $pid 2>/dev/null | head -n 1) # if $wid is empty the process does not have any visible windows... do nothing if [ -z "$wid" ]; then echo "Didn't find any visible windows for process $1 with PID: $pid" else # send the window id ($wid) from the window stack to xdotool echo "Activating first windows in stack" xdotool windowactivate $wid fi fi # ******** NOTES ********** # In order for this script to work correctly you need to pass the complete process # name for it to find any visible windows. The process needs needs to be in the path # for it to execute if not running. # # For example # # If you try it with firefox-bin on Ubuntu 10.10 it will find the running process and # activate the window, but it will not be able to launch the process since the executable # in the path is called firefox which is a link to firefox.sh # (/usr/bin/firefox -> ../lib/firefox-3.6.12/firefox.sh) which in turn executes firefox-bin # (not in path). # # Next, if you use firefox it will find a process but won't be able to find any windows # since it's a wrapper function calling firefox-bin and doesn't have any windows.

Вы можете найти код на xdotool

Я протестировал код на Ubuntu 10.10 (Gnome), и он сработал. Мне нужно немного полировать, так как я просто набрал его и не беспокоился о том, чтобы сделать его красивым (хотелось бы получить комментарии)

Чтобы установить xdotool, вы можете apt-get install xdotool (form me эта извлеченная версия 2.20100701.2691), если вы хотите получить самую последнюю и самую лучшую информацию отсюда (по состоянию на 20101116 это как версия 2.20101012.3049-4)

5
ответ дан 27 July 2018 в 01:06

Маленький bash и xdotool должны сделать трюк. Примечания по установке xdotool в конце сообщения.

ActivateOrLaunch.sh

#!/usr/bin/env bash # usage: # ActivateOrLaunch.sh firefox-bin # # Will launch firefox-bin or activate the first window in the windows stack # --- Remember to chmod a+x ActivateOrLaunch.sh in order to execute. # pgrep looks through the currently running processes and lists the process # IDs which matches the selection criteria to stdout # for more information on pgrep http://linux.die.net/man/1/pgrep # if process is found by pgrep then pipe through head to get firt instance in # case of multiple processes running. If process not found $pid will be empty pid=$(pgrep ${1} | head -n 1) # Using "-z" check if $pid is empty, if so execute the process if [ -z "$pid" ]; then echo "$1 not running... executing..." $1 & else # process was found, find the first visible window and activate it echo "Found process $1 with PID $pid" # using xdotool [http://www.semicomplete.com/projects/xdotool/] get the first # visible windows using $pid. Redirect stderr to /dev/null and only select # the first visible windows using head wid=$(xdotool search --onlyvisible --pid $pid 2>/dev/null | head -n 1) # if $wid is empty the process does not have any visible windows... do nothing if [ -z "$wid" ]; then echo "Didn't find any visible windows for process $1 with PID: $pid" else # send the window id ($wid) from the window stack to xdotool echo "Activating first windows in stack" xdotool windowactivate $wid fi fi # ******** NOTES ********** # In order for this script to work correctly you need to pass the complete process # name for it to find any visible windows. The process needs needs to be in the path # for it to execute if not running. # # For example # # If you try it with firefox-bin on Ubuntu 10.10 it will find the running process and # activate the window, but it will not be able to launch the process since the executable # in the path is called firefox which is a link to firefox.sh # (/usr/bin/firefox -> ../lib/firefox-3.6.12/firefox.sh) which in turn executes firefox-bin # (not in path). # # Next, if you use firefox it will find a process but won't be able to find any windows # since it's a wrapper function calling firefox-bin and doesn't have any windows.

Вы можете найти код на xdotool

Я протестировал код на Ubuntu 10.10 (Gnome), и он сработал. Мне нужно немного полировать, так как я просто набрал его и не беспокоился о том, чтобы сделать его красивым (хотелось бы получить комментарии)

Чтобы установить xdotool, вы можете apt-get install xdotool (form me эта извлеченная версия 2.20100701.2691), если вы хотите получить самую последнюю и самую лучшую информацию отсюда (по состоянию на 20101116 это как версия 2.20101012.3049-4)

5
ответ дан 31 July 2018 в 11:19

Маленький bash и xdotool должны сделать трюк. Примечания по установке xdotool в конце сообщения.

ActivateOrLaunch.sh

#!/usr/bin/env bash # usage: # ActivateOrLaunch.sh firefox-bin # # Will launch firefox-bin or activate the first window in the windows stack # --- Remember to chmod a+x ActivateOrLaunch.sh in order to execute. # pgrep looks through the currently running processes and lists the process # IDs which matches the selection criteria to stdout # for more information on pgrep http://linux.die.net/man/1/pgrep # if process is found by pgrep then pipe through head to get firt instance in # case of multiple processes running. If process not found $pid will be empty pid=$(pgrep ${1} | head -n 1) # Using "-z" check if $pid is empty, if so execute the process if [ -z "$pid" ]; then echo "$1 not running... executing..." $1 & else # process was found, find the first visible window and activate it echo "Found process $1 with PID $pid" # using xdotool [http://www.semicomplete.com/projects/xdotool/] get the first # visible windows using $pid. Redirect stderr to /dev/null and only select # the first visible windows using head wid=$(xdotool search --onlyvisible --pid $pid 2>/dev/null | head -n 1) # if $wid is empty the process does not have any visible windows... do nothing if [ -z "$wid" ]; then echo "Didn't find any visible windows for process $1 with PID: $pid" else # send the window id ($wid) from the window stack to xdotool echo "Activating first windows in stack" xdotool windowactivate $wid fi fi # ******** NOTES ********** # In order for this script to work correctly you need to pass the complete process # name for it to find any visible windows. The process needs needs to be in the path # for it to execute if not running. # # For example # # If you try it with firefox-bin on Ubuntu 10.10 it will find the running process and # activate the window, but it will not be able to launch the process since the executable # in the path is called firefox which is a link to firefox.sh # (/usr/bin/firefox -> ../lib/firefox-3.6.12/firefox.sh) which in turn executes firefox-bin # (not in path). # # Next, if you use firefox it will find a process but won't be able to find any windows # since it's a wrapper function calling firefox-bin and doesn't have any windows.

Вы можете найти код на xdotool

Я протестировал код на Ubuntu 10.10 (Gnome), и он сработал. Мне нужно немного полировать, так как я просто набрал его и не беспокоился о том, чтобы сделать его красивым (хотелось бы получить комментарии)

Чтобы установить xdotool, вы можете apt-get install xdotool (form me эта извлеченная версия 2.20100701.2691), если вы хотите получить самую последнюю и самую лучшую информацию отсюда (по состоянию на 20101116 это как версия 2.20101012.3049-4)

5
ответ дан 31 July 2018 в 12:20

Маленький bash и xdotool должны сделать трюк. Примечания по установке xdotool в конце сообщения.

ActivateOrLaunch.sh

#!/usr/bin/env bash # usage: # ActivateOrLaunch.sh firefox-bin # # Will launch firefox-bin or activate the first window in the windows stack # --- Remember to chmod a+x ActivateOrLaunch.sh in order to execute. # pgrep looks through the currently running processes and lists the process # IDs which matches the selection criteria to stdout # for more information on pgrep http://linux.die.net/man/1/pgrep # if process is found by pgrep then pipe through head to get firt instance in # case of multiple processes running. If process not found $pid will be empty pid=$(pgrep ${1} | head -n 1) # Using "-z" check if $pid is empty, if so execute the process if [ -z "$pid" ]; then echo "$1 not running... executing..." $1 & else # process was found, find the first visible window and activate it echo "Found process $1 with PID $pid" # using xdotool [http://www.semicomplete.com/projects/xdotool/] get the first # visible windows using $pid. Redirect stderr to /dev/null and only select # the first visible windows using head wid=$(xdotool search --onlyvisible --pid $pid 2>/dev/null | head -n 1) # if $wid is empty the process does not have any visible windows... do nothing if [ -z "$wid" ]; then echo "Didn't find any visible windows for process $1 with PID: $pid" else # send the window id ($wid) from the window stack to xdotool echo "Activating first windows in stack" xdotool windowactivate $wid fi fi # ******** NOTES ********** # In order for this script to work correctly you need to pass the complete process # name for it to find any visible windows. The process needs needs to be in the path # for it to execute if not running. # # For example # # If you try it with firefox-bin on Ubuntu 10.10 it will find the running process and # activate the window, but it will not be able to launch the process since the executable # in the path is called firefox which is a link to firefox.sh # (/usr/bin/firefox -> ../lib/firefox-3.6.12/firefox.sh) which in turn executes firefox-bin # (not in path). # # Next, if you use firefox it will find a process but won't be able to find any windows # since it's a wrapper function calling firefox-bin and doesn't have any windows.

Вы можете найти код на xdotool

Я протестировал код на Ubuntu 10.10 (Gnome), и он сработал. Мне нужно немного полировать, так как я просто набрал его и не беспокоился о том, чтобы сделать его красивым (хотелось бы получить комментарии)

Чтобы установить xdotool, вы можете apt-get install xdotool (form me эта извлеченная версия 2.20100701.2691), если вы хотите получить самую последнюю и самую лучшую информацию отсюда (по состоянию на 20101116 это как версия 2.20101012.3049-4)

5
ответ дан 2 August 2018 в 04:16

Маленький bash и xdotool должны сделать трюк. Примечания по установке xdotool в конце сообщения.

ActivateOrLaunch.sh

  #! / Usr / bin / env bash # use: # ActivateOrLaunch.sh firefox-bin # #  Запустит firefox-bin или активирует первое окно в стеке стека # --- Запомните chmod a + x ActivateOrLaunch.sh для выполнения.  # pgrep просматривает текущие запущенные процессы и перечисляет идентификаторы # процесса, которые соответствуют критериям выбора для stdout #, для получения дополнительной информации о pgrep http://linux.die.net/man/1/pgrep #, если процесс найден pgrep, тогда  труба через голову, чтобы получить экземпляр firt в # случае нескольких запущенных процессов.  Если процесс не найден, $ pid будет пустым. Pid = $ (pgrep $ {1} | head -n 1) # Используя «-z», проверьте, что $ pid пуст, если он выполнит процесс, если [-z "$ pid"  ];  затем эхо "$ 1 не работает ... выполняется ..." $ 1 & amp;  else # был найден, найти первое видимое окно и активировать его echo «Найдено процесс $ 1 с PID $ pid» # с помощью xdotool [http://www.semicomplete.com/projects/xdotool/] получить первые # видимые окна, используя  $ PID.  Перенесите stderr в / dev / null и выберите только # первые видимые окна, используя head wid = $ (xdotool search --onlyvisible --pid $ pid 2 & gt; / dev / null | head -n 1) #, если $ wid пуст,  процесс не имеет видимых окон ... ничего не делать, если [-z "$ wid"];  затем echo «Не нашел видимых окон для процесса $ 1 с PID: $ pid» else # отправить идентификатор окна ($ wid) из стека окон в xdotool echo «Активация первых окон в стеке» xdotool windowactivate $ wid fi fi #  ******** ПРИМЕЧАНИЯ ********** # Чтобы этот скрипт работал правильно, вам необходимо передать полное имя процесса # для его поиска любых видимых окон.  Необходимый процесс должен находиться в пути # для его выполнения, если он не выполняется.  # # Например # # Если вы попробуете его с firefox-bin на Ubuntu 10.10, он найдет запущенный процесс и # активирует окно, но он не сможет запустить процесс, поскольку исполняемый файл # в пути называется firefox, который  это ссылка на firefox.sh # (/ usr / bin / firefox - & gt; ../lib/firefox-3.6.12/firefox.sh), которая, в свою очередь, выполняет firefox-bin # (не в пути).  # # Затем, если вы используете firefox, он найдет процесс, но не сможет найти какие-либо окна #, так как это функция-обертка, вызывающая firefox-bin и не имеющая окон.   

Вы можете найти код на github

Я проверил код на Ubuntu 10.10 (Gnome), и он сработал. Мне нужно немного полировать, так как я просто набрал его и не беспокоился о том, чтобы сделать его красивым (хотелось бы получить комментарии)

Чтобы установить xdotool, вы можете apt-get install xdotool (form me это извлеченная версия 2.20100701.2691), если вы хотите получить последнюю и самую лучшую информацию из здесь (начиная с 20101116 это как версия 2.20101012.3049-4)

5
ответ дан 4 August 2018 в 20:21

Маленький bash и xdotool должны сделать трюк. Примечания по установке xdotool в конце сообщения.

ActivateOrLaunch.sh

  #! / Usr / bin / env bash # use: # ActivateOrLaunch.sh firefox-bin # #  Запустит firefox-bin или активирует первое окно в стеке стека # --- Запомните chmod a + x ActivateOrLaunch.sh для выполнения.  # pgrep просматривает текущие запущенные процессы и перечисляет идентификаторы # процесса, которые соответствуют критериям выбора для stdout #, для получения дополнительной информации о pgrep http://linux.die.net/man/1/pgrep #, если процесс найден pgrep, тогда  труба через голову, чтобы получить экземпляр firt в # случае нескольких запущенных процессов.  Если процесс не найден, $ pid будет пустым. Pid = $ (pgrep $ {1} | head -n 1) # Используя «-z», проверьте, что $ pid пуст, если он выполнит процесс, если [-z "$ pid"  ];  затем эхо "$ 1 не работает ... выполняется ..." $ 1 & amp;  else # был найден, найти первое видимое окно и активировать его echo «Найдено процесс $ 1 с PID $ pid» # с помощью xdotool [http://www.semicomplete.com/projects/xdotool/] получить первые # видимые окна, используя  $ PID.  Перенесите stderr в / dev / null и выберите только # первые видимые окна, используя head wid = $ (xdotool search --onlyvisible --pid $ pid 2 & gt; / dev / null | head -n 1) #, если $ wid пуст,  процесс не имеет видимых окон ... ничего не делать, если [-z "$ wid"];  затем echo «Не нашел видимых окон для процесса $ 1 с PID: $ pid» else # отправить идентификатор окна ($ wid) из стека окон в xdotool echo «Активация первых окон в стеке» xdotool windowactivate $ wid fi fi #  ******** ПРИМЕЧАНИЯ ********** # Чтобы этот скрипт работал правильно, вам необходимо передать полное имя процесса # для его поиска любых видимых окон.  Необходимый процесс должен находиться в пути # для его выполнения, если он не выполняется.  # # Например # # Если вы попробуете его с firefox-bin на Ubuntu 10.10, он найдет запущенный процесс и # активирует окно, но он не сможет запустить процесс, поскольку исполняемый файл # в пути называется firefox, который  это ссылка на firefox.sh # (/ usr / bin / firefox - & gt; ../lib/firefox-3.6.12/firefox.sh), которая, в свою очередь, выполняет firefox-bin # (не в пути).  # # Затем, если вы используете firefox, он найдет процесс, но не сможет найти какие-либо окна #, так как это функция-обертка, вызывающая firefox-bin и не имеющая окон.   

Вы можете найти код на github

Я проверил код на Ubuntu 10.10 (Gnome), и он сработал. Мне нужно немного полировать, так как я просто набрал его и не беспокоился о том, чтобы сделать его красивым (хотелось бы получить комментарии)

Чтобы установить xdotool, вы можете apt-get install xdotool (form me это извлеченная версия 2.20100701.2691), если вы хотите получить последнюю и самую лучшую информацию из здесь (начиная с 20101116 это как версия 2.20101012.3049-4)

5
ответ дан 6 August 2018 в 04:20

Маленький bash и xdotool должны сделать трюк. Примечания по установке xdotool в конце сообщения.

ActivateOrLaunch.sh

  #! / Usr / bin / env bash # use: # ActivateOrLaunch.sh firefox-bin # #  Запустит firefox-bin или активирует первое окно в стеке стека # --- Запомните chmod a + x ActivateOrLaunch.sh для выполнения.  # pgrep просматривает текущие запущенные процессы и перечисляет идентификаторы # процесса, которые соответствуют критериям выбора для stdout #, для получения дополнительной информации о pgrep http://linux.die.net/man/1/pgrep #, если процесс найден pgrep, тогда  труба через голову, чтобы получить экземпляр firt в # случае нескольких запущенных процессов.  Если процесс не найден, $ pid будет пустым. Pid = $ (pgrep $ {1} | head -n 1) # Используя «-z», проверьте, что $ pid пуст, если он выполнит процесс, если [-z "$ pid"  ];  затем эхо "$ 1 не работает ... выполняется ..." $ 1 & amp;  else # был найден, найти первое видимое окно и активировать его echo «Найдено процесс $ 1 с PID $ pid» # с помощью xdotool [http://www.semicomplete.com/projects/xdotool/] получить первые # видимые окна, используя  $ PID.  Перенесите stderr в / dev / null и выберите только # первые видимые окна, используя head wid = $ (xdotool search --onlyvisible --pid $ pid 2 & gt; / dev / null | head -n 1) #, если $ wid пуст,  процесс не имеет видимых окон ... ничего не делать, если [-z "$ wid"];  затем echo «Не нашел видимых окон для процесса $ 1 с PID: $ pid» else # отправить идентификатор окна ($ wid) из стека окон в xdotool echo «Активация первых окон в стеке» xdotool windowactivate $ wid fi fi #  ******** ПРИМЕЧАНИЯ ********** # Чтобы этот скрипт работал правильно, вам необходимо передать полное имя процесса # для его поиска любых видимых окон.  Необходимый процесс должен находиться в пути # для его выполнения, если он не выполняется.  # # Например # # Если вы попробуете его с firefox-bin на Ubuntu 10.10, он найдет запущенный процесс и # активирует окно, но он не сможет запустить процесс, поскольку исполняемый файл # в пути называется firefox, который  это ссылка на firefox.sh # (/ usr / bin / firefox - & gt; ../lib/firefox-3.6.12/firefox.sh), которая, в свою очередь, выполняет firefox-bin # (не в пути).  # # Затем, если вы используете firefox, он найдет процесс, но не сможет найти какие-либо окна #, так как это функция-обертка, вызывающая firefox-bin и не имеющая окон.   

Вы можете найти код на github

Я проверил код на Ubuntu 10.10 (Gnome), и он сработал. Мне нужно немного полировать, так как я просто набрал его и не беспокоился о том, чтобы сделать его красивым (хотелось бы получить комментарии)

Чтобы установить xdotool, вы можете apt-get install xdotool (form me это извлеченная версия 2.20100701.2691), если вы хотите получить последнюю и самую лучшую информацию из здесь (начиная с 20101116 это как версия 2.20101012.3049-4)

5
ответ дан 7 August 2018 в 22:26

Маленький bash и xdotool должны сделать трюк. Примечания по установке xdotool в конце сообщения.

ActivateOrLaunch.sh

  #! / Usr / bin / env bash # use: # ActivateOrLaunch.sh firefox-bin # #  Запустит firefox-bin или активирует первое окно в стеке стека # --- Запомните chmod a + x ActivateOrLaunch.sh для выполнения.  # pgrep просматривает текущие запущенные процессы и перечисляет идентификаторы # процесса, которые соответствуют критериям выбора для stdout #, для получения дополнительной информации о pgrep http://linux.die.net/man/1/pgrep #, если процесс найден pgrep, тогда  труба через голову, чтобы получить экземпляр firt в # случае нескольких запущенных процессов.  Если процесс не найден, $ pid будет пустым. Pid = $ (pgrep $ {1} | head -n 1) # Используя «-z», проверьте, что $ pid пуст, если он выполнит процесс, если [-z "$ pid"  ];  затем эхо "$ 1 не работает ... выполняется ..." $ 1 & amp;  else # был найден, найти первое видимое окно и активировать его echo «Найдено процесс $ 1 с PID $ pid» # с помощью xdotool [http://www.semicomplete.com/projects/xdotool/] получить первые # видимые окна, используя  $ PID.  Перенесите stderr в / dev / null и выберите только # первые видимые окна, используя head wid = $ (xdotool search --onlyvisible --pid $ pid 2 & gt; / dev / null | head -n 1) #, если $ wid пуст,  процесс не имеет видимых окон ... ничего не делать, если [-z "$ wid"];  затем echo «Не нашел видимых окон для процесса $ 1 с PID: $ pid» else # отправить идентификатор окна ($ wid) из стека окон в xdotool echo «Активация первых окон в стеке» xdotool windowactivate $ wid fi fi #  ******** ПРИМЕЧАНИЯ ********** # Чтобы этот скрипт работал правильно, вам необходимо передать полное имя процесса # для его поиска любых видимых окон.  Необходимый процесс должен находиться в пути # для его выполнения, если он не выполняется.  # # Например # # Если вы попробуете его с firefox-bin на Ubuntu 10.10, он найдет запущенный процесс и # активирует окно, но он не сможет запустить процесс, поскольку исполняемый файл # в пути называется firefox, который  это ссылка на firefox.sh # (/ usr / bin / firefox - & gt; ../lib/firefox-3.6.12/firefox.sh), которая, в свою очередь, выполняет firefox-bin # (не в пути).  # # Затем, если вы используете firefox, он найдет процесс, но не сможет найти какие-либо окна #, так как это функция-обертка, вызывающая firefox-bin и не имеющая окон.   

Вы можете найти код на github

Я проверил код на Ubuntu 10.10 (Gnome), и он сработал. Мне нужно немного полировать, так как я просто набрал его и не беспокоился о том, чтобы сделать его красивым (хотелось бы получить комментарии)

Чтобы установить xdotool, вы можете apt-get install xdotool (form me это извлеченная версия 2.20100701.2691), если вы хотите получить последнюю и самую лучшую информацию из здесь (начиная с 20101116 это как версия 2.20101012.3049-4)

5
ответ дан 10 August 2018 в 10:35

Маленький bash и xdotool должны сделать трюк. Примечания по установке xdotool в конце сообщения.

ActivateOrLaunch.sh

  #! / Usr / bin / env bash # use: # ActivateOrLaunch.sh firefox-bin # #  Запустит firefox-bin или активирует первое окно в стеке стека # --- Запомните chmod a + x ActivateOrLaunch.sh для выполнения.  # pgrep просматривает текущие запущенные процессы и перечисляет идентификаторы # процесса, которые соответствуют критериям выбора для stdout #, для получения дополнительной информации о pgrep http://linux.die.net/man/1/pgrep #, если процесс найден pgrep, тогда  труба через голову, чтобы получить экземпляр firt в # случае нескольких запущенных процессов.  Если процесс не найден, $ pid будет пустым. Pid = $ (pgrep $ {1} | head -n 1) # Используя «-z», проверьте, что $ pid пуст, если он выполнит процесс, если [-z "$ pid"  ];  затем эхо "$ 1 не работает ... выполняется ..." $ 1 & amp;  else # был найден, найти первое видимое окно и активировать его echo «Найдено процесс $ 1 с PID $ pid» # с помощью xdotool [http://www.semicomplete.com/projects/xdotool/] получить первые # видимые окна, используя  $ PID.  Перенесите stderr в / dev / null и выберите только # первые видимые окна, используя head wid = $ (xdotool search --onlyvisible --pid $ pid 2 & gt; / dev / null | head -n 1) #, если $ wid пуст,  процесс не имеет видимых окон ... ничего не делать, если [-z "$ wid"];  затем echo «Не нашел видимых окон для процесса $ 1 с PID: $ pid» else # отправить идентификатор окна ($ wid) из стека окон в xdotool echo «Активация первых окон в стеке» xdotool windowactivate $ wid fi fi #  ******** ПРИМЕЧАНИЯ ********** # Чтобы этот скрипт работал правильно, вам необходимо передать полное имя процесса # для его поиска любых видимых окон.  Необходимый процесс должен находиться в пути # для его выполнения, если он не выполняется.  # # Например # # Если вы попробуете его с firefox-bin на Ubuntu 10.10, он найдет запущенный процесс и # активирует окно, но он не сможет запустить процесс, поскольку исполняемый файл # в пути называется firefox, который  это ссылка на firefox.sh # (/ usr / bin / firefox - & gt; ../lib/firefox-3.6.12/firefox.sh), которая, в свою очередь, выполняет firefox-bin # (не в пути).  # # Затем, если вы используете firefox, он найдет процесс, но не сможет найти какие-либо окна #, так как это функция-обертка, вызывающая firefox-bin и не имеющая окон.   

Вы можете найти код на github

Я проверил код на Ubuntu 10.10 (Gnome), и он сработал. Мне нужно немного полировать, так как я просто набрал его и не беспокоился о том, чтобы сделать его красивым (хотелось бы получить комментарии)

Чтобы установить xdotool, вы можете apt-get install xdotool (form me это извлеченная версия 2.20100701.2691), если вы хотите получить последнюю и самую лучшую информацию из здесь (начиная с 20101116 это как версия 2.20101012.3049-4)

5
ответ дан 13 August 2018 в 17:06
  • 1
    Все, это лучше, чем у меня :) Приятно, краду его! – Jeremy 17 November 2010 в 06:26
  • 2
    Я загружаю его до github, вероятно, завтра ... Я отправлю ссылку в качестве комментария. Нужно сначала почистить его. – SiliconChaos 17 November 2010 в 07:33
  • 3
    Как оказалось, я пытаюсь использовать этот скрипт для сопоставления с медиа-ключом на моей клавиатуре. Поэтому я могу просто запрограммировать его для поиска точной фразы. – David Oneill 18 November 2010 в 19:08

Создайте файл в домашнем каталоге sql-raise.sh

#!/bin/sh if ps -ef | grep process-name | grep -v grep ; then #The process is running, bring it to the front xdotool search --name process-name windowraise exit 0 fi #The process is not running, start it process-name

Строка, начиная с if ps -ef..., переводится на:

Список всех процессов, которые запущены. любые строки, которые не содержат process-name Отфильтруйте команду grep, чтобы предотвратить ложные срабатывания

Линейный запуск xdotool - это тот, который возвращает процесс вперед. [!d6 ]

В командной строке выполните chmod +x ~/sql-raise.sh, чтобы сделать исполняемый файл.

Чтобы связать это с ключом, используйте System -> Preferences -> Shortcut

2
ответ дан 26 May 2018 в 00:23
  • 1
    Чтобы проверить, что имя процесса должно быть, запустите ps -ef в командной строке и прокрутите его, ища свой процесс. – Jeremy 17 November 2010 в 04:39

«launchorsitch.sh firefox» запускает firefox, если он не запущен, переключается на него, если он неактивен или минимизирует его, если это активное окно.

#!/bin/bash
# usage: "launchorswitch.sh xterm" to change to/start/hide xterm
app=$1
app_win_id=`wmctrl -lx|grep -i $app|cut -d ' ' -f 1`
case $app in
    terminator)
        app_exec="terminator --geometry=1000x720+140+28"
    ;;
    *)
        app_exec=$app
    ;;
esac
if [ -z $app_win_id ]; then
    $app_exec & # app not started, so start it
else

    active_win_id=`wmctrl -r :ACTIVE: -e 0,-1,-1,-1,-1 -v 2>&1|grep U|cut -d ' ' -f 3`
    if [ $app_win_id == $active_win_id ]; then
        wmctrl -r :ACTIVE: -b toggle,hidden    # hide app when active
    else
        wmctrl -i -a $app_win_id    #switch to app
    fi;
fi;

В начале существуют специальные правила для программ (здесь это терминатор). Мой взлом использует wmctrl и позволяет указать специальные правила для того, какой исполняемый файл искать / запускать. Любые комментарии к стилю, очевидным ошибкам и т. Д. Приветствуются.

2
ответ дан 26 May 2018 в 00:23

Создайте файл в домашнем каталоге sql-raise.sh

#!/bin/sh if ps -ef | grep process-name | grep -v grep ; then #The process is running, bring it to the front xdotool search --name process-name windowraise exit 0 fi #The process is not running, start it process-name

Строка, начиная с if ps -ef..., переводится на:

Список всех процессов, которые запущены. любые строки, которые не содержат process-name Отфильтруйте команду grep, чтобы предотвратить ложные срабатывания

Линейный запуск xdotool - это тот, который возвращает процесс вперед.

В командной строке выполните chmod +x ~/sql-raise.sh, чтобы сделать исполняемый файл.

Чтобы связать это с ключом, используйте System -> Preferences -> Shortcut

2
ответ дан 25 July 2018 в 22:52
  • 1
    Чтобы проверить, что имя процесса должно быть, запустите ps -ef в командной строке и прокрутите его, ища свой процесс. – Jeremy 17 November 2010 в 04:39

«launchorsitch.sh firefox» запускает firefox, если он не запущен, переключается на него, если он неактивен или минимизирует его, если это активное окно.

#!/bin/bash # usage: "launchorswitch.sh xterm" to change to/start/hide xterm app=$1 app_win_id=`wmctrl -lx|grep -i $app|cut -d ' ' -f 1` case $app in terminator) app_exec="terminator --geometry=1000x720+140+28" ;; *) app_exec=$app ;; esac if [ -z $app_win_id ]; then $app_exec & # app not started, so start it else active_win_id=`wmctrl -r :ACTIVE: -e 0,-1,-1,-1,-1 -v 2>&1|grep U|cut -d ' ' -f 3` if [ $app_win_id == $active_win_id ]; then wmctrl -r :ACTIVE: -b toggle,hidden # hide app when active else wmctrl -i -a $app_win_id #switch to app fi; fi;

В начале существуют специальные правила для программ (здесь это терминатор). Мой взлом использует wmctrl и позволяет указать специальные правила для того, какой исполняемый файл искать / запускать. Любые комментарии к стилю, очевидным ошибкам и т. Д. Приветствуются.

2
ответ дан 25 July 2018 в 22:52

Создайте файл в домашнем каталоге sql-raise.sh

#!/bin/sh if ps -ef | grep process-name | grep -v grep ; then #The process is running, bring it to the front xdotool search --name process-name windowraise exit 0 fi #The process is not running, start it process-name

Строка, начиная с if ps -ef..., переводится на:

Список всех процессов, которые запущены. любые строки, которые не содержат process-name Отфильтруйте команду grep, чтобы предотвратить ложные срабатывания

Линейный запуск xdotool - это тот, который возвращает процесс вперед.

В командной строке выполните chmod +x ~/sql-raise.sh, чтобы сделать исполняемый файл.

Чтобы связать это с ключом, используйте System -> Preferences -> Shortcut

2
ответ дан 27 July 2018 в 01:06
  • 1
    Чтобы проверить, что имя процесса должно быть, запустите ps -ef в командной строке и прокрутите его, ища свой процесс. – Jeremy 17 November 2010 в 04:39

«launchorsitch.sh firefox» запускает firefox, если он не запущен, переключается на него, если он неактивен или минимизирует его, если это активное окно.

#!/bin/bash # usage: "launchorswitch.sh xterm" to change to/start/hide xterm app=$1 app_win_id=`wmctrl -lx|grep -i $app|cut -d ' ' -f 1` case $app in terminator) app_exec="terminator --geometry=1000x720+140+28" ;; *) app_exec=$app ;; esac if [ -z $app_win_id ]; then $app_exec & # app not started, so start it else active_win_id=`wmctrl -r :ACTIVE: -e 0,-1,-1,-1,-1 -v 2>&1|grep U|cut -d ' ' -f 3` if [ $app_win_id == $active_win_id ]; then wmctrl -r :ACTIVE: -b toggle,hidden # hide app when active else wmctrl -i -a $app_win_id #switch to app fi; fi;

В начале существуют специальные правила для программ (здесь это терминатор). Мой взлом использует wmctrl и позволяет указать специальные правила для того, какой исполняемый файл искать / запускать. Любые комментарии к стилю, очевидным ошибкам и т. Д. Приветствуются.

2
ответ дан 27 July 2018 в 01:06

Создайте файл в домашнем каталоге sql-raise.sh

#!/bin/sh if ps -ef | grep process-name | grep -v grep ; then #The process is running, bring it to the front xdotool search --name process-name windowraise exit 0 fi #The process is not running, start it process-name

Строка, начиная с if ps -ef..., переводится на:

Список всех процессов, которые запущены. любые строки, которые не содержат process-name Отфильтруйте команду grep, чтобы предотвратить ложные срабатывания

Линейный запуск xdotool - это тот, который возвращает процесс вперед.

В командной строке выполните chmod +x ~/sql-raise.sh, чтобы сделать исполняемый файл.

Чтобы связать это с ключом, используйте System -> Preferences -> Shortcut

2
ответ дан 31 July 2018 в 11:19
  • 1
    Чтобы проверить, что имя процесса должно быть, запустите ps -ef в командной строке и прокрутите его, ища свой процесс. – Jeremy 17 November 2010 в 04:39

«launchorsitch.sh firefox» запускает firefox, если он не запущен, переключается на него, если он неактивен или минимизирует его, если это активное окно.

#!/bin/bash # usage: "launchorswitch.sh xterm" to change to/start/hide xterm app=$1 app_win_id=`wmctrl -lx|grep -i $app|cut -d ' ' -f 1` case $app in terminator) app_exec="terminator --geometry=1000x720+140+28" ;; *) app_exec=$app ;; esac if [ -z $app_win_id ]; then $app_exec & # app not started, so start it else active_win_id=`wmctrl -r :ACTIVE: -e 0,-1,-1,-1,-1 -v 2>&1|grep U|cut -d ' ' -f 3` if [ $app_win_id == $active_win_id ]; then wmctrl -r :ACTIVE: -b toggle,hidden # hide app when active else wmctrl -i -a $app_win_id #switch to app fi; fi;

В начале существуют специальные правила для программ (здесь это терминатор). Мой взлом использует wmctrl и позволяет указать специальные правила для того, какой исполняемый файл искать / запускать. Любые комментарии к стилю, очевидным ошибкам и т. Д. Приветствуются.

2
ответ дан 31 July 2018 в 11:19

Создайте файл в домашнем каталоге sql-raise.sh

#!/bin/sh if ps -ef | grep process-name | grep -v grep ; then #The process is running, bring it to the front xdotool search --name process-name windowraise exit 0 fi #The process is not running, start it process-name

Строка, начиная с if ps -ef..., переводится на:

Список всех процессов, которые запущены. любые строки, которые не содержат process-name Отфильтруйте команду grep, чтобы предотвратить ложные срабатывания

Линейный запуск xdotool - это тот, который возвращает процесс вперед.

В командной строке выполните chmod +x ~/sql-raise.sh, чтобы сделать исполняемый файл.

Чтобы связать это с ключом, используйте System -> Preferences -> Shortcut

2
ответ дан 31 July 2018 в 12:20
  • 1
    Чтобы проверить, что имя процесса должно быть, запустите ps -ef в командной строке и прокрутите его, ища свой процесс. – Jeremy 17 November 2010 в 04:39

«launchorsitch.sh firefox» запускает firefox, если он не запущен, переключается на него, если он неактивен или минимизирует его, если это активное окно.

#!/bin/bash # usage: "launchorswitch.sh xterm" to change to/start/hide xterm app=$1 app_win_id=`wmctrl -lx|grep -i $app|cut -d ' ' -f 1` case $app in terminator) app_exec="terminator --geometry=1000x720+140+28" ;; *) app_exec=$app ;; esac if [ -z $app_win_id ]; then $app_exec & # app not started, so start it else active_win_id=`wmctrl -r :ACTIVE: -e 0,-1,-1,-1,-1 -v 2>&1|grep U|cut -d ' ' -f 3` if [ $app_win_id == $active_win_id ]; then wmctrl -r :ACTIVE: -b toggle,hidden # hide app when active else wmctrl -i -a $app_win_id #switch to app fi; fi;

В начале существуют специальные правила для программ (здесь это терминатор). Мой взлом использует wmctrl и позволяет указать специальные правила для того, какой исполняемый файл искать / запускать. Любые комментарии к стилю, очевидным ошибкам и т. Д. Приветствуются.

2
ответ дан 31 July 2018 в 12:20

Создайте файл в домашнем каталоге sql-raise.sh

#!/bin/sh if ps -ef | grep process-name | grep -v grep ; then #The process is running, bring it to the front xdotool search --name process-name windowraise exit 0 fi #The process is not running, start it process-name

Строка, начиная с if ps -ef..., переводится на:

Список всех процессов, которые запущены. любые строки, которые не содержат process-name Отфильтруйте команду grep, чтобы предотвратить ложные срабатывания

Линейный запуск xdotool - это тот, который возвращает процесс вперед.

В командной строке выполните chmod +x ~/sql-raise.sh, чтобы сделать исполняемый файл.

Чтобы связать это с ключом, используйте System -> Preferences -> Shortcut

2
ответ дан 2 August 2018 в 04:16
  • 1
    Чтобы проверить, что имя процесса должно быть, запустите ps -ef в командной строке и прокрутите его, ища свой процесс. – Jeremy 17 November 2010 в 04:39

«launchorsitch.sh firefox» запускает firefox, если он не запущен, переключается на него, если он неактивен или минимизирует его, если это активное окно.

#!/bin/bash # usage: "launchorswitch.sh xterm" to change to/start/hide xterm app=$1 app_win_id=`wmctrl -lx|grep -i $app|cut -d ' ' -f 1` case $app in terminator) app_exec="terminator --geometry=1000x720+140+28" ;; *) app_exec=$app ;; esac if [ -z $app_win_id ]; then $app_exec & # app not started, so start it else active_win_id=`wmctrl -r :ACTIVE: -e 0,-1,-1,-1,-1 -v 2>&1|grep U|cut -d ' ' -f 3` if [ $app_win_id == $active_win_id ]; then wmctrl -r :ACTIVE: -b toggle,hidden # hide app when active else wmctrl -i -a $app_win_id #switch to app fi; fi;

В начале существуют специальные правила для программ (здесь это терминатор). Мой взлом использует wmctrl и позволяет указать специальные правила для того, какой исполняемый файл искать / запускать. Любые комментарии к стилю, очевидным ошибкам и т. Д. Приветствуются.

2
ответ дан 2 August 2018 в 04:16

«launchorsitch.sh firefox» запускает firefox, если он не запущен, переключается на него, если он неактивен или минимизирует его, если это активное окно.

  #! /  bin / bash #: «launchorswitch.sh xterm» для изменения / start / hide xterm app = $ 1 app_win_id = `wmctrl -lx | grep -i $ app | cut -d '' -f 1` case $ app в терминаторе  ) app_exec = "terminator --geometry = 1000x720 + 140 + 28" ;;  *) app_exec = $ app ;;  esac if [-z $ app_win_id];  затем $ app_exec & amp;  # приложение не запущено, поэтому запустите его else active_win_id = `wmctrl -r: ACTIVE: -e 0, -1, -1, -1, -1 -v 2 & amp; 1 | grep U | cut -d '' -  f 3`, если [$ app_win_id == $ active_win_id];  то wmctrl -r: ACTIVE: -b переключить, скрывать # скрыть приложение, когда активно else wmctrl -i -a $ app_win_id #switch to app fi;  Fi;   

В начале существуют специальные правила для программ (здесь это терминатор). Мой взлом использует wmctrl и позволяет указать специальные правила для того, какой исполняемый файл искать / запускать. Любые комментарии к стилю, очевидным ошибкам и т. Д. Приветствуются.

2
ответ дан 4 August 2018 в 20:21

Создайте файл в домашнем каталоге sql-raise.sh

 #! / bin / sh, если ps -ef |  grep process-name |  grep -v grep;  затем # Процесс запущен, вывести его на передний план xdotool search -name process-name windowraise exit 0 fi # Процесс не запущен, запустите его имя процесса 

Строка, начинающаяся с if ps -ef ... переводит на:

  • Список всех процессов, которые работают
  • Отфильтровать любые строки, которые не содержат name
  • Отфильтровать команду grep , чтобы предотвратить ложные срабатывания

Линия, начинающаяся с xdotool - это тот, который приводит процесс к фронту.

В командной строке выполните chmod + x ~ / sql-raise.sh , чтобы сделать файл исполняемым.

Чтобы связать это с ключом, используйте System -> Preferences -> Shortcut

2
ответ дан 4 August 2018 в 20:21

Создайте файл в домашнем каталоге sql-raise.sh

 #! / bin / sh, если ps -ef |  grep process-name |  grep -v grep;  затем # Процесс запущен, вывести его на передний план xdotool search -name process-name windowraise exit 0 fi # Процесс не запущен, запустите его имя процесса 

Строка, начинающаяся с if ps -ef ... переводит на:

  • Список всех процессов, которые работают
  • Отфильтровать любые строки, которые не содержат name
  • Отфильтровать команду grep , чтобы предотвратить ложные срабатывания

Линия, начинающаяся с xdotool - это тот, который приводит процесс к фронту.

В командной строке выполните chmod + x ~ / sql-raise.sh , чтобы сделать файл исполняемым.

Чтобы связать это с ключом, используйте System -> Preferences -> Shortcut

2
ответ дан 6 August 2018 в 04:20

«launchorsitch.sh firefox» запускает firefox, если он не запущен, переключается на него, если он неактивен или минимизирует его, если это активное окно.

  #! /  bin / bash #: «launchorswitch.sh xterm» для изменения / start / hide xterm app = $ 1 app_win_id = `wmctrl -lx | grep -i $ app | cut -d '' -f 1` case $ app в терминаторе  ) app_exec = "terminator --geometry = 1000x720 + 140 + 28" ;;  *) app_exec = $ app ;;  esac if [-z $ app_win_id];  затем $ app_exec & amp;  # приложение не запущено, поэтому запустите его else active_win_id = `wmctrl -r: ACTIVE: -e 0, -1, -1, -1, -1 -v 2 & amp; 1 | grep U | cut -d '' -  f 3`, если [$ app_win_id == $ active_win_id];  то wmctrl -r: ACTIVE: -b переключить, скрывать # скрыть приложение, когда активно else wmctrl -i -a $ app_win_id #switch to app fi;  Fi;   

В начале существуют специальные правила для программ (здесь это терминатор). Мой взлом использует wmctrl и позволяет указать специальные правила для того, какой исполняемый файл искать / запускать. Любые комментарии к стилю, очевидным ошибкам и т. Д. Приветствуются.

2
ответ дан 6 August 2018 в 04:20

«launchorsitch.sh firefox» запускает firefox, если он не запущен, переключается на него, если он неактивен или минимизирует его, если это активное окно.

  #! /  bin / bash #: «launchorswitch.sh xterm» для изменения / start / hide xterm app = $ 1 app_win_id = `wmctrl -lx | grep -i $ app | cut -d '' -f 1` case $ app в терминаторе  ) app_exec = "terminator --geometry = 1000x720 + 140 + 28" ;;  *) app_exec = $ app ;;  esac if [-z $ app_win_id];  затем $ app_exec & amp;  # приложение не запущено, поэтому запустите его else active_win_id = `wmctrl -r: ACTIVE: -e 0, -1, -1, -1, -1 -v 2 & amp; 1 | grep U | cut -d '' -  f 3`, если [$ app_win_id == $ active_win_id];  то wmctrl -r: ACTIVE: -b переключить, скрывать # скрыть приложение, когда активно else wmctrl -i -a $ app_win_id #switch to app fi;  Fi;   

В начале существуют специальные правила для программ (здесь это терминатор). Мой взлом использует wmctrl и позволяет указать специальные правила для того, какой исполняемый файл искать / запускать. Любые комментарии к стилю, очевидным ошибкам и т. Д. Приветствуются.

2
ответ дан 7 August 2018 в 22:26

Создайте файл в домашнем каталоге sql-raise.sh

 #! / bin / sh, если ps -ef |  grep process-name |  grep -v grep;  затем # Процесс запущен, вывести его на передний план xdotool search -name process-name windowraise exit 0 fi # Процесс не запущен, запустите его имя процесса 

Строка, начинающаяся с if ps -ef ... переводит на:

  • Список всех процессов, которые работают
  • Отфильтровать любые строки, которые не содержат name
  • Отфильтровать команду grep , чтобы предотвратить ложные срабатывания

Линия, начинающаяся с xdotool - это тот, который приводит процесс к фронту.

В командной строке выполните chmod + x ~ / sql-raise.sh , чтобы сделать файл исполняемым.

Чтобы связать это с ключом, используйте System -> Preferences -> Shortcut

2
ответ дан 7 August 2018 в 22:26

«launchorsitch.sh firefox» запускает firefox, если он не запущен, переключается на него, если он неактивен или минимизирует его, если это активное окно.

  #! /  bin / bash #: «launchorswitch.sh xterm» для изменения / start / hide xterm app = $ 1 app_win_id = `wmctrl -lx | grep -i $ app | cut -d '' -f 1` case $ app в терминаторе  ) app_exec = "terminator --geometry = 1000x720 + 140 + 28" ;;  *) app_exec = $ app ;;  esac if [-z $ app_win_id];  затем $ app_exec & amp;  # приложение не запущено, поэтому запустите его else active_win_id = `wmctrl -r: ACTIVE: -e 0, -1, -1, -1, -1 -v 2 & amp; 1 | grep U | cut -d '' -  f 3`, если [$ app_win_id == $ active_win_id];  то wmctrl -r: ACTIVE: -b переключить, скрывать # скрыть приложение, когда активно else wmctrl -i -a $ app_win_id #switch to app fi;  Fi;   

В начале существуют специальные правила для программ (здесь это терминатор). Мой взлом использует wmctrl и позволяет указать специальные правила для того, какой исполняемый файл искать / запускать. Любые комментарии к стилю, очевидным ошибкам и т. Д. Приветствуются.

2
ответ дан 10 August 2018 в 10:35

Другие вопросы по тегам:

Похожие вопросы: