You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Gnome 4x UI Improvements检测Dash to Dock的状态及加载完成情况

Dash to Dock与Gnome 4x UI Improvements兼容问题处理方案

一、检测Dash to Dock是否安装

GNOME扩展的安装目录为~/.local/share/gnome-shell/extensions/,Dash to Dock的固定扩展ID是dash-to-dock@micxgx.gmail.com,通过检查对应目录是否存在即可判断是否安装:

const DASH_TO_DOCK_ID = 'dash-to-dock@micxgx.gmail.com';
const extensionsPath = GLib.get_home_dir() + '/.local/share/gnome-shell/extensions/' + DASH_TO_DOCK_ID;
const isInstalled = GLib.file_test(extensionsPath, GLib.FileTest.EXISTS);

二、检测Dash to Dock是否启用

借助GNOME Shell的ExtensionManager接口,可直接查询扩展的启用状态:

const extensionManager = ExtensionManager.getExtensionManager();
const dashToDockExt = extensionManager.lookup(DASH_TO_DOCK_ID);
const isEnabled = dashToDockExt?.state === ExtensionState.ENABLED;

三、判断Dash to Dock是否完全加载

可以通过两种方式判断:

  1. 监听extension-state-changed事件,当Dash to Dock状态变为ENABLED后,延迟一小段时间确保初始化完成
  2. 检查Dash to Dock暴露的全局对象(如window.dashToDock)是否存在,以此确认加载完成

示例代码:

extensionManager.connect('extension-state-changed', (manager, extension) => {
  if (extension.uuid === DASH_TO_DOCK_ID && extension.state === ExtensionState.ENABLED) {
    GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100, () => {
      if (typeof window.dashToDock !== 'undefined') {
        // Dash to Dock已完全加载,执行后续逻辑
        return GLib.SOURCE_REMOVE;
      }
      return GLib.SOURCE_CONTINUE;
    });
  }
});

四、优化暂停间隔避免登录动画卡顿

原默认500毫秒间隔过长,可根据Dash to Dock的状态动态调整:

  • 未安装/未启用时,使用100毫秒左右的短间隔
  • 已启用且加载完成后,调整为200毫秒(既满足兼容需求,又避免卡顿)

示例代码:

let delay = 100; // 默认短间隔

if (isEnabled) {
  const checkLoaded = () => {
    if (typeof window.dashToDock !== 'undefined') {
      delay = 200;
      return GLib.SOURCE_REMOVE;
    }
    return GLib.SOURCE_CONTINUE;
  };
  GLib.timeout_add(GLib.PRIORITY_DEFAULT, 50, checkLoaded);
}

// 应用延迟执行目标功能
GLib.timeout_add(GLib.PRIORITY_DEFAULT, delay, () => {
  // 执行Gnome 4x UI Improvements的相关功能逻辑
  return GLib.SOURCE_REMOVE;
});

内容的提问来源于stack exchange,提问作者Zayaan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 18:05:24