在Ubuntu 12.04的默认图形模式下使用任务切换时,如果它们是同一类型的多个窗口,例如。多个终端窗口,您可以一起查看所有窗口,然后选择所需的窗口。
我的问题是这些窗口的顺序不断变化。它遵循“最后使用”的顺序。我希望它们始终保持固定的顺序;我该怎么做?
在Ubuntu 12.04的默认图形模式下使用任务切换时,如果它们是同一类型的多个窗口,例如。多个终端窗口,您可以一起查看所有窗口,然后选择所需的窗口。
我的问题是这些窗口的顺序不断变化。它遵循“最后使用”的顺序。我希望它们始终保持固定的顺序;我该怎么做?
Answers:
您可以考虑使用台式机来获得所需的结果,而不是更改统一的代码库。
在CompizConfigSettingsManager中使用Compiz Desktop Cube的示例
打开CompizConfigSettingsManager(ccsm
)并更改设置以匹配以下内容:
打开终端1
使用键盘快捷键CTRL-ALT->(向右箭头)转到右侧的下一个桌面。
打开2号航站楼
使用键盘快捷键CTRL-ALT->(向右箭头)再次转到右侧的下一个桌面。
打开3号航站楼
使用键盘快捷键CTRL-ALT-<-(向左箭头)转到包含终端2的上一个桌面(或两次回到终端1)。
另外一个选项
使用CompizConfig SettingManager中的视口管理器并分配一个组合键,以直接转到您选择的桌面
注意:到目前为止,我只能使10个工作,尽管使用此方法应该可以使12个工作。
更新:基于评论中表达的关注:
只需右键单击gedit标题栏,然后选择始终在可见的工作区...
另外一个选项:
除了为多个活动打开单独的终端(或工作区),您还可以在gnome终端中使用选项卡。可以从终端首选项中使用选项卡切换的快捷键。见下文:
我认为您可以通过修改Unity 7的源代码来实现。只需按照开发者网站上描述的步骤进行操作,但是在开始构建之前,请先打开:./trunk/plugins/unityshell/src/unityshell.cpp
并看一下SetUpAndShowSwitcher
功能:
void UnityScreen::SetUpAndShowSwitcher(switcher::ShowMode show_mode)
{
RaiseInputWindows();
if (!optionGetAltTabBiasViewport())
{
if (show_mode == switcher::ShowMode::CURRENT_VIEWPORT)
show_mode = switcher::ShowMode::ALL;
else
show_mode = switcher::ShowMode::CURRENT_VIEWPORT;
}
auto results = launcher_controller_->GetAltTabIcons(show_mode == switcher::ShowMode::CURRENT_VIEWPORT,
switcher_controller_->show_desktop_disabled());
if (switcher_controller_->CanShowSwitcher(results))
switcher_controller_->Show(show_mode, switcher::SortMode::FOCUS_ORDER, results);
}
在这里您可以清楚地看到这正是我们想要的功能。上部负责切换视口模式:
每当我们进入一组应用程序或从该组中移出时,就会出现这种切换。optionGetAltTabBiasViewport
指示何时发生。然后GetAltTabIcons
涉及为了获得正确的图标。最后,Show
带有的函数SortMode::FOCUS_ORDER
被调用以显示排序后的图标。SortMode是一个枚举:
enum class SortMode
{
LAUNCHER_ORDER,
FOCUS_ORDER,
};
并更改FOCUS_ORDER
为LAUNCHER_ORDER
应该可以解决您的问题。您可以在调用前插入一个附加的if语句,Show
以防止启动器订单排序ShowMode::ALL
。
请注意,Unity 8的源代码看起来完全不同。因此,此解决方案仅适用于Unity 7。在修复了丢失的依赖项半小时之后,又与cmake战斗了一个小时,我决定不破坏我的系统,明天再在VM中进行尝试;)