dotnet 麒麟 Kylin 的 X11 应用开发记录

news/2024/11/29 20:56:55/文章来源:https://www.cnblogs.com/lindexi/p/18569239

系统版本信息

本文面向的麒麟系统版本信息如下:

$ cat /etc/os-release
NAME="Kylin"
VERSION="银河麒麟桌面操作系统(教育版)V10"
VERSION_US="Kylin Linux Desktop EDU V10"
ID=kylin
ID_LIKE=debian
PRETTY_NAME="Kylin V10 SP1"
VERSION_ID="v10"
HOME_URL="http://www.kylinos.cn/"
SUPPORT_URL="http://www.kylinos.cn/support/technology.html"
BUG_REPORT_URL="http://www.kylinos.cn/"
PRIVACY_POLICY_URL="http://www.kylinos.cn"
VERSION_CODENAME=kylin
UBUNTU_CODENAME=kylin
PROJECT_CODENAME=V10SP1-General-Edu
KYLIN_RELEASE_ID="2403"

系统为从麒麟拿到的系统,没有经过什么更改。如无特殊说明,本文均采用此系统版本

读取麒麟系统的各项版本信息

读取麒麟系统的各项版本信息

图标在任务栏上

不能在 MapWindow 之后,通过发送 ClientMessage 消息的方式,通过 _NET_WM_STATE_SKIP_TASKBAR 设置应用不在任务栏显示图标

必须要在 MapWindow 之前完成 _NET_WM_STATE_SKIP_TASKBAR 的设置。由于在窗口 Map 之前调用,不能利用桌面管理器辅助设置,需要通过 XChangeProperty 进行设置

在麒麟系统让图标不在任务栏上显示的方法如下

        var _NET_WM_STATE_SKIP_TASKBAR = XInternAtom(Display, "_NET_WM_STATE_SKIP_TASKBAR", false);ChangeWMAtomsByXChangeProperty(true, _NET_WM_STATE_SKIP_TASKBAR);XMapWindow(Display, Window);XFlush(Display);private unsafe void ChangeWMAtomsByXChangeProperty(bool enable, params IntPtr[] atoms){var wmState = XInternAtom(Display, "_NET_WM_STATE", true);XGetWindowProperty(Display, Window, wmState, IntPtr.Zero, new IntPtr(256),false, (IntPtr) Atom.XA_ATOM, out _, out _, out var nitems, out _,out var prop);var ptr = (IntPtr*) prop.ToPointer();var newAtoms = new HashSet<IntPtr>();for (var c = 0; c < nitems.ToInt64(); c++){newAtoms.Add(*ptr);ptr++;}XFree(prop);foreach (var atom in atoms){if (enable){newAtoms.Add(atom);}else{newAtoms.Remove(atom);}}XChangeProperty(Display, Window, wmState, (IntPtr) Atom.XA_ATOM, 32,PropertyMode.Replace, newAtoms.ToArray(), newAtoms.Count);}

以上的 ChangeWMAtomsByXChangeProperty 方法的实现是从 Avalonia 里面抄的,且是经过 walterlv 在 https://github.com/AvaloniaUI/Avalonia/pull/16110 修复之后的代码

拦截问题

记 Kylin 麒麟系统安全中心拦截导致 dotnet sdk 找不到 OpenSsl 构建失败

dotnet 记龙芯麒麟教育版安全中心拦截文件 导致 docker 内 CI CD 构建失败

更多相关博客

  • dotnet 8 版本与银河麒麟V10和UOS系统的 glibc 兼容性

更多国产化相关开发博客,请参阅 博客导航

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/841477.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware ESXi 7.0U3q macOS Unlocker OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)

VMware ESXi 7.0U3q macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版)VMware ESXi 7.0U3q macOS Unlocker & OEM BIOS 2.7 集成网卡驱动和 NVMe 驱动 (集成驱动版) ESXi 7.0U3 标准版集成 Intel 网卡、Realtek USB 网卡 和 NVMe 驱动 请访问原文链…

Redis中的分布式锁(步步为营)

分布式锁 概述 分布式锁指的是,所有服务中的所有线程都去获取同一把锁,但只有一个线程可以成功的获得锁,其他没有获得锁的线程必须全部等待,直到持有锁的线程释放锁。 分布式锁是可以跨越多个实例,多个进程的锁分布式锁具备的条件:互斥性:任意时刻,只能有一个客户端持有…

【宝兰德中间件】单实例分离安装部署

#BES中间件 #宝兰德 一、安装环境二、安装步骤2.1 创建用户以及用户组2.2 配置目录权限2.3 上传安装包以及JDK2.4 JDK安装配置2.5 实例创建一、安装环境二、安装步骤 2.1 创建用户以及用户组 [root@mysql-20 data]# groupadd mw [root@mysql-20 data]# useradd -g mw -d /data/…

【政策解析】公共数据授权运营的六大关键参与主体:角色、责任与实践

1. 数据提供方 1.1 角色定位与责任 数据提供方在公共数据授权运营体系中扮演着基础且关键的角色。它们通常是政府部门或公共机构,负责收集、生成和维护原始数据。作为数据的源头,数据提供方的主要职责是确保所提供数据的合法性、准确性和时效性。根据《公共数据授权运营管理暂…

从架构到成本,SQL Server 和 PostgreSQL 四大区别全方位解析!

从架构到成本,SQL Server 和 PostgreSQL 四大区别全方位解析!今天我想分享 SQL Server 和 PostgreSQL 之间的四大关键区别。 在比较 SQL Server 和 PostgreSQL 这两种最常用的关系数据库管理系统(RDBMS)时,它们在架构、日志机制、并发模型、索引策略和许可方式等方面存在根…

Cyber Triage 3.12 for Windows - 数字取证和事件响应

Cyber Triage 3.12 for Windows - 数字取证和事件响应Cyber Triage 3.12 for Windows - 数字取证和事件响应 Digital Forensics Specialized For Incident Response 请访问原文链接:https://sysin.org/blog/cybertriage-3/ 查看最新版。原创作品,转载请保留出处。 作者主页:…

读数据质量管理:数据可靠性与数据质量问题解决之道15数据信任

数据信任1. 在数据平台中建立信任 1.1. 确保产品目标与业务目标保持一致1.1.1. 几十年来,数据平台被视为实现目标的手段,而不是“终极目标”​1.1.1.1. 数据不被当作核心产品来构建1.2. 寻求适合的利益相关方的反馈与认可1.2.1. …

[Vue Router] Redirect Alias

As our application evolves, we may need to change the URL paths of where our pages initially found. There are two convenience methods for this:⚠️ Problem: Changing Routes What if we needed to change our application from using /about for our about page to…

数据采集实践第四次作业

Gitee作业链接: https://gitee.com/FunkTank/crawl_project/tree/master/作业4 作业① 要求:熟练掌握 Selenium 查找HTML元素、爬取Ajax网页数据、等待HTML元素等内容。 使用Selenium框架+ MySQL数据库存储技术路线爬取“沪深A股”、“上证A股”、“深证A股”3个板块的股票数…

数据采集作业四

数据采集作业四 作业①: 要求: 熟练掌握 Selenium 查找HTML元素、爬取Ajax网页数据、等待HTML元素等内容。 使用Selenium框架+ MySQL数据库存储技术路线爬取“沪深A股”、“上证A股”、“深证A股”3个板块的股票数据信息。 候选网站:东方财富网:http://quote.eastmoney.com/…