如何让 Nemo 在前台启动?

如何让 Nemo 在前台启动?

我从 Ubuntu 13.10 Saucy 存储库安装了 Nemo,并用它替换了 Nautilus,如下所示这里

$ xdg-mime default nemo.desktop inode/directory application/x-gnome-saved-search
$ gsettings set org.gnome.desktop.background show-desktop-icons false
$ gsettings set org.nemo.desktop show-desktop-icons true

现在,当我从 Unity Launcher 启动 Nemo 时,它会将其窗口置于屏幕上其他窗口的下方。我希望 Nemo 像 Nautilus 和其他所有应用程序一样在前台启动。

答案1

后来,我开始在其他应用程序中遇到此问题,然后我开始寻找解决方案,不是针对 Nemo,而是针对一般情况,并在Ubuntu 论坛, 和询问 Ubuntu也一样。

这是由 Compiz 引起的,因此您必须使用compizconfig-settings-managersudo apt-get install compizconfig-settings-manager,然后ccsm使用 Alt+F2 启动命令,或从终端启动,或者从破折号中搜索“CompizConfig 设置管理器”)。

  1. 打开“常规选项”
  2. 在“关注和提高行为”选项卡下,将“关注预防级别”设置为“关闭”

按照这些步骤后,我所有新打开的窗口都会按预期显示在前台。

答案2

关于 nemo(以及一些其他应用程序)在后台启动的问题在 Ubuntu 14.04 中仍然存在。

您自己提供的解决方案(Barta Tamás,答案 1)也仍然可以在 14.04 下解决此问题:

  1. (安装并)打开 compizconfig-settings-manager
  2. 在“常规”下打开“常规选项”
  3. 选择“关注并提高行为”标签
  4. 将“焦点预防级别”设置为“关闭”

并且所有新打开的应用程序现在都将出现在前台。

答案3

一个更通用(但也更灵活)的解决方案是使用devilspie2

安装包devilspie2,将命令添加/usr/bin/devilspie2到您的启动应用程序中,创建文件~/.config/devilspie2/window_open.lua并填充以下内容:

if (get_application_name() == "nemo") then
  focus_window()
end

您可以轻松添加其他命令,因此如果您还希望 Nemo 出现在屏幕中央,请尝试以下操作:

if (get_application_name() == "nemo") then
  focus_window()
  center()
end

这应该适用于大多数窗口管理器,而不仅仅是支持 Compiz 的窗口管理器!

对于调试(devilspie2 --debug从 shell 运行),最好这样做:

function debug_output(header, window_information)
  if window_information == "" then
    debug_print(header .. "---")
  else
    debug_print(header .. window_information)
  end
end

debug_output("Application:   ", get_application_name())
debug_output("Window Name:   ", get_window_name())
debug_output("Window Type:   ", get_window_type())
debug_output("Window Class:  ", get_window_class())
debug_output("Window Role:   ", get_window_role())

geometry = string.format("x=%d, y=%d, width=%d, height=%d",
                         get_window_geometry())
debug_output("Geometry:      ", geometry)

if (get_application_name() == "nemo") then
  focus_window()
end

相关内容