Як зробити так, щоб емулятор термінатора з'являвся і зникав, як guake?


14

Я використовую термінатор 0.96 як емулятор терміналу. Як я можу змусити його працювати у фоновому режимі і змусити його з’являтися / зникати як термінал guake (тобто за допомогою клавіші швидкого доступу).


1
@hashken відповідь робить це дуже просто: webupd8.org/2011/07/install-terminator-with-built-in-quake.html
Брендон Бертельсен

Відповіді:


17

Я намагався зробити те ж саме (будучи шанувальником як гуаку, так і термінатора). Ось що я придумав (спеціальна версія відповіді desqua на це запитання ):

Запустити програму або показати її вікно, якщо воно вже запущено, або мінімізувати, якщо він зосереджений

1) Встановіть wmctrl & xdotool або в терміналі:sudo apt-get install wmctrl xdotool

2) Складіть сценарій:

  • Зробіть файл gedit ~ / bin / launch_focus_min.sh

І вставте це:

#!/bin/bash                                                                                                            
#
# This script does this:
# launch an app if it isn't launched yet,
# focus the app if it is launched but not focused,
# minimize the app if it is focused.
#
# by desgua - 2012/04/29
# modified by olds22 - 2012/09/16
#  - customized to accept a parameter
#  - made special exception to get it working with terminator


# First let's check if the needed tools are installed:

tool1=$(which xdotool)
tool2=$(which wmctrl)

if [ -z $tool1 ]; then
  echo "Xdotool is needed, do you want to install it now? [Y/n]"
  read a
  if [[ $a == "Y" || $a == "y" || $a = "" ]]; then
    sudo apt-get install xdotool
  else
    echo "Exiting then..."
    exit 1
  fi
fi

if [ -z $tool2 ]; then
  echo "Wmctrl is needed, do you want to install it now? [Y/n]"
  read a
  if [[ $a == "Y" || $a == "y" || $a = "" ]]; then
    sudo apt-get install wmctrl
  else
    echo "Exiting then..."
    exit 1
  fi
fi


# check if we're trying to use an app that needs a special process name
# (because it runs multiple processes and/or under a different name)
app=$1
if [[ $app == terminator ]]; then
  process_name=usr/bin/terminator
else
  process_name=$app
fi

# Check if the app is running (in this case $process_name)

#pid=$(pidof $process_name) # pidof didn't work for terminator
pid=$(pgrep -f $process_name)

# If it isn't launched, then launch

if [ -z $pid ]; then
  $app

else

  # If it is launched then check if it is focused

  foc=$(xdotool getactivewindow getwindowpid)

  if [[ $pid == $foc ]]; then

    # if it is focused, then minimize
    xdotool getactivewindow windowminimize
  else
    # if it isn't focused then get focus
    wmctrl -x -R $app
  fi
fi

exit 0
  • Зробіть його виконуваним: chmod +x ~/bin/launch_focus_min.sh

3) Зробіть комбінацію клавіш:

  • Відкрийте налаштування клавіатури та створіть спеціальний ярлик за допомогою команди: /home/<user>/bin/launch_focus_min.sh terminator(~ / bin не буде працювати)

  • призначте цю команду Shift + Escape (або ярлик клавіатури, який ви використовували для guake).


Я спробував це, але, здається, це не працює на мене.
Chirag

Це ідеальне рішення, найкраще з Guake з найкращим термінатором, спасибі.
Вран

довелося змінити "~ / bin / start_focus_min.sh термінатор" на "/ home / <user> /bin/launch_focus_min.sh термінатор", щоб він працював на мене
Vituel

Мені довелося додати bash shebang до початку файлу, щоб він міг правильно працювати під zsh:#!/bin/bash
sean_j_roberts

4

Найпростіший спосіб зробити це - xdotoolскористатися windowunmap/windowmapкомандою, щоб приховати / приховати потрібний клас вікон. (Цей підхід не згадувався в інших відповідях, які згадуються xdotool.) Рішення буде добре працювати на всіх робочих столах, незалежно від того, яким керуючим вікон вони користуються. Як зазначається на сторінці сторінки ,

У термінології X11 відображення вікна означає зробити його видимим на екрані.

Отже, розгортання вікна зробить навпаки і приховає вікно. На жаль, не існує доступного перемикання, з якого xdotoolможна перемикатися між станами map / unmap, але дві необхідні вам команди знаходяться нижче. Перший приховує вікно:

xdotool search --class terminator windowunmap %@

а другий повертає ефект:

xdotool search --class terminator windowmap %@

Зверніть увагу, що якщо вікно вже мінімізоване, windowunmapкоманда буде невдалою.

Для отримання додаткової інформації дивіться man xdotool, веб- сторінки Ubuntu в Інтернеті , і моя відповідь на це пов'язане питання .


2

Вибравши набір налаштувань у Термінаторі, ви можете змусити його працювати майже аналогічно Guake.

Детальну пояснення див. У наступній статті.
http://www.webupd8.org/2011/07/install-terminator-with-built-in-quake.html

Я б радив вам дотримуватися всіх кроків у статті, щоб отримати бажані результати. Я пропустив кілька кроків, думаючи, що вони не потрібні, але насправді потрібно було подолати деякі помилки.


0

Я рекомендую просто використовувати yakuakeтермінал у тому ж стилі, що і guake для робочого столу kde.

Ви можете встановити його, запустивши sudo apt-get install yakuake.


Неможливо залишити термінатор. Я використовую його з останніх 2 років. На даний момент майже не захопився. :)
Chirag

0

Ну найпростішим рішенням було б просто заблокувати Термінатор до запуску і використовувати ярлики, які надає Ubuntu.

Ви можете запустити будь-яку програму, заблоковану до запуску за допомогою ярлика запуску:

Супер + 1 до 9

Щоб отримати повний список готових доступних ярликів, утримуйте клавішу Super .


0

Я написав сценарій, щоб підняти та мінімізувати термін gnome з byobu в монетному дворі Linux, тому що у guake є деякі дивні вихідні повідомлення консолі. Потім я додав її до клавіш швидкого доступу в розділі клавіатури адміністратора-> виправдання.

сценарій з назвою guake-toggle-for-gnome-terminal.sh :

#!/usr/bin/env bash
if ! pgrep -x "gnome-terminal" > /dev/null
then
    gnome-terminal --app-id us.kirkland.terminals.byobu -e byobu
fi

byobuVisible=$(xdotool search --onlyvisible byobu)
byobuNotVisible=$(xdotool search byobu)
xdotool windowminimize ${byobuVisible}
xdotool windowraise ${byobuNotVisible}

Тут є лише назва вікна.

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