diff --git a/show-my-ip@triyadi.my.id/README.md b/show-my-ip@triyadi.my.id/README.md new file mode 100644 index 00000000000..b8359f7bf20 --- /dev/null +++ b/show-my-ip@triyadi.my.id/README.md @@ -0,0 +1,20 @@ +# Show My IP + +A simple Cinnamon applet that displays your local IP address directly on the panel. + +## Features + +- Shows your primary IP (Ethernet or Wi-Fi) in the panel. +- Click to see all IP addresses (lo, eth, wlan, docker, etc). +- Clean aligned display. +- Refreshes every 10 seconds. + +## Author + +Triyadi + +## Installation + +1. Clone or download this applet folder. +2. Place it in `~/.local/share/cinnamon/applets/show-my-ip@triyadi.my.id/` +3. Enable it via System Settings → Applets. diff --git a/show-my-ip@triyadi.my.id/files/show-my-ip@triyadi.my.id/README.md b/show-my-ip@triyadi.my.id/files/show-my-ip@triyadi.my.id/README.md new file mode 100644 index 00000000000..b8359f7bf20 --- /dev/null +++ b/show-my-ip@triyadi.my.id/files/show-my-ip@triyadi.my.id/README.md @@ -0,0 +1,20 @@ +# Show My IP + +A simple Cinnamon applet that displays your local IP address directly on the panel. + +## Features + +- Shows your primary IP (Ethernet or Wi-Fi) in the panel. +- Click to see all IP addresses (lo, eth, wlan, docker, etc). +- Clean aligned display. +- Refreshes every 10 seconds. + +## Author + +Triyadi + +## Installation + +1. Clone or download this applet folder. +2. Place it in `~/.local/share/cinnamon/applets/show-my-ip@triyadi.my.id/` +3. Enable it via System Settings → Applets. diff --git a/show-my-ip@triyadi.my.id/files/show-my-ip@triyadi.my.id/applet.js b/show-my-ip@triyadi.my.id/files/show-my-ip@triyadi.my.id/applet.js new file mode 100644 index 00000000000..d19e45e5e7f --- /dev/null +++ b/show-my-ip@triyadi.my.id/files/show-my-ip@triyadi.my.id/applet.js @@ -0,0 +1,59 @@ +const Applet = imports.ui.applet; +const GLib = imports.gi.GLib; +const Lang = imports.lang; +const Mainloop = imports.mainloop; + +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); + this.set_applet_label("IP: ..."); + this.set_applet_tooltip("Click to refresh"); + this.timeout = Mainloop.timeout_add_seconds(5, Lang.bind(this, this.update_ip)); + this.update_ip(); + }, + + update_ip: function() { + try { + let [res, out] = GLib.spawn_command_line_sync("ip -o -4 addr show | awk '{print $2 \" : \" $4}' | cut -d/ -f1"); + if (res) { + let output = String.fromCharCode.apply(null, out).trim(); + let lines = output.split("\n"); + let label = ""; + for (let i = 0; i < lines.length; i++) { + let parts = lines[i].split(" : "); + let iface = parts[0]; + let ip = parts[1]; + if (iface === "lo") iface = "lo"; + else if (iface.startsWith("eth")) iface = "eth0"; + else if (iface.startsWith("wlan") || iface.startsWith("wlp")) iface = "wifi"; + label += iface + " : " + ip + "\n"; + } + this.set_applet_label(label.trim()); + } + } catch (e) { + global.logError("ShowMyIP: " + e); + } + return true; // agar timeout terus berjalan + }, + + on_applet_clicked: function() { + this.update_ip(); + }, + + on_applet_removed_from_panel: function() { + if (this.timeout) { + Mainloop.source_remove(this.timeout); + this.timeout = null; + } + } +}; + +function main(metadata, orientation, panel_height, instance_id) { + return new MyApplet(orientation, panel_height, instance_id); +} diff --git a/show-my-ip@triyadi.my.id/files/show-my-ip@triyadi.my.id/icon.png b/show-my-ip@triyadi.my.id/files/show-my-ip@triyadi.my.id/icon.png new file mode 100644 index 00000000000..ebbfb69a368 Binary files /dev/null and b/show-my-ip@triyadi.my.id/files/show-my-ip@triyadi.my.id/icon.png differ diff --git a/show-my-ip@triyadi.my.id/files/show-my-ip@triyadi.my.id/metadata.json b/show-my-ip@triyadi.my.id/files/show-my-ip@triyadi.my.id/metadata.json new file mode 100644 index 00000000000..568c10204e3 --- /dev/null +++ b/show-my-ip@triyadi.my.id/files/show-my-ip@triyadi.my.id/metadata.json @@ -0,0 +1,8 @@ +{ + "uuid": "show-my-ip@triyadi.my.id", + "name": "Show My IP", + "description": "Display local IP addresses of network interfaces in the panel.", + "version": "1.0", + "author": "triyadi", + "max-instances": 1 +} diff --git a/show-my-ip@triyadi.my.id/info.json b/show-my-ip@triyadi.my.id/info.json new file mode 100644 index 00000000000..43ecb255547 --- /dev/null +++ b/show-my-ip@triyadi.my.id/info.json @@ -0,0 +1,3 @@ +{ + "author": "triyadi" +} diff --git a/show-my-ip@triyadi.my.id/screenshot.png b/show-my-ip@triyadi.my.id/screenshot.png new file mode 100644 index 00000000000..23ad7b69eda Binary files /dev/null and b/show-my-ip@triyadi.my.id/screenshot.png differ diff --git a/updates-notifier@zamszowy/files/updates-notifier@zamszowy/po/zh_TW.po b/updates-notifier@zamszowy/files/updates-notifier@zamszowy/po/zh_TW.po new file mode 100644 index 00000000000..57abb8ee5bc --- /dev/null +++ b/updates-notifier@zamszowy/files/updates-notifier@zamszowy/po/zh_TW.po @@ -0,0 +1,164 @@ +# UPDATES NOTIFIER +# This file is put in the public domain. +# zamszowy, 2025 +# +msgid "" +msgstr "" +"Project-Id-Version: updates-notifier@zamszowy 1.2.0\n" +"Report-Msgid-Bugs-To: https://github.com/linuxmint/cinnamon-spices-applets/" +"issues\n" +"POT-Creation-Date: 2025-09-13 12:55+0200\n" +"PO-Revision-Date: 2025-09-16 02:23+0800\n" +"Last-Translator: Peter Dave Hello \n" +"Language-Team: \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#. applet.js:37 +msgid "missing dependencies" +msgstr "缺少相依套件" + +#. applet.js:106 +#, javascript-format +msgid "%s updates available" +msgstr "有 %s 個可用的更新" + +#. applet.js:107 +msgid "No updates available" +msgstr "沒有可用的更新" + +#. applet.js:133 +msgid "Check for new updates" +msgstr "檢查更新" + +#. applet.js:144 +#, javascript-format +msgid "View %s updates" +msgstr "檢視 %s 個更新" + +#. applet.js:144 +msgid "No updates to view" +msgstr "沒有可檢視的更新" + +#. applet.js:157 +#, javascript-format +msgid "Upgrade %s packages" +msgstr "升級 %s 個套件" + +#. applet.js:157 +msgid "No packages to upgrade" +msgstr "沒有要升級的套件" + +#. info-window.js:118 +msgid "Loading update details…" +msgstr "正在載入更新的詳細資訊…" + +#. info-window.js:170 +msgid "No details available." +msgstr "沒有可用的詳細資訊。" + +#. info-window.js:172 +msgid "" +"Error:\n" +"{0}" +msgstr "" +"錯誤:\n" +"{0}" + +#. info-window.js:181 +msgid "" +"Failed to run command:\n" +"{0}" +msgstr "" +"執行指令失敗:\n" +"{0}" + +#. info-window.js:191 +msgid "Updates" +msgstr "更新" + +#. info-window.js:206 +msgid "Search updates…" +msgstr "搜尋更新…" + +#. info-window.js:238 +msgid "{0} updates" +msgstr "{0} 個更新" + +#. metadata.json->name +msgid "Updates notifier" +msgstr "更新通知器" + +#. metadata.json->description +msgid "Shows icons for pending update packages" +msgstr "顯示待處理更新套件的圖示" + +#. settings-schema.json->section1->description +msgid "Settings" +msgstr "設定" + +#. settings-schema.json->update-refresh->description +msgid "Minutes to wait before refreshing applet" +msgstr "重新整理小程式前等待的分鐘數" + +#. settings-schema.json->hide-applet->description +msgid "Hide applet if there are no updates" +msgstr "沒有更新時隱藏小程式" + +#. settings-schema.json->different-levels->description +msgid "Show different applet icon for different updgradeable packages count" +msgstr "根據可升級套件數量顯示不同的小程式圖示" + +#. settings-schema.json->level-1->description +msgid "Show low level icon when updates count is between 0 and this value " +msgstr "當更新數量介於 0 與此數值之間時,顯示「低」等級圖示" + +#. settings-schema.json->level-2->description +msgid "" +"Show medium level icon when updates count is between low level value and " +"this value. Show high level icon if it's higher than this value." +msgstr "" +"當更新數量介於「低」等級數值與此數值之間時,顯示「中」等級圖示。" +"若高於此數值,則顯示「高」等級圖示。" + +#. settings-schema.json->section2->description +msgid "Commands to execute in popup menu" +msgstr "在彈出式選單中要執行的指令" + +#. settings-schema.json->commandUpdate-show->description +msgid "Show \"Check for new updates\" command" +msgstr "顯示 \"檢查更新\" 指令" + +#. settings-schema.json->commandUpdate->description +msgid "Check for new updates:" +msgstr "檢查更新:" + +#. settings-schema.json->commandUpgrade-show->description +msgid "Show \"Upgrade packages\" command" +msgstr "顯示 \"升級套件\" 指令" + +#. settings-schema.json->commandUpgrade->description +msgid "Upgrade packages:" +msgstr "升級套件:" + +#. settings-schema.json->section3->description +msgid "Theme" +msgstr "佈景主題" + +#. settings-schema.json->icon-style->description +msgid "Icon style" +msgstr "圖示樣式" + +#. settings-schema.json->icon-style->options +msgid "dark" +msgstr "深色" + +#. settings-schema.json->icon-style->options +msgid "light" +msgstr "淺色" + +#. settings-schema.json->icon-style->options +msgid "symbolic" +msgstr "符號式"