Como desabilitar o fechamento de uma janela

5

Pode parecer ridículo, mas eu quero evitar fechar uma janela no Ubuntu. Eu quero fornecer aos meus usuários um ambiente altamente seguro, sem qualquer ambiente de desktop com apenas uma janela aberta. Agora quero garantir que o usuário não feche essa janela. Existe alguma maneira de navegar com compiz para que não haja como um usuário fechar a janela? Não pressionando o botão fechar, não pressionando alt + f4, etc.?

Estou aberto para usar qualquer gerenciador de janelas entre os disponíveis em 12.04. Qualquer um de compiz, metacity e outros. Eu também estou disposto a entrar em contato com o código-fonte, se necessário.

EDIT: Apenas desabilitar ALT + F4 do sistema operacional não resolve o problema. Isso ocorre porque alguns aplicativos emitem comandos próximos ao pressionar ALT + F4 antes mesmo de o evento ser borbulhado no sistema operacional. Eu preciso de uma maneira pela qual a capacidade de fechar a janela seja tirada do próprio aplicativo.

    
por Juzer Ali 01.09.2012 / 14:04

2 respostas

4

O Compiz fornece essa funcionalidade usando o plug-in Window Rules. Você especifica quais janelas para combinar (por nome, tipo, ID, etc.) e, em seguida, você pode aplicar regras a essas janelas. Uma das regras é impedir que a janela seja fechada. Eu usei isso por um longo tempo e posso confirmar que ele funciona bem e impede atalhos de teclado, botão Fechar e botão direito e fechar na barra de tarefas. Praticamente uma maneira de impedir que uma janela feche.

Você também pode usar xprop para fazer isso (o Compiz não é obrigatório). Um exemplo:

xprop -format _NET_WM_ALLOWED_ACTIONS 32a -set _NET_WM_ALLOWED_ACTIONS "_NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW"

Combinado com a localização do ID da janela a ser usado:

window_id='wmctrl -l | grep Insert_Name_of_Window | head -n1 | cut -d" " -f1'
xprop -id "$window_id" -format _NET_WM_ALLOWED_ACTIONS 32a -set _NET_WM_ALLOWED_ACTIONS "_NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW"

Observe que o que xprop está modificando aqui são ações permitidas para a janela, não o estado da janela . Portanto, se você quiser impedir que uma janela seja minimizada, remova a ação _NET_WM_ACTION_MINIMIZE e assim por diante. Se você realmente deseja alterar o estado de uma janela, usar wmctrl é uma ferramenta mais fácil de usar para isso.

Embora a lista padrão de ações permitidas seja provavelmente a mesma para todos os gerenciadores de janelas, talvez você queira executar xprop | grep _NET_WM_ALLOWED_ACTIONS na janela antes, para ter certeza de que está redefinindo todas as outras ações que estavam lá. antes. Não parece haver uma maneira de usar xprop para remover uma única ação permitida, apenas para remover uma propriedade inteira.

Em termos de quão seguro / seguro é, provavelmente é o melhor que você pode obter para uma única janela. Ao remover _NET_WM_ACTION_CLOSE ou outra ação permitida, isso significa que a janela não pode receber essa ação. Não importa qual método um usuário possa tentar fechar a janela, a janela nunca receberá essa ação. Obviamente, há mais componentes para criar uma área de trabalho segura, mas essa deve ser a melhor maneira de evitar que uma janela seja fechada.

No entanto, se o aplicativo oferecer uma maneira de fechar a si mesmo (por exemplo, File > Quit ), ele será fechado quando for acionado. Remover _NET_WM_ACTION_CLOSE impede que a ação seja recebida de fora da janela, mas não impede que a janela acione a ação em si.

    
por Animism 07.12.2012 / 01:12
0

Como eu sei e como você disse, há duas maneiras de impedir o fechamento de uma janela. desativar o botão fechar e o alt + f4

Para desabilitar o botão fechar, minimizar e maximizar no Gnome: Alt + F2 Digite: gconf-editor Ir para o aplicativo > metacity > geral Clique duas vezes no layout dos botões você verá menu: minimizar, maximizar, fechar

você também pode usar a ferramenta de ajuste do Gnome para ativar o menu desativar e os ícones de botão disponíveis aqui link

Eu acho que você pode remover os que você não quer de lá.

Para desativar o atl + f4: No menu, vá para Sistema - Preferências - Atalhos do Teclado Pessoal desativar os atalhos que você deseja

    
por krupal6022 01.09.2012 / 21:15