浏览器(和其他程序?)首次在当前 X 会话中打开,然后在同一会话中打开,即使是从另一个 X 会话启动也是如此

浏览器(和其他程序?)首次在当前 X 会话中打开,然后在同一会话中打开,即使是从另一个 X 会话启动也是如此

如果标题的措辞有误,请纠正我,因为我也想理解正确的术语。

我的想法是,我可以使用Ctrl++在不同的窗口管理器之间进行切换Alt,每个窗口管理器都在不同的虚拟控制台上启动。F N

我一直使用一个,但这些天我正在尝试一种新的窗口管理器(XMonad),同时仍然主要使用我使用多年的窗口管理器(i3),所以我经常从一个窗口管理器切换到另一个窗口管理器,反之亦然。

实际上,我有这样的配置:

[[ "$XDG_VTNR" -eq 1 ]] && exec i3
[[ "$XDG_VTNR" -eq 2 ]] && exec xmonad

我注意到的一件事是,如果我打开 Chromium,第一次它将在当前会话中打开,例如 i3,但如果打开另一个 Chromium 进程,即使同时我切换到 xmonad,它也会在 i3 中打开。反之亦然。

我可以控制这种行为吗?如何?

答案1

现代网络浏览器是一个相当大且复杂的软件。为了避免不必要地从头开始启动,Chrome 的设计者让其在启动时查看用户是否已经有另一个 Chrome 进程在运行。

如果存在已在运行的实例,新实例将仅将其命令行参数(或适用于其启动的任何信息)传递给已在运行的实例,并让它打开一个新窗口,而不是启动新副本完整的浏览器引擎。这流程重用通常可以改善用户体验。

显然 Chrome 的设计者没有考虑到已经运行的实例可能是不同会话的一部分的可能性!

如果您运行google-chrome --help,它将描述一些可能的命令行选项。该--user-data-dir=DIR选项可能与此处相关:(强调我的)

--用户数据目录=目录

指定保存用户数据(您的“个人资料”)的目录。默认为$HOME/.config/google-chrome.单独的 Google Chrome 实例必须使用单独的用户数据目录;重复调用 google-chrome 将为给定的用户数据目录重用现有进程。

这表明在每个虚拟控制台上指定要使用的不同用户数据目录可能会解决您的问题。但是,您需要复制您的用户配置文件,让 Chrome 通过网络同步它,或者在第二个虚拟控制台上从头开始配置 Chrome。

相关内容