Cinnamon开始菜单(1):获取应用数据

看了半天:/usr/share/cinnamon/applets/menu@cinnamon.org,终于挖到了精髓。

Cinnamon.AppSystem.get_default() 获取系统应用数据

get_tree() 获取树机构

get_root_directory() 获取根目录

iter() 遍历

get_name() 获取名称

get_desktop_file_id() 获取desktop的id

lookup_app(desktopId) 获取app

javascript 复制代码
const Applet = imports.ui.applet;
const Cinnamon = imports.gi.Cinnamon;
const CMenu = imports.gi.CMenu;

let appsys = Cinnamon.AppSystem.get_default();

function MyApplet(orientation, panel_height, instance_id) {
    this._init(orientation, panel_height, instance_id);
}

MyApplet.prototype = {
    __proto__: Applet.IconApplet.prototype,

    _init: function(orientation, panel_height, instance_id) {
        Applet.IconApplet.prototype._init.call(this, orientation, panel_height, instance_id);
        this.set_applet_icon_name("cinnamon-symbolic");
        this.set_applet_tooltip(_("StartMenu"));        
    },
    
    on_applet_clicked: function() {
        let tree = appsys.get_tree();
        let root = tree.get_root_directory();
        let iter = root.iter();
        let nextType;
        while (nextType = iter.next()) {
            if (nextType == CMenu.TreeItemType.DIRECTORY) {
                let dir = iter.get_directory();
                global.logError(dir.get_name());
                let iter1 = dir.iter();
                let nextType1;
                while (nextType1 = iter1.next()) {
                    if (nextType1 == CMenu.TreeItemType.ENTRY) {                
                        let desktopId = iter1.get_entry().get_desktop_file_id();                        
                        let app = appsys.lookup_app(desktopId);
                        global.logError(dir.get_name() + " - " + app.get_name());
                        //onclick: app.open_new_window(-1);
                    }
                }
            }
        }
    }
    
};

function main(metadata, orientation, panel_height, instance_id) {
    return new MyApplet(orientation, panel_height, instance_id);
}

输出

javascript 复制代码
error t=2025-06-01T22:22:38Z 附件
error t=2025-06-01T22:22:38Z 附件 - 计算器
error t=2025-06-01T22:22:38Z 附件 - 键盘布局测试器
error t=2025-06-01T22:22:38Z 附件 - 截图 (Xfce4-screenshooter)
error t=2025-06-01T22:22:38Z 附件 - 截图 (Gnome-screenshot)
error t=2025-06-01T22:22:38Z 附件 - 批量重命名
error t=2025-06-01T22:22:38Z 附件 - 文件压缩器
error t=2025-06-01T22:22:38Z 附件 - 虚拟键盘
error t=2025-06-01T22:22:38Z 附件 - 应用程序查找器
error t=2025-06-01T22:22:38Z 附件 - gedit
error t=2025-06-01T22:22:38Z 附件 - LXQt 归档管理器
error t=2025-06-01T22:22:38Z 附件 - Nemo
error t=2025-06-01T22:22:38Z 附件 - PCManFM-Qt 文件管理器
error t=2025-06-01T22:22:38Z 附件 - Pinentry
error t=2025-06-01T22:22:38Z 附件 - Pinentry
error t=2025-06-01T22:22:38Z 图形
error t=2025-06-01T22:22:38Z 图形 - 海天鹰画图
error t=2025-06-01T22:22:38Z 图形 - 海天鹰看图
error t=2025-06-01T22:22:38Z 图形 - FlexBV
error t=2025-06-01T22:22:38Z 图形 - GNOME 之眼
error t=2025-06-01T22:22:38Z 图形 - LXImage-Qt
error t=2025-06-01T22:22:38Z 图形 - ScreenGrab
error t=2025-06-01T22:22:38Z 互联网
error t=2025-06-01T22:22:38Z 互联网 - Avahi SSH 服务器的浏览器
error t=2025-06-01T22:22:38Z 互联网 - Avahi VNC 服务器的浏览器
error t=2025-06-01T22:22:38Z 互联网 - Firefox
error t=2025-06-01T22:22:38Z 互联网 - Microsoft Edge
error t=2025-06-01T22:22:38Z 互联网 - Microsoft Edge
error t=2025-06-01T22:22:38Z 其它
error t=2025-06-01T22:22:38Z 其它 - 查看文件
error t=2025-06-01T22:22:38Z 其它 - 访问提示
error t=2025-06-01T22:22:38Z 其它 - 门户
error t=2025-06-01T22:22:38Z 其它 - 网络管理器小程序
error t=2025-06-01T22:22:38Z 其它 - 文件
error t=2025-06-01T22:22:38Z 其它 - 文件传输
error t=2025-06-01T22:22:38Z 其它 - 系统门户
error t=2025-06-01T22:22:38Z 其它 - 自动运行提示
error t=2025-06-01T22:22:38Z 其它 - Cinnamon Killer Daemon
error t=2025-06-01T22:22:38Z 其它 - filec
error t=2025-06-01T22:22:38Z 其它 - Geoclue Demo agent
error t=2025-06-01T22:22:38Z 其它 - Muffin
error t=2025-06-01T22:22:38Z 其它 - Nemo
error t=2025-06-01T22:22:38Z 其它 - Openbox
error t=2025-06-01T22:22:38Z 其它 - PolicyKit 认证代理
error t=2025-06-01T22:22:38Z 其它 - Portal
error t=2025-06-01T22:22:38Z 其它 - Screensaver
error t=2025-06-01T22:22:38Z 其它 - Where am I?
error t=2025-06-01T22:22:38Z 其它 - Zenity
error t=2025-06-01T22:22:38Z 编程
error t=2025-06-01T22:22:38Z 编程 - Bluefish Editor
error t=2025-06-01T22:22:38Z 编程 - CMake
error t=2025-06-01T22:22:38Z 编程 - Qt Assistant
error t=2025-06-01T22:22:38Z 编程 - Qt D-Bus Viewer
error t=2025-06-01T22:22:38Z 编程 - Qt Linguist
error t=2025-06-01T22:22:38Z 编程 - Qt Widgets Designer
error t=2025-06-01T22:22:38Z 影音
error t=2025-06-01T22:22:38Z 影音 - 海天鹰播放器
error t=2025-06-01T22:22:38Z 影音 - 酷狗
error t=2025-06-01T22:22:38Z 影音 - 音量控制
error t=2025-06-01T22:22:38Z 影音 - mpv 媒体播放器
error t=2025-06-01T22:22:38Z 影音 - PulseAudio 音量控制
error t=2025-06-01T22:22:38Z 影音 - Qt V4L2 test Utility
error t=2025-06-01T22:22:38Z 影音 - Qt V4L2 video capture utility
error t=2025-06-01T22:22:38Z 首选项
error t=2025-06-01T22:22:38Z 首选项 - 背景
error t=2025-06-01T22:22:38Z 首选项 - 常规
error t=2025-06-01T22:22:38Z 首选项 - 窗口
error t=2025-06-01T22:22:38Z 首选项 - 窗口平铺
error t=2025-06-01T22:22:38Z 首选项 - 电源管理
error t=2025-06-01T22:22:38Z 首选项 - 动作
error t=2025-06-01T22:22:38Z 首选项 - 辅助功能
error t=2025-06-01T22:22:38Z 首选项 - 高级网络配置
error t=2025-06-01T22:22:38Z 首选项 - 工作区
error t=2025-06-01T22:22:38Z 首选项 - 绘图板
error t=2025-06-01T22:22:38Z 首选项 - 键盘
error t=2025-06-01T22:22:38Z 首选项 - 开机自启动程序
error t=2025-06-01T22:22:38Z 首选项 - 可移动驱动器和介质
error t=2025-06-01T22:22:38Z 首选项 - 扩展
error t=2025-06-01T22:22:38Z 首选项 - 面板
error t=2025-06-01T22:22:38Z 首选项 - 面板小工具
error t=2025-06-01T22:22:38Z 首选项 - 屏幕保护程序
error t=2025-06-01T22:22:38Z 首选项 - 热区
error t=2025-06-01T22:22:38Z 首选项 - 日期和时间
error t=2025-06-01T22:22:38Z 首选项 - 色彩
error t=2025-06-01T22:22:38Z 首选项 - 声音
error t=2025-06-01T22:22:38Z 首选项 - 手势
error t=2025-06-01T22:22:38Z 首选项 - 首选应用程序
error t=2025-06-01T22:22:38Z 首选项 - 鼠标和触摸板
error t=2025-06-01T22:22:38Z 首选项 - 特效
error t=2025-06-01T22:22:38Z 首选项 - 通知
error t=2025-06-01T22:22:38Z 首选项 - 网络
error t=2025-06-01T22:22:38Z 首选项 - 系统设置
error t=2025-06-01T22:22:38Z 首选项 - 系统信息
error t=2025-06-01T22:22:38Z 首选项 - 显示
error t=2025-06-01T22:22:38Z 首选项 - 选择字体
error t=2025-06-01T22:22:38Z 首选项 - 夜灯
error t=2025-06-01T22:22:38Z 首选项 - 音量控制
error t=2025-06-01T22:22:38Z 首选项 - 隐私
error t=2025-06-01T22:22:38Z 首选项 - 用户与组
error t=2025-06-01T22:22:38Z 首选项 - 帐户详情
error t=2025-06-01T22:22:38Z 首选项 - 主题
error t=2025-06-01T22:22:38Z 首选项 - 桌面 (Pcmanfm-qt)
error t=2025-06-01T22:22:38Z 首选项 - 桌面 (Cinnamon-settings)
error t=2025-06-01T22:22:38Z 首选项 - 桌面小工具
error t=2025-06-01T22:22:38Z 首选项 - Cinnamon Menu Editor
error t=2025-06-01T22:22:38Z 首选项 - Fcitx 5 配置
error t=2025-06-01T22:22:38Z 首选项 - Fcitx 5 配置
error t=2025-06-01T22:22:38Z 首选项 - Fcitx 5 迁移向导
error t=2025-06-01T22:22:38Z 首选项 - Fcitx 5 Qt5 图形界面封装器
error t=2025-06-01T22:22:38Z 首选项 - Fcitx 5 Qt6 图形界面封装器
error t=2025-06-01T22:22:38Z 首选项 - Openbox 设置
error t=2025-06-01T22:22:38Z 首选项 - PulseAudio 音量控制
error t=2025-06-01T22:22:38Z 首选项 - Thunar 首选项
error t=2025-06-01T22:22:38Z 首选项 - Xfce 终端设置
error t=2025-06-01T22:22:38Z 系统管理
error t=2025-06-01T22:22:38Z 系统管理 - 磁盘占用分析器
error t=2025-06-01T22:22:38Z 系统管理 - 海天鹰浮球
error t=2025-06-01T22:22:38Z 系统管理 - 海天鹰文管
error t=2025-06-01T22:22:38Z 系统管理 - 键盘布局
error t=2025-06-01T22:22:38Z 系统管理 - 系统监视器
error t=2025-06-01T22:22:38Z 系统管理 - 下拉式 QTerminal
error t=2025-06-01T22:22:38Z 系统管理 - 用户和用户组
error t=2025-06-01T22:22:38Z 系统管理 - 终端
error t=2025-06-01T22:22:38Z 系统管理 - 终端首选项
error t=2025-06-01T22:22:38Z 系统管理 - Avahi Zeroconf 浏览器
error t=2025-06-01T22:22:38Z 系统管理 - Cinnamon
error t=2025-06-01T22:22:38Z 系统管理 - Cinnamon 2D
error t=2025-06-01T22:22:38Z 系统管理 - Cinnamon (Wayland session)
error t=2025-06-01T22:22:38Z 系统管理 - Fcitx 5
error t=2025-06-01T22:22:38Z 系统管理 - Hardware Locality lstopo
error t=2025-06-01T22:22:38Z 系统管理 - qps
error t=2025-06-01T22:22:38Z 系统管理 - QTerminal
error t=2025-06-01T22:22:38Z 系统管理 - Thunar 文件管理器
error t=2025-06-01T22:22:38Z 系统管理 - Xfce 终端
error t=2025-06-01T22:22:38Z 系统管理 - Xwayland
相关推荐
BD_Marathon几秒前
【Zookeeper】CAP理论——CAP介绍
linux·分布式·zookeeper
赖small强44 分钟前
【Linux 网络基础】HTTPS 技术文档
linux·网络·https·tls
写代码的学渣1 小时前
ubuntu 22.04 新装的系统 xshell 连不上
linux·运维·ubuntu
序属秋秋秋2 小时前
《Linux系统编程之进程环境》【环境变量】
linux·运维·服务器·c语言·c++·操作系统·系统编程
云计算练习生2 小时前
linux shell编程实战 10 Git工具详解与运维场景实战
linux·运维·git
虚伪的空想家5 小时前
KVM的ubuntu虚机如何关闭安全启动
linux·安全·ubuntu
t1987512810 小时前
在Ubuntu 22.04系统上安装libimobiledevice
linux·运维·ubuntu
skywalk816310 小时前
linux安装Code Server 以便Comate IDE和CodeBuddy等都可以远程连上来
linux·运维·服务器·vscode·comate
晚风吹人醒.11 小时前
缓存中间件Redis安装及功能演示、企业案例
linux·数据库·redis·ubuntu·缓存·中间件
Hard but lovely12 小时前
linux: pthread库的使用和理解
linux