能否使特定环境变量的更改只对单一进程(不包括其子进程)生效?

2022-11-01 20:36:45 +08:00
 MiketsuSmasher

Linux 下的 Telegram 客户端,在带有环境变量 QT_SCREEN_SCALE_FACTORS 时无法正常缩放,使用 env -u telegram-desktop 启动客户端之后缩放和界面都是正常的。但我在去掉这个环境变量后,在客户端里打开外部程序( Ark 、Kate 等)时,这些外部程序就没有缩放了。有没有办法可以让 QT_SCREEN_SCALE_FACTORS 的更改或删除只对 TG 客户端生效,由客户端启动的程序不受影响?

1490 次点击
所在节点    Linux
2 条回复
iamzuoxinyu
2022-11-02 00:14:49 +08:00
如果 tg 是通过 xdg-open 打开的外部程序的话,可以尝试给这些程序的.desktop 文件强制指定下 env ;或者干脆直接魔改 xdg-open (它是个 shell 脚本)。
ysc3839
2022-11-02 11:55:38 +08:00
建议优先考虑解决“带有环境变量 QT_SCREEN_SCALE_FACTORS 时无法正常缩放”。
不然的话应该只有 hook 的方案可行,启动时把环境变量保存后干掉,然后 hook exec 等系统调用,启新进程时把环境变量加上。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/891881

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX