LXDE .desktop文件权限问题

时间:2015-03-08 18:17:29

标签: linux raspberry-pi raspbian

我正在尝试使用Raspbian和LXDE通过Raspberry Pi上的桌面图标/快捷方式/启动器运行Python脚本。我必须使用桌面启动器,因为脚本必须通过一个小触摸屏启动,只接受左键单击而没有键盘。
认为我有一个权限问题,因为脚本在应该执行一些需要root的系统命令时失败。

如果我执行以下操作,脚本将起作用:

  1. 打开终端
  2. 输入sudo python3 program.py
  3. 我尝试使用以下配置使用.desktop文件复制此行为:

    [Desktop Entry]
    Encoding=UTF-8
    Version=1.0
    Type=Application
    Exec=sudo python3 program.py
    Terminal=true
    Icon=path/to/icon.png
    Name=Program Launcher
    

    我想我错过了一些明显的东西,但由于我不使用Linux,我常常迷失在这里。

    编辑:问题不是缺少权限,而是错误的假设工作目录,现在已经解决了。对不起我的困惑。
    详细说明:在开发期间,脚本从其自己的文件夹启动,而桌面启动器使用/home/pi作为工作目录。一般来说,这不是问题,但在脚本中使用了硬编码路径,并且在使用启动器时找不到所需文件。真正的问题是草率吞噬并且返回了许可问题的状态代码。所以这只是一个糟糕的代码问题。

1 个答案:

答案 0 :(得分:1)

正如docs for desktop entries所说:

  

Exec键必须包含命令行。命令行包含   可执行程序,可选地后跟一个或多个参数。   可执行程序可以使用其完整路径指定   仅限可执行文件的名称。 如果没有提供完整路径,则   可执行文件在$ PATH环境变量中查找   桌面环境。可执行程序的名称或路径可以   不包含等号(" =")。参数由空格分隔。

结果是,python3可能不在桌面环境使用的$ PATH中。尝试使用以下内容检查python3sudo的完整路径。

whereis python3
whereis sudo

在我的Archlinux上它给了我/usr/bin/python3/usr/bin/sudo。尝试将您的Dekstop条目修改为:

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Exec=/usr/bin/sudo /usr/bin/python3 program.py
Terminal=true
Icon=path/to/icon.png
Name=Program Launcher

如果有帮助,请告诉我。