GNOME擴展:Bing壁紙

難點

網絡請求(Soup)

下載文件(Soup)

讀寫設置(Gio.Settings)

源碼

import GLib from "gi://GLib";
import Gio from 'gi://Gio';
import St from 'gi://St';
import Soup from 'gi://Soup';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 BingWallpaperExtension extends Extension {enable() {this._indicator = new PanelMenu.Button(0.0, this.metadata.name, false);let gicon = Gio.icon_new_for_string(this.dir.get_path() + '/bing-symbolic.svg');const icon = new St.Icon({gicon: gicon,style_class: 'system-status-icon'});this._indicator.add_child(icon);//this._indicator.connect('pressed', () => this.getWallpaper());Main.panel.addToStatusArea(this.uuid, this._indicator);this.imagePath = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_PICTURES) + '/BingWallpaper';const menu_browse = new PopupMenu.PopupImageMenuItem('Browse', 'folder-directory-symbolic', {});menu_browse.connect('activate', () => {let uri = 'file://' + this.imagePath;Gio.app_info_launch_default_for_uri(uri, global.create_app_launch_context(0, -1));});this._indicator.menu.addMenuItem(menu_browse);const schema = 'org.gnome.desktop.background';        this.gsettings = new Gio.Settings({ schema: schema });let uri = this.gsettings.get_string('picture-uri');let filename = uri.substring(uri.lastIndexOf('/') + 1)this.menu_update = new PopupMenu.PopupImageMenuItem(filename, 'info-symbolic', {});this.menu_update.connect('activate', () => this.getWallpaper());this._indicator.menu.addMenuItem(this.menu_update);}disable() {this._indicator?.destroy();this._indicator = null;this.gsettings = null;}getWallpaper() {        var url = 'http://cn.bing.com/HPImageArchive.aspx';let params = { format: 'js', idx: '0' , n: '1' } ;let httpSession = new Soup.Session();let request = Soup.Message.new_from_encoded_form('GET', url, Soup.form_encode_hash(params));httpSession.send_and_read_async(request, GLib.PRIORITY_DEFAULT, null, (httpSession, message) => {            const decoder = new TextDecoder();var data = decoder.decode(httpSession.send_and_read_finish(message).get_data());var json = JSON.parse(data);let imgUrl = "http://www.bing.com" + json.images[0].url;var filename = json.images[0].enddate + '_' + json.images[0].urlbase.replace('/th?id=OHR.', '') + '.jpg';this.menu_update.label.text = json.images[0].copyright;var filepath = this.imagePath + '/' + filename;let file = Gio.file_new_for_path(filepath);let request = Soup.Message.new('GET', imgUrl);httpSession.send_and_read_async(request, GLib.PRIORITY_DEFAULT, null, (httpSession, message) => {data = httpSession.send_and_read_finish(message).get_data();file.replace_contents_bytes_async(data, null, false, Gio.FileCreateFlags.REPLACE_DESTINATION, null, (file, res) => {let uri = 'file://' + filepath;this.gsettings.set_string('picture-uri', uri);this.gsettings.set_string('picture-uri-dark', uri);Gio.Settings.sync();this.gsettings.apply();});});            });}}

安裝

Bing Wallpaper - GNOME Shell Extensions

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78408.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78408.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78408.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機視覺綜合實訓室解決方案

一、引言 在當今科技飛速發展的時代,計算機視覺作為人工智能領域的核心技術之一,正以前所未有的速度改變著我們的生活和工作方式。從智能手機中的人臉識別解鎖,到自動駕駛汽車對道路和障礙物的精準識別;從安防監控系統中的智能視…

C++23 std::tuple與其他元組式對象的兼容 (P2165R4)

文章目錄 引言C23 std::tuple概述std::tuple的定義和基本用法std::tuple的特性std::tuple的應用場景 其他元組式對象的特點Python元組的特點Python元組與C std::tuple的對比 P2165R4提案的具體內容提案背景提案主要內容提案的影響 兼容性示例代碼總結 引言 在C編程的世界里&am…

Go語言:協程調度器GPM模型深度解析

一、GPM模型概述 Go語言的并發模型是其最強大的特性之一,而這一切的核心就是GPM調度模型。讓我們用一個生活中的例子來理解: 想象你經營著一家快遞公司: G(Goroutine):就像一個個待配送的包裹P(Processor):就像是你公司的配送站,負責組織配送工作M(Machine):就像…

NVIDIA顯卡演進歷程及其關鍵參數對比

一、早期架構階段(1995-1999) 技術特點:聚焦圖形渲染性能提升,逐步引入硬件加速功能。 NV1(1995) 工藝制程:500nm核心頻率:12MHz顯存頻率:75MHz創新點:首款集…

c++ 之 cout

1.進制轉換 1. 1 進制轉換 默認十進制&#xff1a;cout 默認輸出十進制。十六進制&#xff1a;使用 hex 操縱符。八進制&#xff1a;使用 oct 操縱符。恢復十進制&#xff1a;使用 dec 操縱符。 #include <iostream> using namespace std;int main() {int num 30;cou…

動態規劃算法精解(Java實現):從入門到精通

一、動態規劃概述 動態規劃&#xff08;Dynamic Programming&#xff0c;DP&#xff09;是一種解決復雜問題的高效算法&#xff0c;通過將問題分解為相互重疊的子問題&#xff0c;并存儲子問題的解來避免重復計算。它在眾多領域如計算機科學、運籌學、經濟學等都有廣泛應用&am…

【JLINK調試器】適配【大華HC32F4A0芯片】的完整解決方案

JLINK調試器適配 大華HC32F4A0芯片的完整解決方案 文章目錄 JLINK調試器適配 大華HC32F4A0芯片的完整解決方案一、問題背景1.1 HC32F4A0芯片特性1.2 為何需要J-Link支持1.3 未適配的影響 二、解決方案2.1 問題復現2.2 手動配置2.3 結果驗證 三、常見問題四、固件燒入 一、問題背…

AVOutputFormat 再分析

AVOutputFormat 結構體 /*** addtogroup lavf_encoding* {*/ typedef struct AVOutputFormat {const char *name;/*** Descriptive name for the format, meant to be more human-readable* than name. You should use the NULL_IF_CONFIG_SMALL() macro* to define it.*/const…

4.29-4.30 Maven+單元測試

單元測試&#xff1a; BeforeAll在所有的單元測試方法運行之前&#xff0c;運行一次。 AfterAll在所有單元測試方法運行之后&#xff0c;運行一次。 BeforeEach在每個單元測試方法運行之前&#xff0c;都會運行一次 AfterEach在每個單元測試方法運行之后&#xff0c;都會運行…

具身系列——Q-Learning算法實現CartPole游戲(強化學習)

完整代碼參考&#xff1a; rl/qlearning_cartpole.py 陳先生/ailib - Gitee.com 部分訓練得分&#xff1a; Episode 0 Reward: 19.0 Avg Reward: 19.00 Time: 0.00s Episode 1 Reward: 17.0 Avg Reward: 18.98 Time: 0.00s Episode 2 Reward: 10.0 Avg Reward: 18.89 Time:…

2.2 矩陣

考點一&#xff1a;方陣的冪 1. 計算方法 (1) ?找規律法? ?適用場景?&#xff1a;低階矩陣或具有周期性規律的矩陣。?示例?&#xff1a; 計算 A ( 0 1 1 0 ) n A \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix}^n A(01?10?)n&#xff1a; 當 n n n 為奇…

一個完整的神經網絡訓練流程詳解(附 PyTorch 示例)

&#x1f9e0; 一個完整的神經網絡訓練流程詳解&#xff08;附 PyTorch 示例&#xff09; &#x1f4cc; 第一部分&#xff1a;神經網絡訓練流程概覽&#xff08;總&#xff09; 在深度學習中&#xff0c;構建和訓練一個神經網絡模型并不是簡單的“輸入數據、得到結果”這么簡…

從入門到登峰-嵌入式Tracker定位算法全景之旅 Part 0 |Tracker 設備定位概覽與系統架構

Part 0 |Tracker 設備定位概覽與系統架構 在開始算法與代碼之前,本章將從“高空視角”全面剖析一個嵌入式 Tracker 定位系統的整體架構:背景、目標與規劃、關鍵約束、開發環境配置、硬件清單與資源預算、邏輯框圖示意、通信鏈路與協議棧、軟件架構與任務劃分,以及低功耗管…

【自然語言處理與大模型】大模型意圖識別實操

本文先介紹一下大模型意圖識別是什么&#xff1f;如何實現&#xff1f;然后通過一個具體的實戰案例&#xff0c;詳細演示如何運用大模型完成意圖識別任務。最后&#xff0c;對大模型在該任務中所發揮的核心作用進行總結歸納。 一、意圖識別的定義與核心任務 意圖識別是自然語言…

HTML打印設置成白色,但是打印出來的是灰色的解決方案

在做瀏覽打印的時候&#xff0c;本來設置的顏色是白色&#xff0c;但是在瀏覽器打印的時候卻顯示灰色&#xff0c;需要在打印的時候勾選選項“背景圖形”即可正常展示。

PyCharm中全局搜索無效

發現是因為與搜狗快捷鍵沖突了&#xff0c;把框選的那個勾選去掉或設置為其他鍵就好了

Nginx 核心功能02

目錄 一、引言 二、正向代理 &#xff08;一&#xff09;正向代理基礎概念 &#xff08;二&#xff09;Nginx 正向代理安裝配置 &#xff08;三&#xff09;正向代理配置與驗證 三、反向代理 &#xff08;一&#xff09;反向代理原理與應用場景 &#xff08;二&#xf…

探索 C++23 std::to_underlying:枚舉底層值獲取的利器

文章目錄 引言基本概念作用使用示例與之前方法的對比在 C23 中的意義總結 引言 在 C 的發展歷程中&#xff0c;每一個新版本都帶來了許多令人期待的新特性和改進&#xff0c;以提升代碼的安全性、可讀性和可維護性。C23 作為其中的一個重要版本&#xff0c;也不例外。其中&…

WGDI-分析WGD及祖先核型演化的集成工具-文獻精讀126

WGDI: A user-friendly toolkit for evolutionary analyses of whole-genome duplications and ancestral karyotypes WGDI&#xff1a;一款面向全基因組重復事件與祖先核型演化分析的易用工具集 摘要 在地球上大多數主要生物類群中&#xff0c;人們已檢測到全基因組復制&…

C# 方法(控制流和方法調用)

本章內容: 方法的結構 方法體內部的代碼執行 局部變量 局部常量 控制流 方法調用 返回值 返回語句和void方法 局部函數 參數 值參數 引用參數 引用類型作為值參數和引用參數 輸出參數 參數數組 參數類型總結 方法重載 命名參數 可選參數 棧幀 遞歸 控制流 方法包含了組成程序的…