当前位置: 首页 > news >正文

Zenity向Ubuntu系统发送通知

文章目录

前言

一、Zenity是什么?

二、使用步骤

1.确认是否已安装

2.使用

三. 结论


前言

大家都知道,久坐带来的后果有多么痛苦,但是每天上班,一坐一整天,想着起来活动一下,干起活来就又忘啦,等想起来的时候已经下班了。之前使用手机闹钟,一是怕影响别人,再就是没用几天就烦了,Ubuntu有没有自带的闹钟,干脆自己写一个,反正简单,不会浪费多少时间。可以用高级语言,也可以用shell写一个脚本,用了十分钟就写好了,打包发布,做成系统服务,设置上班时间8点,下班时间17点,每隔60或90分钟弹窗提醒一次。程序简单,但是使用到的细节却值得留意。


一、Zenity是什么?

zenity是一个在X窗口系统中运行的GTK+应用程序,它可以在脚本中创建各种对话框和交互框。用户可以使用zenity在脚本中创建警告对话框、信息对话框、文件选择对话框、进度条等,以增强脚本的交互性和用户体验。Zenity 主要用于shell脚本中的交互界面设计。

二、使用步骤

1.确认是否已安装

一般来说,使用X11的Linux系统都会自带zenity,如果系统使用的不是X11,可以先确认一下是否可以运行X11;

确认是否安装zenity:

zenity  --version

 显示版本号,则表示已安装。

确认X11是否运行:

ps aux | grep Xorg     // Xorg是X11的实现

 

2.使用

使用zenity,可以看官网的zenity文档,比较详细直观,但是这个网站速度比较慢,

也可以使用终端来查看:

zenity文档

示例:

zenity --info --title "Zenity Demo" --text "Hello Zenity!" 

 zenity --entry --title "输入框" --text "请输入:"

 zenity --calendar

 zenity --password --title "口令" --text "请输入:"

简单实用,不再一一列举。

三. 结论

使用shell脚本的话,直接使用zenity就可以了,如果是使用的高级语言,则需要引入相对应的包,比如.Net,要引入System. Diagnostics. Process. dll;

值得一提的是,直接运行程序,没有问题,但是做成系统服务之后就不能显示了,如图:

 原因:

1. 没有正确的设置DISPLAY参数,

Environment=DISPLAY=:0

 2. 设置参数后有可能还是不能显示,这一般是权限的问题:

xhost +

 图形显示xhost对任何用户开放。这样就可以了。

 看看能坚持多久吧。

相关文章:

  • 安全测试入门基础大全。。费了大功夫整理(超级全面)
  • [AIGC] Java List接口详解
  • 从0到1实现YOLOv3
  • linux在文件夹中查找文件内容
  • MySql 数据库、表常用语句
  • 微软如何打造数字零售力航母系列科普13 - Prime Focus Technologies在NAB 2024上推出CLEAR®对话人工智能联合试点
  • 短URL服务设计
  • onnx基本概念
  • .gitignore文件忽略的内容不生效问题解决
  • 车载学习:UDS诊断、ECU刷写、OTA升级、Tbox测试、CANoe实操
  • 通过Vue3+高德地图的JS API实现市区地图渲染
  • 知乎号开始运营了,宣传一波
  • 聚焦现代商贸物流愿景 构筑供应链金融服务体系|第二届京津冀现代商贸物流金融创新发展百人大会成功举办
  • Spring Cloud全家桶(上)【Nacos、OpenFeign、LoadBalancer、GateWay、金丝雀灰色发布】
  • vscode字符多行自动增长插件。
  • [Vue CLI 3] 配置解析之 css.extract
  • 【node学习】协程
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • axios 和 cookie 的那些事
  • CSS实用技巧
  • ES10 特性的完整指南
  • Hexo+码云+git快速搭建免费的静态Blog
  • HTTP 简介
  • If…else
  • JavaScript 基础知识 - 入门篇(一)
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Javascript基础之Array数组API
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • vue:响应原理
  • Vue2.0 实现互斥
  • 半理解系列--Promise的进化史
  • 讲清楚之javascript作用域
  • 力扣(LeetCode)56
  • 手机端车牌号码键盘的vue组件
  • 译米田引理
  • # SpringBoot 如何让指定的Bean先加载
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (20050108)又读《平凡的世界》
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (3)STL算法之搜索
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (TOJ2804)Even? Odd?
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (算法二)滑动窗口
  • (转)C#调用WebService 基础
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)EOS中账户、钱包和密钥的关系
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .net与java建立WebService再互相调用
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory