当前位置:网站首页>Cinnamon 任务栏网速
Cinnamon 任务栏网速
2022-07-07 11:09:00 【海天鹰】
肝了几天, Cinnamon 任务栏网速做好了,无需编译,真香!
icon.png
metadata.json
{
"uuid": "[email protected]",
"name": "CMDU",
"description": "Uptime, CPU usage, memory usage, download bytes, upload bytes, download speed, upload speed"
}
applet.js
const Applet = imports.ui.applet;
const Util = imports.misc.util;
const {GLib, Gio} = imports.gi;
const PopupMenu = imports.ui.popupMenu;
const St = imports.gi.St;
var label;
var db0 = 0, ub0 = 0, tt0=0, idle0 = 0;
function MyApplet(orientation, panel_height, instance_id) {
this._init(orientation, panel_height, instance_id);
}
MyApplet.prototype = {
__proto__: Applet.TextApplet.prototype,
_init: function(orientation, panel_height, instance_id) {
Applet.TextApplet.prototype._init.call(this, orientation, panel_height, instance_id);
//global.logError('sonichy');
this.set_applet_label("↑ 0KB/s\n↓ 0KB/s");
this.menuManager = new PopupMenu.PopupMenuManager(this);
this.menu = new Applet.AppletPopupMenu(this, orientation);
this.menuManager.addMenu(this.menu);
label = new St.Label();
this.menu.addActor(label);
//https://gjs.guide/guides/gjs/asynchronous-programming.html
//GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 1, this.update); //real name function do not run
GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 1, () => {
var net = this.net();
this.set_applet_label("↑ " + this.B2G(net.ubs) + "/s\n↓ " + this.B2G(net.dbs) + "/s");
var s = _("Uptime: " + this.uptime() + "\nCPU: " + this.cpu() + "%\nMem: " + this.mem() + "\nUp: " + this.B2G(net.ub) + "\nDown: "+ this.B2G(net.db));
this.set_applet_tooltip(s); //resize flash
label.set_text(s);
return true; // loop
});
},
uptime: function() {
//https://gjs.guide/guides/gio/file-operations.html
const file = Gio.File.new_for_path('/proc/uptime');
const [, contents, etag] = file.load_contents(null);
var t = contents.toString().split(' ');
var tt = Number(t[0]);
var h = ~~(tt/3600);
var m = ~~(tt%3600/60);
if (m < 10)
m = '0' + m;
var s = ~~(tt%3600%60);
if (s < 10)
s = '0' + s;
var hms = h + ':' + m + ':' + s;
return hms;
},
cpu: function() {
const file = Gio.File.new_for_path('/proc/stat');
const [, contents, etag] = file.load_contents(null);
var s = contents.toString().split('\n');
var ca = s[0].split(/\s+/);
var tt = 0;
for (var i=1; i<ca.length; i++) {
tt += Number(ca[i]);
}
global.log(tt);
var idle = Number(ca[4]);
var p = ~~(((tt - tt0) - (idle - idle0)) * 100 / (tt - tt0));
tt0 = tt;
idle0 = idle;
return p;
},
mem: function() {
const file = Gio.File.new_for_path('/proc/meminfo');
const [, contents, etag] = file.load_contents(null);
var s = contents.toString().split('\n');
var MT = s[0].split(/\s+/);
var MF = s[1].split(/\s+/);
var mt = Number(MT[1]);
var mf = Number(MF[1]);
var mu = mt - mf;
var p = ~~(mu / mt * 100);
var m = this.B2G(mu*1024) + ' / '+ this.B2G(mt*1024) + ' = ' + p + '%';
return m;
},
net: function() {
const file = Gio.File.new_for_path('/proc/net/dev');
const [, contents, etag] = file.load_contents(null);
var l = contents.toString().trim().split('\n');
var db = 0, ub = 0;
for (var i=2; i<l.length; i++) {
var la = l[i].trim().split(/\s+/);
db += Number(la[1]);
ub += Number(la[9]);
}
var dbs = db - db0;
var ubs = ub - ub0;
db0 = db;
ub0 = ub;
return {db, ub, dbs, ubs};
},
B2G: function(b) {
var s = '';
if (b > 999999999)
s = (b / 1073741824).toFixed(2) + ' GB';
else{
if (b > 999999)
s = (b / 1048576).toFixed(2) + ' MB';
else{
if (b > 999)
s = ~~(b / 1024) + ' KB';
else
s = b + ' B';
}
}
return s;
},
update: function() {
var date = new Date();
var s = date.getFullYear() + "/" + (date.getMonth()+1) + "/" + date.getDate() + "\n" + date.getHours() + ":" + date.getMinutes()+ ":" + date.getSeconds();
this.set_applet_label(s);
return true; // loop
},
on_applet_clicked: function() {
//Util.spawnCommandLine("gnome-system-monitor");
this.menu.toggle();
}
};
function main(metadata, orientation, panel_height, instance_id) {
return new MyApplet(orientation, panel_height, instance_id);
}
边栏推荐
- Analysis of DHCP dynamic host setting protocol
- Layer pop-up layer closing problem
- 国泰君安证券开户怎么开的?开户安全吗?
- Initialization script
- 【无标题】
- Sed of three swordsmen in text processing
- 飞桨EasyDL实操范例:工业零件划痕自动识别
- Leetcode skimming: binary tree 27 (delete nodes in the binary search tree)
- ACL 2022 | small sample ner of sequence annotation: dual tower Bert model integrating tag semantics
- 有什么类方法或是函数可以查看某个项目的Laravel版本的?
猜你喜欢

Lingyunguang of Dachen and Xiaomi investment is listed: the market value is 15.3 billion, and the machine is implanted into the eyes and brain
![[untitled]](/img/6c/df2ebb3e39d1e47b8dd74cfdddbb06.gif)
[untitled]

红杉中国完成新一期90亿美元基金募集

How to apply @transactional transaction annotation to perfection?

Importance of database security

Aosikang biological sprint scientific innovation board of Hillhouse Investment: annual revenue of 450million yuan, lost cooperation with kangxinuo

2022 practice questions and mock examination of the third batch of Guangdong Provincial Safety Officer a certificate (main person in charge)

Cloud detection 2020: self attention generation countermeasure network for cloud detection in high-resolution remote sensing images

About how appium closes apps (resolved)

MATLAB中polarscatter函数使用
随机推荐
Ogre入门尝鲜
[learn wechat from 0] [00] Course Overview
HZOJ #240. Graphic printing IV
免费手机号码归属地API查询接口
Grep of three swordsmen in text processing
.Net下極限生產力之efcore分錶分庫全自動化遷移CodeFirst
Coscon'22 community convening order is coming! Open the world, invite all communities to embrace open source and open a new world~
Cloud detection 2020: self attention generation countermeasure network for cloud detection in high-resolution remote sensing images
【学习笔记】线段树选做
Sed of three swordsmen in text processing
在字符串中查找id值MySQL
2022a special equipment related management (boiler, pressure vessel and pressure pipeline) simulated examination question bank simulated examination platform operation
Shortcut key of Bash
[untitled]
2022 polymerization process test question simulation test question bank and online simulation test
为租客提供帮助
MySQL入门尝鲜
谷歌浏览器如何重置?谷歌浏览器恢复默认设置?
【Presto Profile系列】Timeline使用
Leetcode brush question: binary tree 24 (the nearest common ancestor of binary tree)