![如果通过“使用以下方式打开文件”启动,应用程序如何获取文件名?](https://linux22.com/image/1018831/%E5%A6%82%E6%9E%9C%E9%80%9A%E8%BF%87%E2%80%9C%E4%BD%BF%E7%94%A8%E4%BB%A5%E4%B8%8B%E6%96%B9%E5%BC%8F%E6%89%93%E5%BC%80%E6%96%87%E4%BB%B6%E2%80%9D%E5%90%AF%E5%8A%A8%EF%BC%8C%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%E6%96%87%E4%BB%B6%E5%90%8D%EF%BC%9F.png)
例如,Windows 启动所选应用程序的新进程,并使用附加命令行参数将要打开的文件的名称传递给该进程(对于我的应用程序:argv[0] - 可执行文件,argv[1] - 可打开文件)。Ubuntu 启动了我的应用程序,但该进程未收到任何附加参数(仅 argv[0])。我的应用程序如何找出用户打开的文件的名称?
答案1
文件管理器将传递您右键单击的文件的 URI 以选择“打开方式”。
在 Linux 桌面中,应用程序使用启动器文件启动。启动器文件是带有扩展名的纯文本文件.desktop
。它包含有关桌面环境的信息,包括如何启动应用程序、使用什么图标、如何以及在菜单中显示应用程序的位置等。Open With Other Application" list in Files (nautilus) is populated by the
系统中存在的 .desktop` 文件。
该.desktop
文件位于Exec=
参数已定义。例如,对于编辑器 Gedit,此行是
Exec=gedit %U
仅当文件Exec=
的条目.desktop
包含参数时,系统才会将从文件(nautilus)接收到的参数传递给程序。