我已经使用带有 gnome-shell(Gnome 3)的 Ubuntu Oneiric Ocelot(11.10)有一段时间了,我正在尝试适应它。
另一个问题询问是否可以禁用 Gnome 3 中的动态工作区创建,目前看来还不完全可行。
我更希望设置固定数量的工作区,这些工作区应在登录时创建,即使其中没有窗口也应保持活动状态,同时仍允许我动态创建更多工作区。目前在 Gnome 3 中可以实现这样的功能吗?
一个肮脏的黑客手段可能是在启动时强制在每个工作区中创建一些微型窗口。使用 devilspie 可能可以做到这一点,但我不知道这是否仍然适用于 Gnome 3。最好的情况是以某种方式创建持久的隐形窗口。有人知道方法吗?
答案1
我知道这是一篇旧帖子,但我自己搜索时偶然发现了它。我正在使用 ubuntu 12.04,我创建了一个补丁,可以完全实现您的描述。
免责声明:
如果 gnome-shell 更新,并且进行了足够多的更改导致补丁被拒绝,此补丁可能会停止工作。如果您想尝试,请确保在应用补丁之前备份所有内容。如果出现问题,您可以恢复文件并再次获得可用的桌面。
免责声明结束
只需将下面的代码保存在文件中(例如:gnome-shell.patch):
--- /usr/share/gnome-shell/js/ui/main.js 2012-03-29 21:15:44.899552355 +0300
+++ /usr/share/gnome-shell/js/ui/main.js 2012-03-29 21:38:17.603507004 +0300
@@ -273,9 +273,20 @@
*/
const LAST_WINDOW_GRACE_TIME = 1000;
+function _getFixedWorkspaces(){
+ let settings = new Gio.Settings({ schema: 'org.gnome.fixedWorkspaces' });
+ let nr_workspaces = settings.get_int('minworkspace');
+ if (nr_workspaces == 0){
+ return 1;
+ }
+ return nr_workspaces;
+}
+
+
function _checkWorkspaces() {
let i;
let emptyWorkspaces = [];
+ let min_wrk = _getFixedWorkspaces();
if (!Meta.prefs_get_dynamic_workspaces()) {
_checkWorkspacesId = 0;
@@ -284,6 +295,7 @@
for (i = 0; i < _workspaces.length; i++) {
let lastRemoved = _workspaces[i]._lastRemovedWindow;
+ if ( i < min_wrk-1){ _workspaces[i]._keepAliveId = true; }
if ((lastRemoved &&
(lastRemoved.get_window_type() == Meta.WindowType.SPLASHSCREEN ||
lastRemoved.get_window_type() == Meta.WindowType.DIALOG ||
此补丁会查找 dconf 设置来确定所需的最小工作区数量。创建一个名为 org.gnome.fixedWorkspaces.gschema.xml 的文件并粘贴以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
<schema path="/org/gnome/fixedWorkspaces/" id="org.gnome.fixedWorkspaces" gettext-domain="fixedWorkspaces">
<key type="i" name="minworkspace">
<default>4</default>
<range min="1" max="32"/>
<summary>Minimum workspaces</summary>
<description>This option sets the minimum number of desktops that the shell should stat with.</description>
</key>
</schema>
</schemalist>
现在您必须将模式文件复制到 gnome 知道在何处查找的位置:
cp org.gnome.fixedWorkspaces.gschema.xml /usr/share/glib-2.0/schemas/
编译模式:
glib-compile-schemas /usr/share/glib-2.0/schemas/
最后,应用 gnome-shell 补丁:
patch /usr/share/gnome-shell/js/ui/main.js < gnome-shell.patch
注销并重新登录,您应该至少有 4 个工作区(默认值)。您可以使用 dconf-editor 自定义工作区数量。