python - Linux 桌面文件 Exec 不使用用户 session

标签 python linux freedesktop.org

我有一个 python 脚本文件,当我从终端使用它时,它可以完美地工作。

现在我创建了以下 .desktop 文件以便轻松启动它:

[Desktop Entry]
Name=Test
GenericName=Test
Comment=My test script
Type=Application
Exec=/opt/test.py
Icon=/opt/test.png
Categories=Utils;

当我启动它时,会出现 GTK 窗口,但单击调用 init.d 脚本的按钮会使其无法正常工作。

因此添加 Terminal=true 使其可以完美工作,但我不想打开该终端。

所以我添加了以下代码来记录环境变量:

import os

with open("/tmp/py_env.log", "w") as env_log:
  env_log.write(str(os.environ))

并发现差异。

所以我的问题是如何编写 .desktop 文件,以便我的应用程序运行就像我从终端启动它一样(没有打开的终端:))

最佳答案

问题是有效的,但我认为“复制终端环境”是解决它的错误方法。

事实上,应用程序工作的原因并不是它从终端启动,而是终端碰巧有一些对您的应用程序很重要的环境变量.

因此,您的目标应该是始终正确设置这些环境变量,而不是假设终端环境总是碰巧包含它们所有用户的时间。

因此,您应该:

  1. 检查两个环境中哪些环境变量不同
  2. 列出重要的内容(即那些使 .desktop 文件正常工作的内容),以及脚本正常工作所需的值
  3. 要么:
    • 为您的 Python 脚本创建一个包装脚本,以正确初始化这些环境变量,或者
    • 从 Python 脚本本身内部设置这些环境变量。

关于python - Linux 桌面文件 Exec 不使用用户 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17390592/

相关文章:

python - Django Timezone Awareness - 以 UTC 格式存储的数据

python - 将 3D 数组导出到 Excel 工作簿

c++ - 通过 C++ 访问使用 mktemp for Linux 制作的文件

specifications - 程序应该创建 XDG 文件夹吗?

linux - 在桌面上显示当前目录的常用 Linux 命令是什么?

python - 实时从子进程中读取标准输出

python - 我们如何使用 np.polyfit 来拟合没有常数项的多项式

regex - 根据文件名使用 bash 和 Perl 批量重命名文件

linux - 关闭接口(interface) Down 上的所有 TCP 套接字

xml-parsing - 免费桌面应用程序流 XML : DTD?