Desativa a chave quando o programa está sendo executado

2

Duplicar a pergunta para Como desabilitar a tecla enquanto um programa específico está rodando? , que nunca foi respondida. (Qual opção é pior, que eu repovo a mesma pergunta, ou que eu coloquei necro no post antigo?)

Enfim, existe uma maneira de desabilitar chaves específicas quando programas específicos estão sendo executados? Ou, alternativamente, desabilite o Dash quando um programa específico estiver em execução?

    
por Mossmyr 07.04.2016 / 17:40

1 resposta

1

Solução Simples

Crie dois atalhos, um para desabilitar a tecla Super e outro para restaurá-la à vontade.

Vá para Configurações do sistema - > Teclado - > Atalhos - > Personalizado e clique no botão + . Nomeie o novo atalho "Disable Dash". O comando é

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

Para criar um atalho para reativar o script, repita as etapas acima, mas o comando deve ser

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

Uma solução de scripts

O script abaixo desabilitará a tecla Super quando o programa especificado pelo usuário tiver foco. Observe que o usuário ainda pode clicar no ícone de traço com o mouse para chamar o traço. O nome do programa deve estar entre aspas simples e exatamente o mesmo que aparece no Unity Launcher. Várias janelas podem ser especificadas no mesmo formato, separadas por espaço

Porexemplo,paradesabilitarSuperkeytodavezqueajaneladofirefoxestiveremfoco,oscriptdeveserchamadocomo

disable_super_key.sh'FirefoxWebBrowser'

Paradesativarosdoisfirefoxegnome-terminaldo

disable_super_key.sh'FirefoxWebBrowser''Terminal'

Comoobteroscript

Osusuáriospodemcopiarafonteaquiou,alternativamente,obtê-lanogithubseguindoasinstruçõesabaixo:

  1. sudoapt-getinstallgit
  2. cd/opt;sudogitclonehttps://github.com/SergKolo/sergrep.git
  3. sudochmod-R+xsergrep

Oscriptestarálocalizadoem/opt/sergrep/disable_super_key.sh

Parafazeroscriptiniciarautomaticamenteemcadalogin,consulte Como faço para iniciar aplicativos automaticamente no login? . Forneça /opt/sergrep/disable_super_key.sh (caminho completo) como o comando

Origem do script

#!/usr/bin/env bash
#
###########################################################
# Author: Serg Kolo , contact: [email protected] 
# 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 "$@"
    
por Sergiy Kolodyazhnyy 12.04.2016 / 10:28