当前位置: 首页 > 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被自动转义
  • 五粮液一季度净利增长5.8%,今年营收与宏观经济指标保持一致
  • 交通枢纽、产业升级,上海松江新城有这些发展密码
  • 吃菜和吃肉,哪个更“增肌”?
  • 长征十梦舟揽月稳步推进
  • 门票在“缩水”,古镇怎么办
  • 上海一小学百名学生齐聚图书馆:纸质书的浪漫AI无法取代