natification气泡提示框,X窗口系统名词解释

作者: 编程技术  发布:2019-09-20

在今世Linux桌面蒙受上大家常常能够观望类似的新闻框:
图片 1

 前端时间Gentoo的桌面情形出了点难点,开掘本身对Linux的桌面情形理解的非常少,于是恶补了一下学问,以下名词解释基本上都以来自维基百科的条款和《Linux程序设计(第三版)》。一般来讲,日常的说的桌面蒙受是指GNOME、KDE、XFCE,而它们都以依赖X窗口系统的,X窗口系统是规范的C/S结构,最近最遍布的X窗口系统正是Xorg,一般接纳的startx,startkde,gnome-session都以运营桌面意况的台本,它们做的业务满含了模块的检验与加载,以及运营窗口管理器等。

那一个音讯框常用在如下场景:

X Window System

  • 当时聊天软件的新新闻
  • 时钟定期提示
  • 电瓶电量指示
  • 邮件音信
  • 长耗费时间操作的姣好提醒

X 窗口系统(X Window System)简称X或X11,当前风行版本是X11Tiguan7。X最早是20世纪80年间由MIT开拓的,为当时高档的正确性专门的学问站提供联合的窗口系统。20世纪90时代,随着硬件价格的日益下降,一些爱好者把X改写后运转于廉价的PC机上,这几个种类后来被称作XFree86.X 窗口系统一分配为硬件级(驱动级)和选用程序级组件,分外号叫X Server和X Client,使用X合同(XDMCP)举办通讯,是头角峥嵘的C/S结构。

在freedesktop.org的规范中这种新闻框被叫作Desktop Notification,中文名我们形象得称其为“气泡框”。通过调用D-BUS服务org.freedesktop.Notifications提供的接口就可以彰显在桌面上。

图片 2

因而大家先通晓一下这几个D-BUS服务。

X Server

org.freedesktop.Notifications概览

三个气泡框新闻经常会含有如下的性质:

名称 说明
Application Name 标示发送消息的程序,最好使用程序全名
Replaces ID 可选的消息ID,服务器通过id控制消息框的渲染,通常不用关注
Icon 显示在气泡框上的图标
Summary 标题,只能显示一行,叫title应该更合适
Body 消息体,支持部分HTML标签;<b></b><i></i><u></u><a></a><img src=... alt=...>
Actions 显示一些按钮或者菜单,不过这一功能通常未被实现
Hints 为消息体提供的额外数据,比如显示在屏幕的位置
Expiration Timeout 气泡框显示的时长,单位毫秒;指定为-1时行为取决于实现;为0时气泡框将一直显示在桌面上直到用户点击

其中Icon和Hints中的image_path必须为当地相对路线可能file://开始的文本U宝马X3L。其余利用桌面意况预约义Logo的名字也是足以的。

气泡框还恐怕有四个风风火火程度可供选拔:

名称 说明
Low 0 默认值,可以设置如何显示,应该设置一个合理的显示时间以便气泡框可以隐藏退出
Normal 1 同low
Critical 2 代表重要通知,不应该自动过期隐藏

有着的气泡框新闻需要都以异步的,平时构造央浼并发送后客户就足以不再关切后续的消息,假设有新鲜需求则能够自定义管理org.freedesktop.Notifications发送的信号。

得益于freedesktop.org的规范规范,包蕴KDE,GNOME,XFCE4在内的非常多桌面遭逢都提供了对Desktop Notification的支撑,就算外观上只怕存在一些异样可是创立气泡框的不二等秘书技是一样的。

只是不用操心,大家不会向来去行使D-BUS,因为已经有简化的现存方案可供选拔了。上边就让我们一齐看看那一个方案。

X Server运维在顾客的地方机械上,在荧屏上到位低层的绘图操作。因为X Server直接向显卡发送功率信号,由此必需采用二个顺应本机显卡的X Server,并布署好合适的分辨率,刷新率,颜色深浅等,现在一般在/etc/X11/xorg.conf的公文正是Xorg Server的布局文件。

方案一:调用外界命令

或是您曾经知道了,作者要介绍的下令正是notify-send

notify-send少了一些被抱有的桌面蒙受和发行版帮助,它依据于前边会介绍的libnotify和glib,尽管您的体系上一贯不设置能够使用如下命令进行安装:

debian/Ubuntu:

sudo apt install libnotify-bin

Arch Linux:

sudo pacman -S libnotify

设置后方可用如下命令突显气泡框:

# notify-send title body [options]notify-send test 'This is a desktop Notification test.' -t 10000

-t参数设置超时时间。效果如下:
图片 3

切实的参数能够参照这里:

X Server通过鼠标和键盘监听客户的输入,并将键盘按钮和鼠标点击传输给X Client,那个音信叫事件(event),它们构成了GUI编制程序的七个根本要素。它的逻辑扩大,MFC叫新闻,GTK和Qt叫功率信号。

方案二:通过编制程序格局贯彻

在Qt代码中调用外界命令就足以展示气泡框,不过这种措施非常不足利索,所以大家需求采纳前面提到的libnotify在我们的代码里转换并呈现气泡框。

libnotify对一一语言都提供了binding,能够参照这里。
这里大家挑选使用golang的binding:

package mainimport ("github.com/mqu/go-notify")func main() {    notify.Init("Hello world")    hello := notify.NotificationNew("Hello World!", "This is an example notification.","dialog-information")    hello.SetTimeout    hello.Show()}

下面的代码将会来得两个方可在桌面停留5s的气泡框:
图片 4

可是尽管老是都要采用一大串代码本事显得消息的话肯定是无用的,何况要求换算时间至飞秒,所以我写了一个帮手函数在notify.go:

// ShowNotification 显示org.freedesktop.Notifications气泡消息框// duration == -1时使用默认delay// duration == 0表示不设置超时,desktop notification将会一直显示func ShowNotification(title, text, image string, delay time.Duration) {    var notifyDelay int32    if delay == -1 {        notifyDelay = duration2millisecond(defaultNotifyDelay)    } else {        notifyDelay = duration2millisecond        // 不合法值(包括duration不足1ms),使用默认值进行替换        if notifyDelay == -1 {            notifyDelay = duration2millisecond(defaultNotifyDelay)        }    }    libnotify.Init(applicationName)    notify := libnotify.NotificationNew(title, text, image)    if notify == nil {        fmt.Fprintf(os.Stderr, "Unable to create a new notificationn")        return    }    notify.SetTimeout(notifyDelay)    notify.Show()}// duration2millisecond 将time.Duration转换成millisecond// duration不足1ms将返回-1func duration2millisecond(duration time.Duration) int32 {    res := int32(duration / time.Millisecond)    if res < 0 {        return -1    }    return res}

率先将时间值转变来飞秒数,若是太小大概违规就应用默许的停留时间。applicationName是先后的欧洲经济共同体名称。
因为气泡框新闻是异步的,所以在调用了Show()随后函数就能够回到,后续操作xwindows都会帮大家管理,所以那些函数调用之后是立时回去的,不会卡住Qt的gui事件循环,能够放心的利用:

// download something successShowNotification("下载", "文件下载完成", "dialog-information", 5*time.Second)

图片 5

如此那般大家也能够轻巧地在我们的Qt程序中动用气泡音信框了。

X Client

参考:

X Client是以X Window作为GUI的别样程序,如xterm,xcalc和周边Abiword之类的越来越尖端的应用程序,经常状态下,X Client等待X Server传送的客户事件,然后通过给X Server发送重绘新闻来响应,X Client不需求和X Server运营在同样台机器上,那正是干什么xterm也能长途应用。

X Protocol

X Client与X Server使用X Protocol实行通讯,使得客商端和服务器可以在互连网中分离,实际上是X Server和X display manager之间使用XDMCP(X Display Manager Control Protocol)公约举行通讯,使用端口为UDP:177。

XFree86

XFree86是X窗口系统的中间贰个兑现,它根本的运维平台是Unix类操作系统。自一九九二年,它直接以自由发放的怒放源代码方式发展,可是从2000年启幕,它再不是以GPL软件许可证的花样出现,而是利用 XFree86®Project 公司所怀有的 XFree86 License version 1.1 软件许可证形式发放。于是XFree86 的支出因软件许可证的更换而出现分岐(这种事情开源界中平日发出。。),而派生出另二个发展自 XFree86 4.4 RC2 版本源代码,名称为 X.Org 服务器的X Window系统。

图片 6

Xorg

X.Org Server是X窗口系统的参照完毕,当前版本是X11途乐7.5,公布于贰零壹零年1月十三日。

Xorg实际上应该是X.org Server,X.Org基金会开辟的X Server。X.Org是担负X 窗口系统开拓的集团,二〇〇四年1 月十一日在Open Group的X.org网站基础上确立。

X.Org基金会的创建标识着在X的治本上发生了根天性的变动。 从一九九零年其X的总管(包蕴过去的X.Org)----商家协会,造成了基金会由软件开拓者领导,用集市形式的社区支出,依赖外部参与的情势:成员身价向个体开放,而公司做为赞助者参与。

图片 7

Xlib

Xlib是X Client直接用于发生X左券音讯的库,它提供贰个那几个底层的API,允许客商端在X Server上绘出特别基本的要素,并响应最简便易行的输入,必需强调,Xlib库是三个可怜底层的库,那使得Xlib库成立菜单都以一个特别困难的工程。GUI技术员不可能平素调用Xlib编制程序,而是须要二个API,使得菜单,开关,下拉式列表等GUI成分能够简单方便的创建,那即是X工具包(X toolkit)的效果与利益。

X toolkit

X工具包(X toolkit)是二个GUI库,X顾客端用它异常的大的简化了窗口,菜单,开关的创始。使用工具包,能够由此函数调用就能够成立开关,菜单,框架以及类的事物,诸如此比的GUI成分统称为窗口部件(widget),全数未来的GUI库都能找到这几个术语。历史上流行的工具包主要有Motif,OpenLook和Xt,今后更上进的是GTK+和Qt。

Xdg

Xdg是X Desktop Group的缩写是,freedesktop.org的前身,而freedesktop.org 是三个从业于巩固用于Linux和类UnixOS上的轻松桌面景况之间的互操作性和分享其基础手艺的多少个团伙。在freedesktop.org下托管的盛名项目有:X.org Server、D-bus、HAL、Direct Rendering Infrastructure(DEnclaveI)、GStreamer、Mesa 3D、GTK-Qt engine

图片 8

Xdm

Xdm是X Display Manager的缩写,由它来运营X Window服务器,并保管图形客商端程序的报到、会话(登陆成功后敞开新的session)、运转窗口管理器等。假诺Xdm是在地点运营,它会运转X Server,就疑似命令行登入的init,getty和login所做的思想政治工作同样;假若Xdm在互联网上某台微型Computer上运营,它的一言一动就不啻一个telnet server,验证顾客名与密码,然后初阶一个长距离会话(Remote Session)。KDE和Gnome也提供了和煦的xdm的贯彻,分别叫kdm和gdm。

图片 9

Window Manager

窗口管理器是在图形顾客分界面包车型地铁视窗系统中,调整窗口地方与外观的软件。它是担当处理与固定窗口的运动、最大化、最小化、改换大小以及关闭等事业,简单来讲,正是给二个窗口加上最大化,最小化,关闭按键标题栏和框架。Twm(汤姆Window Manager)正是X.org提供的简便的窗口管理器。

GNOME

GNOME,是GNU互连网对象模型境况 (The GNU Network Object Model Environment)的缩写,那呈现了GNOME早先时代的二个对象,即为Linux引进三个像MS OLE一样的对象框架,那样就足以在文字管理文书档案中出席石英表格了(word/excel…)未来,GNOME的规划目的发出了变动,现在的GNOME指的是总体桌面情况,包含一个起始程序的面板,一套程序和实用工具,程序库以及开辟者工具。

图片 10

GTK+

GTK+来自有名的图像管理软件GIMP,是the Gimp toolkit的缩写,GTK+使用C语言开荒,可是其设计者使用面向对象本事(通过应用GObject库)。 也提供了C++(gtkmm)、Perl、Ruby、Java和Python(PyGTK)绑定,其余的绑定有Ada、D、Haskell、PHP和全数的.NET编程语言。

GTK+的分界面设计工具是Glade,它包括了一种描述GUI分界面包车型客车XML语言,它和libglade一齐干活就足以一贯运用GTK和GNOME控件;新的Glade-3不再直接援救生成编制程序语言源代码。方今新星版本是GTK+2.

GLib

GLib是GTK+组建的一个可移植到C语言函数库,GLib定义这么些品种来赞助跨平台支付,GLib提供了一组数据类型,函数和宏的行业内部取代集来进展内部存款和储蓄器管理和拍卖通用任务,以此援救跨平台开垦。使用GLib差相当少是晶莹剔透的,从实质上讲,Glib附加的数据类型是C语言标准数据类型的代替(为了一致性和可移植性),GLib广泛存在于GTK+中,安装GTK+的时候,GLib也暗中同意安装了。

Gdm

Gome使用的X 显示管理器(X Display Manager)

Metacity

Gnome的暗许窗口管理器,在此之前GNOME时有时无使用了Enlightenment和Sawfish作为它的窗口管理器。其余盛名的窗口管理器还应该有:FVWM、Fluxbox

KDE

KDE(K Desktop Environment)是依据Qt GUI的开源桌面蒙受,KDE中隐含了大气的应用程序和工具,个中囊括一站式办公套件,Web浏览器,以及三个作用齐全的KDE/Qt的IDE。以后风靡的是KDE4

图片 11

Kdm

KDE使用的X展现管理器(X Display Manager)

Kwin

KDE使用的窗口管理器

 

本文由贝博体育app发布于编程技术,转载请注明出处:natification气泡提示框,X窗口系统名词解释

关键词:

上一篇:文件操作记要
下一篇:树状数组