Fedora release 20 (Heisenbug)
Linux 3.19.8-100.fc20.x86_64 #1 SMP Tue May 12 17:08:50 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
我下载了一个二进制文件并在 中运行它terminal
。该二进制文件是 x86_64 的 xflux。它可以减少夜间的蓝光。
但是,当我运行二进制文件时,我收到此消息This will only work if you're running X on console
我所做的只是提取 tgz 并运行二进制文件。一切似乎都运行正常。
Welcome to xflux (f.lux for X)
This will only work if you're running X on console.
Found 1 screen.
Your location (lat, long) is 13.8, 100.6
Your night-time color temperature is 3400
Going to background: 'kill 9662' to turn off.
我只是对那条消息感到好奇。
非常感谢您的建议,
答案1
我找不到源代码,但我确实对其进行了 strace 处理。从 strace 中可以清楚地看出,该This will only work...
消息只是在实际执行任何操作之前打印的标准消息stdout
。以下是重要的 strace 输出:
write(1, "\33[2J\33[0;0f\n--------\n", 20) = 20
write(1, "Welcome to xflux (f.lux for X)\n", 31) = 31
write(1, "This will only work if you're ru"..., 52) = 52
write(1, "\n", 1) = 1
socket(PF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC, 0) = 3
connect(3, {sa_family=AF_LOCAL, sun_path=@"/tmp/.X11-unix/X0"}, 20) = 0
getpeername(3, {sa_family=AF_LOCAL, sun_path=@"/tmp/.X11-unix/X0"}, [20]) = 0
uname({sysname="Linux", nodename="mingus", ...}) = 0
access("/run/user/1000/gdm/Xauthority", R_OK) = 0
您可以看到,在尝试访问 X11 套接字之前会打印该消息。另一个好的迹象是,如果您在 X 会话之外运行它;您将看到完全相同的消息,后面跟着:
Couldn't open display (null)
答案2
我认为 f.lux 指的是您应该在 X(图形)桌面之前启动 f.lux。
不确定,但也许 x 需要是你的 shell 的一个子进程,比如 flux,而不是来自在 X 中打开的 shell 解释器的 flux