应用程序(Firefox 默认浏览器)在第二个工作区中打开,而从第一个工作区启动它,此前它已由 Wine 中运行的程序(坦克世界)打开。
另外,启动计算机后,Firefox 一直在第二个工作区打开,而主密码弹出窗口位于我打开它的第一个工作区上。
如果焦点也转移到第二个工作区上的 Firefox,情况会变得更加混乱,您无法按下它上面的任何按钮,就像它被冻结了一样,因为另一个/第一个工作区上的弹出主密码窗口实际上被隐藏了,需要先退出。
我正在使用四个固定工作区,而不是按需工作区,尽管我认为这与它无关。
我正在使用 Ubuntu 18.04 LTS 64 位。
原则上,临时修复该问题的解决方案是在 Wine/WoT 中打开在第一个用户空间中运行的 Firefox,这似乎可以“修复”在第一个用户空间中打开 FF 的问题,但是当尝试在不同的工作空间上打开 FF 进行测试时,同样的问题仍然存在,它会不断弹回到第二个用户空间。
此外,在第一个用户空间上多次打开 FF 之后,第二个用户空间上的打开似乎仍然存在。
答案1
您应该检查 Firefox 中是否启用了“恢复上一个会话”?如果启用了,您可以通过禁用该功能来解决问题。
启用该功能至少可以触发 Xubuntu 16.04、18.04 和 20.04 安装中的此行为。但是我认为这不是有意为之。
答案2
我自己用以下方法解决了这个问题工具在启动后将 Firefox 固定到位。它的工作原理是启动 Firefox,等待一会儿,然后使用 xdotool 查找 Firefox 窗口并将其重新定位到当前工作区。
目前,我仅将其设置为仅在首次运行时重新定位窗口。如果已经打开了 Firefox 窗口,它将启动一个新窗口,而不是重新定位现有窗口。
创建如下脚本:
#!/bin/bash
profile="$1"
ff(){
if [[ -z "$profile" ]]; then
firefox & disown
else
firefox -P "$profile" & disown
fi
}
desktop=`xdotool get_desktop`
echo "Current Desktop = $desktop"
if [[ -z "`xdotool search --class firefox`" ]]; then
echo "FF not found, launching..."
ff
# Wait for firefox to load and come to focus, then move to current desktop
for x in {1..8}; do
sleep 1
xdotool search --class firefox || continue
focus=`xdotool getwindowfocus getwindowname`
echo "Window focus: $focus"
xdotool set_desktop $desktop
xdotool search --class firefox set_desktop_for_window %@ $desktop
echo $focus | grep "Mozilla Firefox$" && break
done
# Retry command as the above one seems to fail 10% of the time
sleep 1
xdotool set_desktop $desktop
xdotool search --class firefox set_desktop_for_window %@ $desktop
else
echo "FF already exists, launching a new window"
ff
fi
使其可执行chmod +x <scriptname.sh>
然后编辑您的桌面启动器以指向新脚本。
或者,您可以调用它scriptname.sh profilename
来启动特定的配置文件。
答案3
这是几年前 Firefox 中引入的一项功能。我记得读过关于它即将推出的消息,但当时没有测试它。最近,它开始给我带来很多困扰,因为我的 DE 使用动态工作区,而 Firefox 几乎总是打开错误的工作区。
- 打开新标签并输入
about:config
地址。 - 搜索
widget.disable-workspace-management
并切换到真的。
然后打开 Firefox 设置并根据您的喜好打开“恢复上一个会话”开关:
- 开启 = 保留上一次会话的记录;
- 关闭 = 不恢复上次会话的任何状态。
在设置中切换开关的最后一部分对于应用之前关于工作区管理的更改也很重要。如果没有它,修复就无法进行。
我更喜欢保留上一个会话的标签,但 Firefox 在我面前打开,而不是在不同的工作区,因此我将会话设置切换为关闭,然后重新打开。