web-dev-qa-db-fra.com

Comment désactiver la fermeture d'une fenêtre

Cela peut sembler ridicule, mais je veux éviter de fermer une fenêtre dans Ubuntu. Je souhaite fournir à mes utilisateurs un environnement hautement sécurisé, sans aucun environnement de bureau avec une seule fenêtre ouverte. Maintenant, je veux m'assurer que l'utilisateur ne peut pas fermer cette fenêtre. Existe-t-il un moyen de bidouiller avec compiz pour qu’aucun utilisateur ne puisse fermer la fenêtre? Pas en appuyant sur le bouton de fermeture, ni en appuyant sur alt + f4, etc.?

Je suis ouvert à l’utilisation de n’importe quel gestionnaire de fenêtres parmi ceux disponibles dans 12.04. Soit de la composition, de la métacité et autres. Je suis également disposé à bidouiller avec le code source si nécessaire.

EDIT: Désactiver simplement ALT + F4 à partir du système d'exploitation ne résout pas le problème. En effet, certaines applications émettent des commandes de fermeture en appuyant sur ALT + F4 avant même que l'événement ne soit propagé au système d'exploitation. J'ai besoin d'un moyen par lequel la possibilité de fermer la fenêtre est retirée de l'application elle-même.

5
Juzer Ali

Compiz fournit cette fonctionnalité en utilisant le plugin Window Rules. Vous spécifiez quelles fenêtres doivent correspondre (par nom, type, ID, etc.), puis vous pouvez appliquer des règles à ces fenêtres. L'une des règles consiste à empêcher la fermeture de la fenêtre. Je l’utilise depuis longtemps et peux confirmer que cela fonctionne bien et empêche les raccourcis clavier, les boutons de fermeture, les clics droit et la fermeture de la barre des tâches. C'est un moyen peu efficace d'empêcher la fermeture d'une fenêtre.

Vous pouvez également utiliser xprop pour ce faire (Compiz non requis). Un exemple:

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"

Combiné avec la localisation de l'ID de fenêtre à utiliser:

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"

Notez que ce que xprop modifie ici est actions autorisées pour la fenêtre, pas celui de la fenêtre état. Par conséquent, si vous souhaitez empêcher la minimisation d'une fenêtre, supprimez l'action _NET_WM_ACTION_MINIMIZE, etc. Si vous voulez réellement changer l'état d'une fenêtre, utiliser wmctrl est un outil plus facile à utiliser pour cela.

Bien que la liste par défaut des actions autorisées soit probablement la même pour tous les gestionnaires de fenêtres, vous souhaiterez peut-être exécuter xprop | grep _NET_WM_ALLOWED_ACTIONS sur la fenêtre avant pour vous assurer que vous réinitialisez toutes les autres actions qui existaient auparavant. . Il ne semble pas y avoir de moyen d'utiliser xprop pour supprimer une seule action autorisée, mais uniquement pour supprimer une propriété entière.

En termes de sécurité/sécurité, c'est probablement aussi bon que vous pouvez obtenir pour une seule fenêtre. En supprimant _NET_WM_ACTION_CLOSE ou une autre action autorisée, cela signifie que la fenêtre n'est pas autorisée à recevoir cette action. Quelle que soit la méthode à laquelle un utilisateur peut essayer de fermer la fenêtre, celle-ci ne recevra jamais cette action. Il est évident que la création d’un bureau sécurisé comporte davantage de composants, mais c’est le meilleur moyen d’empêcher la fermeture d’une fenêtre.

Toutefois, si l’application offre un moyen de se fermer elle-même (par exemple, File > Quit), elle se fermera au déclenchement. Supprimer _NET_WM_ACTION_CLOSE empêche l'action d'être reçue de l'extérieur de la fenêtre, mais n'empêche pas la fenêtre de déclencher l'action elle-même.

4
Animism

Comme je le sais et comme vous l'avez dit, il y a deux façons d'éviter de fermer une fenêtre. désactiver le bouton de fermeture et alt + f4

Pour désactiver le bouton Fermer, Réduire, Agrandir dans Gnome: Alt + F2 Entrée: gconf-editor Accédez à app> métacité> général. Double-cliquez sur la disposition des boutons pour afficher le menu: réduire, agrandir, fermer.

vous pouvez également utiliser l'outil Gnome Tweak pour activer la désactivation des icônes de menu et de bouton disponibles ici https://live.gnome.org/GnomeTweakTool

Je pense que vous pouvez supprimer ceux que vous ne voulez pas de là.

Pour désactiver atl + f4: Dans le menu, sélectionnez Système - Préférences - Personnel - Raccourcis clavier désactivez les raccourcis souhaités.

0
krupal6022