Отключить ключ при запуске программы

Повторяющийся вопрос к Как отключить ключ во время работы определенной программы? , на который никогда не было ответа. (Какой вариант хуже, когда я повторяю тот же вопрос или я добавляю ветку к старому сообщению?)

В любом случае, есть ли способ отключить определенные ключи, когда работают определенные программы? Или, в качестве альтернативы, отключить Dash при запуске определенной программы?

2
задан 13 April 2017 в 15:25

1 ответ

Простое решение

Создайте два ярлыка, один для отключения Супер ключа, и один для восстановления его по желанию.

Перейдите к Параметрам настройки системы-> Клавиатура-> Ярлыки-> Пользовательский, и щелчок + кнопка. Назовите новый ярлык, "Отключают Тире". Команда

 gsettings set org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/ show-launcher 'Disabled'

Для создания ярлыка для перевключения сценария повторите вышеупомянутые шаги, но команда должна быть

 gsettings set org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/ show-launcher '<Super>'

Решение для сценариев

Рев сценария отключит Супер ключ, когда программа, которую указал пользователь, сфокусируется. Обратите внимание, что пользователь все еще может нажать значок тире мышью для вызова Dash. Название программы должно быть единственно заключено в кавычки и точно то же, как это появляется в Средстве запуска Единицы. Несколько окон могут быть указаны в том же формате, разделенном пространством

enter image description here

Например, для отключения Супер ключа каждый раз, когда окно Firefox фокусируется, сценарий нужно назвать как

disable_super_key.sh 'Firefox Web Browser'

Отключить обоих firefox и gnome-terminal сделать

disable_super_key.sh 'Firefox Web Browser' 'Terminal'

Как получить сценарий

Пользователи могут или скопировать источник здесь или альтернативно получить его из GitHub после рева инструкций:

  1. sudo apt-get install git
  2. cd /opt ; sudo git clone https://github.com/SergKolo/sergrep.git
  3. sudo chmod -R +x sergrep

Сценарий будет расположен в /opt/sergrep/disable_super_key.sh

Чтобы заставить сценарий запуститься автоматически на каждом входе в систему, обратитесь к тому, Как я запускаю приложения автоматически на входе в систему?. Обеспечить /opt/sergrep/disable_super_key.sh(полный путь) как команда

Источник сценария

#!/usr/bin/env bash
#
###########################################################
# Author: Serg Kolo , contact: 1047481448@qq.com 
# Date: April 12 , 2016
# Purpose: Disable super key that brings up Unity Dash
#          per specific application
# 
# Written for: https://askubuntu.com/q/754884/295286
# Tested on: Ubuntu 14.04 LTS
###########################################################
# Copyright: Serg Kolo , 2016
#    
#     Permission to use, copy, modify, and distribute this software is hereby granted
#     without fee, provided that  the copyright notice above and this permission statement
#     appear in all copies.
#
#     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
#     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
#     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
#     THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
#     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
#     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
#     DEALINGS IN THE SOFTWARE.

ARGV0="$0"
ARGC=$#
enable_dash_key()
{
  gsettings set org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/ show-launcher '<Super>'
}

disable_dash_key()
{
gsettings set org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/ show-launcher 'Disabled'
}



get_active_app()
{
   qdbus org.ayatana.bamf \
        /org/ayatana/bamf/matcher \
        org.ayatana.bamf.matcher.ActiveApplication
}

get_active_app_name()
{
  qdbus org.ayatana.bamf \
   $(get_active_app)   \
   org.ayatana.bamf.view.Name
}

check_active_app()
{
  active_name=$(get_active_app_name)
  local is_found
  for win in  "${windows_list[@]}"
  do
    if [ "$active_name" = "$win" ] ; then
      is_found=true
      break
    else
      is_found=false
    fi
  done

  if $is_found ; then
     disable_dash_key
  else
     enable_dash_key
  fi
}


print_usage()
{
cat << EOF
Copyright Serg Kolo , 2016

Usage: disable_super_key.sh 'App Name 1' [ 'App Name 2' 'App Name 3' ...  ]

The script disables the Super key for the specified set of applications
under Ubuntu's Unity environment. The list of windows must be space
separated, each app name single quoted and exactly as it appears on the
launcher (or as it appears in the .desktop file of that app), so spelling
and spacing matter.

Note that the script only disables the Super key as shortcut for Dash.
The user still will be able to invoke Dash by manually clicking on the 
Ubuntu icon in the launcher
EOF
}

main()
{

  if [ $ARGC -eq 0   ]; then
     print_usage
     exit
  fi

  local windows_list
  windows_list=( "$@" )
  dbus-monitor --profile "type='signal',member='FocusedWindowChanged'" |\
  while read line
  do
     case "$line" in
       *FocusedWindowChanged*) check_active_app ;;
     esac         
  done
}

main "$@"
1
ответ дан 14 April 2017 в 01:25
  • 1
    Файл hosts должен быть исправлен на каждой машине, где Вы хотите, чтобы он работал. Вы изменяли windoze машину также? – guiverc 17 August 2017 в 16:20

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

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