![Desativar chave quando o programa estiver em execução](https://rvso.com/image/1087123/Desativar%20chave%20quando%20o%20programa%20estiver%20em%20execu%C3%A7%C3%A3o.png)
Pergunta duplicada paraComo desabilitar a chave enquanto um programa específico está em execução?, que nunca foi respondido. (Qual opção é pior, repostar a mesma pergunta ou encadear o post antigo?)
De qualquer forma, existe uma maneira de desativar chaves específicas quando programas específicos estão em execução? Ou, alternativamente, desativar o Dash quando um programa específico estiver em execução?
Responder1
Solução Simples
Crie dois atalhos, um para desabilitar a Superchave e outro para restaurá-la à vontade.
Vá para Configurações do sistema -> Teclado -> Atalhos -> Personalizado e clique +no botão. Nomeie o novo atalho como "Desativar 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 os passos acima, mas o comando deve ser
gsettings set org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/ show-launcher '<Super>'
Uma solução de script
O script abaixo desabilitará a Superchave quando o programa especificado pelo usuário estiver em foco. Observe que o usuário ainda pode clicar no ícone do traço com o mouse para invocar o Dash. O nome do programa deve estar entre aspas simples e exatamente igual ao que aparece no Unity Launcher. Várias janelas podem ser especificadas no mesmo formato separadas por espaço
Por exemplo, para desabilitar a Super key toda vez que a janela do Firefox estiver em foco, o script deve ser chamado como
disable_super_key.sh 'Firefox Web Browser'
Para desativar ambos firefox
e gnome-terminal
fazer
disable_super_key.sh 'Firefox Web Browser' 'Terminal'
Como obter o roteiro
Os usuários podem copiar a fonte aqui ou, alternativamente, obtê-la no github seguindo as instruções abaixo:
sudo apt-get install git
cd /opt ; sudo git clone https://github.com/SergKolo/sergrep.git
sudo chmod -R +x sergrep
O script estará localizado em/opt/sergrep/disable_super_key.sh
Para fazer o script iniciar automaticamente em cada login, consulteComo inicio aplicativos automaticamente no login?. Forneça /opt/sergrep/disable_super_key.sh
(caminho completo) como o comando
Fonte do roteiro
#!/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 "$@"