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.mzph.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方法 局部函数 参数 值参数 引用参数 引用类型作为值参数和引用参数 输出参数 参数数组 参数类型总结 方法重载 命名参数 可选参数 栈帧 递归 控制流 方法包含了组成程序的…