例如,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)接收到的参数传递给程序。