我们正在使用Xerox Linux驱动程序在我们的多功能打印机上进行打印。基本上,当您打印驱动程序时会打开一个弹出窗口,让您选择不同的打印选项,然后调用lp进行打印。
这在单用户计算机上运行良好,但当许多用户同时在计算机上登录时,驱动程序不知道要使用哪个DISPLAY(:0
,:1
,:2
等)。因此,在打印时,即使用户可以在:0
或:1
上,弹出式广告也会显示在:2
上。
在打印时,打印子系统作为OS用户运行(Debian上为lp
)。此OS用户没有X会话,因此没有DISPLAY值。由于未设置DISPLAY,因此驱动程序假定:0
是典型的单用户客户端显示。因此,当使用用户切换机制时,CUPS不转发请求用户的DISPLAY,因此如果未指定,驱动程序将采用:0
显示。这会导致user2的驱动程序接口被发送到user1的显示器。
这是打印时日志的片段。您可以看到我使用tech
调用了该过程,但lp
是打印过程:
localhost - tech [06 / May / 2016:15:06:42 -0400]“POST / HTTP / 1.1”200 362创建 - 打印机订阅成功 - 确定
localhost - lp [06 / May / 2016:15:06:55 -0400]“POST / printers / xeroxtq1 HTTP / 1.1“200 346创建 - 成功 - 确定
localhost - lp [06 / May / 2016:15:06:55 -0400]“POST / printer / xeroxtq1 HTTP / 1.1“200 33861发送 - 文档成功 - 确定
我不是在寻找一个完整的演练解决方案(如果你有一个我不会吐在它上面),但是对于我应该尝试做的一些提示。我想到了:
1 - Disabling user switching in GNOME3,但这是最后的解决方案,因为它对用户非常有用
2 - 强制CUPS使用-o DISPLAY选项调用lp
,从调用该进程的用户处获取grepped。如果这是可行的,那就太好了。
3 - 强制GNOME3显示当前使用的用户:0并将空闲用户移动到其他显示器。
我不知道#2是如何完成的,我不确定#3是否可行。
我已经调整了GNOME3来注销闲置时间超过30分钟的用户,但这还不足以解决问题。
任何帮助?