当前位置: 首页 > news >正文

GNOME扩展入门:日期时间

 Getting Started | GNOME JavaScript

1.扩展路径

~/.local/share/gnome-shell/extensions/

2.新建文件夹

datetime@sonichy

3.metadata.json

{"uuid": "datetime@sonichy","name": "datetime","description": "Display date and time on GNOME taskbar","author": "sonichy","version": "1.0","shell-version": [ "45", "46", "47", "48" ],"url": "https://github.com/sonichy/Cinnamon_Applet"
}

4.extension.js

import GLib from "gi://GLib";
import St from 'gi://St';import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js';
import * as Main from 'resource:///org/gnome/shell/ui/main.js';
import * as PanelMenu from 'resource:///org/gnome/shell/ui/panelMenu.js';
import * as PopupMenu from 'resource:///org/gnome/shell/ui/popupMenu.js';export default class DatetimeExtension extends Extension {enable() {// Create a panel buttonthis._indicator = new PanelMenu.Button(0.0, this.metadata.name, false);var label = new St.Label({ text: '00:00\n1/1 一' });label.set_style('text-align:center');        this._indicator.add_child(label);        // Add the indicator to the panelMain.panel.addToStatusArea(this.uuid, this._indicator);const menuItem = new PopupMenu.PopupMenuItem('');this._indicator.menu.addMenuItem(menuItem);this._timeout = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 1, () => {var date = new Date();var h = date.getHours();if (h < 10)h = "0" + h;var m = date.getMinutes();if (m < 10)m = "0" + m;var day = date.getDay();var weekday = ["日", "一", "二", "三", "四", "五", "六"];var weekday1 = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];const text = h + ' : ' + m + '\n' + (date.getMonth() + 1) + '/' + date.getDate() + ' ' + weekday[day];            label.set_text(text);menuItem.label.text = date.toLocaleString() + ' ' + weekday1[day];// Run as loop, not once.return GLib.SOURCE_CONTINUE;});}disable() {this._indicator?.destroy();this._indicator = null;if (this._timeout) {GLib.source_remove(this._timeout);this._timeout = null;}}}

5.调试

dbus-run-session -- gnome-shell --nested --wayland

6.重载

注销

7.预览图

相关文章:

  • MODBUS转EtherNetIP边缘计算网关配置优化:Logix5000与ATV340高效数据同步与抗干扰方案
  • shadcn/radix-ui的tooltip高度定制arrow位置
  • 如何将 PDF 中的文本提取为 JSON 格式
  • 17.磁珠在EMC设计中的运用
  • 什么是关系型数据库
  • C++多态(实现部分)(一)
  • 【MySQL数据库入门到精通-06 DCL操作】
  • AXP2101入门
  • sass 变量
  • 【前端】基于 Promise 的 HTTP 客户端工具Axios 详解
  • pycharm2024.3.2项目解释器选择问题
  • CentOS 7 系统中,防火墙要怎么使用?
  • TDengine 流计算引擎设计
  • 【Yii2】Yii2框架的一次BUG排查
  • 第十天 Shader编程:编写简单表面着色器 Addressable资源管理系统 DOTS(面向数据技术栈)入门
  • 给git配置SSH(github,gitee)
  • Android 智能家居开发:串口是什么,为什么android版本都比较低?粘包半包的原因以及处理思路,缓冲区处理,以及超时清空缓冲区....
  • C++开发之设计模式
  • 中小企业技术跃迁:云原生后端如何实现高效低成本系统建设
  • Java:XML被自动转义
  • 给3亿老人爆改房子,是门好生意吗?
  • 贵州赤水丹霞大瀑布附近山体塌方车辆被埋,景区:无伤亡,道路已恢复
  • 停电催生商机,中国品牌 “照亮” 西班牙
  • 八成盈利,2024年沪市主板公司实现净利润4.35万亿元
  • 十二届上海市委第六轮巡视全面进驻,巡视组联系方式公布
  • 万达电影去年净利润亏损约9.4亿元,计划未来三年内新增25块IMAX银幕