Como definir um atalho para "Always on Top" na janela?

27

No 12.04 (Unity), eu gostaria de atribuir um atalho para a opção "sempre no topo" de uma janela. Provavelmente algo como Ctrl+ Shift+ Homepara ligar e Ctrl+ Shift+ Endpara desligar, ou qualquer outra coisa. Existe uma opção para fazer isso em algum lugar no Gerenciador de configurações do Compiz?

Esta postagem (antiga) afirmou que

Para compiz, ative ações extra WM. Verifique as propriedades e insira ALT+ Ano campo Chave para ativar / desativar a ação Sempre no topo.

Mas não consegui encontrar isso.

Ian Hincks
fonte
1
Alguém aqui conseguiu fazer isso funcionar no Ubuntu 12.10 sem usar o ccsm? obrigado
Suhaib

Respostas:

32

Ele deve funcionar em todos os sistemas operacionais Ubuntu desde a versão 9.04 sem instalar nada, modificando a criação de atalhos.

Experimente Alt+ Space, T

  • Alt+ Space como o primeiro atalho exibe o menu do mouse com o botão direito

  • T seleciona a função "Always On Top".

user294298
fonte
1
Esta é absolutamente a melhor resposta na página.
dotancohen
Trabalho confirmado no Unity 14.04. O fato de o alt + space ativar um menu suspenso ajuda especialmente a recursos usados ​​com pouca frequência.
Frank M
Essa deve ser a resposta selecionada. Obrigado!
Nam G VU
1
Isso foi postado 2 anos após a pergunta, mas agora representa a melhor resposta, por isso estou alterando a resposta aceita.
21817 Ian Hincks
2
não funcionando no 18.04, o T não seleciona mais a função 'Sempre no topo'.
rvbarreto 15/10
14

Como ninguém mencionou isso ainda, vou deixar uma solução que funcionou para mim no Ubuntu 12.04.

Você pode configurar um atalho de teclado comum e usar wmctrl para alternar a opção "Always on Top".

Vá para Configurações do sistema> Teclado> Atalhos> Atalhos personalizados . Pressione o + e dê um nome ao seu atalho. Em seguida, digite o seguinte comando.

wmctrl -r :ACTIVE: -b toggle,above

Se você ainda não o possui, pode instalar o wmctrl a partir dos repositórios usando

sudo apt-get install wmctrl

Você deve ter algo parecido com isso.

Captura de tela mostrando uma tela de configuração de atalhos de teclado personalizados

Clique em Aplicar e você deve estar pronto!

Esta solução veio de uma discussão nos fóruns do Ubuntu .

Kasisnu
fonte
@ Suhaib Essa parte já está na resposta. :)
Kasisnu 4/15
lol desculpa. Não sei como eu perdi xD
Suhaib
7

Caso contrário, instale o CCSM e plugins extras de compiz através de:

sudo apt-get install compizconfig-settings-manager compiz-plugins-extra

Esteja ciente, por favor. O CCSM pode matar o Unity3D em alguns sistemas.

Se você ainda não possui o compiz-plugins-extra instalado, é necessário reiniciar o Compiz para carregá-los (mesmo que eles sejam exibidos no CCSM antes da reinicialização) com Alt+ F2e

compiz --replace

Você pode ver Ações extras do WM na seção Gerenciamento do Windows no CCSM, conforme explicado na postagem encontrada. Você pode definir a ação desejada facilmente.

heartsmagic
fonte
Na verdade, apenas é necessário reiniciar o compiz para que ele esteja ciente dos novos plugins. Posteriormente, você pode alterar os atalhos rapidamente (ou seja, não é necessário reiniciar o Compiz após cada alteração de atalho) #
1616
Obrigado pela informação @sup. Eu apenas expliquei isso usando o post fornecido. Na verdade, eu mesmo não tentei.
heartsmagic
Bem, eu reformulei para tornar ainda mais claro :-).
sup
2

Outra solução, melhor eu acho, é adicionar Alt+ Acomo um atalho para alternar a propriedade "Always on Top" de uma janela. Isso pode ser feito via gconf-editor . Basta seguir as instruções simples fornecidas neste vídeo .

EDIT: copiado do vídeo

  1. se você estiver usando as versões 12.04 e& 12.10, precisará instalar o gconf-editor

    sudo apt-get install gconf-editor

  2. Digite o gconf-editorterminal.

  3. Clique em apps

  4. Ir para a metacidade

  5. window_keybindings

  6. clique direito dentro da caixa direita e clique em new key

  7. Escolha stringna lista suspensa.

  8. Adicione a palavra toggle_above

  9. Escreva qualquer comando que desejar. ou seja: A e pressione OK

Feito :-)

tamakisquare
fonte
Não funcionou :-(
Suhaib 18/11/2012
Sim, também não funciona para a 12.10.
sup
Deve ser o dconf-editor na versão 14.04 ... mas também não funciona.
Ed Villegas
1

Tentei usar o wmctrlcomando toggle, mas não funcionou na minha configuração do Ubuntu. A alternância ativaria, mas não desativaria. (Eu acho que pode ser porque estou usando o ambiente de área de trabalho gnome, no qual wmctrlestá um AFAIK levemente quebrado).

De qualquer forma, depois de muita pesquisa e elaboração de como escrever código adequado no bash, criei um único comando que usa os wmctrlcomandos dentro de uma camada de lógica para alternar o estado 'sempre no topo' efetivamente na área de trabalho atual do GNOME. Publiquei esta resposta no Ask Unix / Linux, mas pensei em publicá-la aqui também, caso alguém tivesse o mesmo problema.

Aqui está o comando:

bash -c 'wmctrl -r :ACTIVE: -b $([[ $(xprop -id $(xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}") _NET_WM_STATE) =~ "ABOVE" ]] && echo "remove" || echo "add"),above'

Ele verifica a propriedade de estado da janela ativa "_NET_WM_STATE" usando xpropse se contiver o texto "ACIMA" que significa que a opção 'sempre no topo' está ativa. Depois, basta executar o wmctrlcomando com o parâmetro addou removeconforme apropriado.


Divisão de comando (cada comando é inserido no próximo, substituindo o espaço reservado):

  • Obter ID da janela ativa:

    xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}"
    
  • Obtenha o estado da janela xpropusando o ID:

    xprop -id $(■) _NET_WM_STATE
    
  • Verifique se o estado contém "ACIMA", indicando que a janela está definida como "sempre no topo":

    [[ $(■) =~ "ABOVE" ]]
    
  • Retorne "remove" se verdadeiro, caso contrário, retorne "add":

    ■ && echo "remove" || echo "add"
    
  • execute o wmctrlcomando usando o valor retornado como parâmetro:

    wmctrl -r :ACTIVE: -b $(■),above
    
  • Envie tudo para, bashpara que você possa usar a substituição de comandos ${ ... }, a avaliação booleana do bash [[ ... ]]e o operador de correspondência regex =~:

    bash -c '■'
    

    Este último passo, em particular, levou muito tempo para descobrir. Até que eu percebi que os atalhos de teclado não estavam sendo executados no bash por padrão, eu não fazia ideia do porquê dos comandos estarem funcionando no console enquanto eu os estava testando, mas silenciosamente falhando quando executados diretamente como um atalho de teclado. Isso me levou à parede por séculos!

Nota: porque você precisa de aspas ao redor do comando que está enviando para o bash, tive que ter cuidado ao escrever o comando, para nunca mais do que um nível a mais (usando aspas duplas). Qualquer aninhamento adicional de seqüências de caracteres entre aspas exigiria muitas barras invertidas confusas para escapar das aspas.

Geoff Davids
fonte
0

Pode ser tarde demais, mas se alguém procurar novamente e vir aqui, existe, para mim, uma solução mais simples:

No ubuntu e em muitas outras distribuições usando GTK (elas compartilham principalmente o painel de configurações), você pode ir para Configuração -> teclado> atalho. Na "lista" de atalhos, você encontrará a entrada não atribuída para manter uma janela no topo. Não tenho certeza do nome em inglês, mas em francês é "Ativador / Desativador da Mente no Primeiro Plano do Fenômeno".

Defina e é isso :)

Gabriel Genois
fonte