Anstatt Ihnen zu sagen, wie es geht, werde ich Ihnen sagen, dass Sie das nicht tun sollten.
TL; DR - Ändern Sie Ihr Skript nicht. Konfigurieren Sie stattdessen Ihren Dateimanager oder finden Sie heraus, warum Ihre Benutzer ihn versehentlich ausführen.
BEARBEITEN: Sie scheinen Ihr Skript als etwas Besonderes zu behandeln, als ob die allgemeinen Einstellungen nicht gut genug wären und Ihr Skript eine spezielle Bestätigung des Benutzers benötigt. Ein Doppelklick darauf ist die Bestätigung. Wenn Sie feststellen, dass Ihre Benutzer es versehentlich ausführen, müssen Sie herausfinden, warum sie es tun, und das stattdessen lösen. Dann besteht Ihr eigentliches Problem nicht darin , eine Bestätigung zu verlangen, sondern zu verhindern, dass Ihre Benutzer sie versehentlich ausführen.
Aus der Art und Weise, wie Sie Ihr Problem aufdecken, geht hervor, dass Sie erwarten, dass Ihr Programm (Skript) ausgeführt wird, indem Sie zu dem Speicherort der Datei navigieren und dann im Dateimanager darauf klicken. Denken Sie an alle anderen Programme in Ihrem System. Wie viele fängst du so an? Navigieren Sie zu, /usr/local/bin
wenn Sie Firefox starten? Natürlich nicht. Sie klicken im Anwendungsmenü darauf. (Gnome Tweak ist ein Python-Skript, vielleicht ist das ein besseres Beispiel)
Hoffentlich werden Sie das Klicken im Anwendungsmenü nicht als Unfall betrachten. Ihr Problem besteht also darin, wie Sie Ihr Skript dort anzeigen lassen, anstatt den Dateimanager zu verwenden. Dazu tun Sie Folgendes:
Platzieren Sie Ihr Skript nicht in der Nähe der anderen Dateien, in denen der Benutzer möglicherweise versehentlich darauf klickt (der typische Ort ist /usr/local/bin/
eine systemweite Installation oder ~/.local/bin/
eine Benutzerinstallation).
Erstellen Sie eine Desktop-Eintragsdatei (lesen Sie die Standardspezifikationen ). Hier ist ein minimaler Fall:
[Desktop Entry]
Name=Your script name
Exec=path/for/your/script
Icon=path/for/your/icon/can/be/svg
Terminal=false
Type=Application
und schiebe es in /usr/local/share/applications/your-script.xml
oder ~/.local/share/your-script.xml
.
Zum Schluss laufen update-desktop-database
.
Da Sie auf das Skript doppelklicken, ist es Aufgabe Ihres Dateimanagers, dies zu bestätigen. Es ist nicht die Aufgabe des Skripts, zu bestätigen, ob es ausgeführt werden soll. Nehmen Sie das bis zum Äußersten. Können Sie sich vorstellen, wie lächerlich es wäre, wenn Sie jedes Mal, wenn Sie ein Programm aufrufen, dies bestätigen müssten?
Das einzige Mal, wenn ein Programm um Bestätigung bitten sollte, ist, wenn es etwas möglicherweise Gefährliches und Irreversibles tun will. Zum Beispiel das Überschreiben einer Datei oder das Umgehen des Papierkorbs. Beachten Sie auch, dass es in diesen Beispielen darum geht, ein Programm dazu zu bringen, etwas Bestimmtes zu tun. Es geht nicht darum, solche Programme zu starten. Wenn ein Programm nur dazu dient, so gefährliche Dinge zu tun, sollte es auch keine Bestätigung verlangen.
In der Tat werden Sie von Nautilus (Gnome-Dateimanager) bereits standardmäßig aufgefordert, zu bestätigen, ob Sie ein Skript ausführen möchten (oder es einfach in einem Texteditor öffnen möchten).
Und natürlich ist dieses Verhalten konfigurierbar, sodass der Benutzer es deaktivieren kann (Notizeintrag in ausführbaren Textdateien ).
Fügen Sie Ihrem Skript also keinen nervigen Bestätigungsdialog hinzu. Konfigurieren Sie Ihren Dateimanager richtig. Und lassen Sie Ihre Benutzer dasselbe tun.
if zenity...
oderzenity... || exit