12
9
2013
5

替换 Awesome 内建的桌面通知

Awesome 用户们,你们有没有觉得 Awesome 那个 naughty 组件的通知很丑?

Awesome notification

这样子是不是好一些?

Xfce notification

Linux 的桌面通知机制是使用 D-Bus 通信的。所以,要换个桌面通知的流程如下:

  1. 让旧的桌面守护进程释放对应的 D-Bus 目的地名;
  2. 运行新的桌面守护进程。

首先安装个新的通知守护进程,比如我安装的xfce4-notifyd

阅读 Awesome 的naughty.lua代码之后,发现 Awesome 其实能够「慷慨」地释放org.freedesktop.Notifications这个通知用的地址的:

$ awesome-client
awesome#return dbus.release_name("session", "org.freedesktop.Notifications")
   boolean true

使用awesome-client告诉 Awesome 执行这条语句,释放这个 D-Bus 目的地址。返回true就表示执行成功了。如果喜欢的话,当然可以把这句写到rc.lua里去。

其实做到这一步就可以了。在需要时 D-Bus 会自动激活 xfce4-notifyd 的进程。当然也可以手动运行:

$ /usr/lib/xfce4/notifyd/xfce4-notifyd

还可以使用xfce4-notifyd-config命令来进行简单的配置哦。当然,这个替换对于从 Awesome 脚本里直接调用 naughty 不起效的。

从上边的图片可以看到,XFCE 的通知支持按钮的,Awesome 不支持这个。不过,它们都支持类似这种<span color="blue">蓝色文字</span>Pango 文本标记语法

要换回使用 Awesome 来显示通知的话,先关掉其它通知守护进程,然后让 Awesome 告诉 D-Bus 它要来处理这个地址上的消息:

awesome# return dbus.request_name("session", "org.freedesktop.Notifications")
   boolean true

最后来吐槽一下 C 公司的notify-osd,就是 Ubuntu 上默认那个看上去不错的黑框框。它不支持 Pango 文本标记也就罢了,不能同时显示多条通知只能一个个地来也就罢了,像 fcitx 这样往通知上放点按钮你猜会怎么着?——

notify-osd

竟然出来个夺取窗口焦点的弹框……

Category: Linux | Tags: ubuntu awesome D-Bus
3
19
2011
10

Ubuntu下折腾分区后休眠不能唤醒问题的解决

我自以为把 Linux 的分区相关的东西折腾得比较熟了,所以就大胆地在本机上折腾分区,结果有一天就发现,在我在 /etc/fstab 里把 swap 区从UUID指定改成用LABEL指定之后,休眠可以成功,但唤醒失败。在开机后应当从 swap 分区恢复的时候,出现错误,然后就直接启动了,其间还毁掉了 swap 分区的内容。这么试过了两次,都失败了,于是我带着迷惑,再也没有试过了。

前天在群里看到这个链接,终于恍然大悟——原来还有个配置文件/etc/initramfs-tools/conf.d/resume!它指明了唤醒时从哪个分区恢复。当初改 swap 后我只改了fstab但没有改它,所以可以正常使用却不能唤醒。不过重新生成 initrd 时为什么没有自动更新 resume 文件呢?而且休眠时系统也不检查下resume文件,郁闷。不知道休眠时能不能指定休眠到哪个分区上呢?

resume文件的内容相当简单,就一行,像这样RESUME=LABEL=swapRESUME=后面的格式和 fstab 的第一栏一样。改了后还要sudo update-initramfs -u更新 initrd。

另外,唤醒不成功的时候我曾尝试过 s2disk 这个工具,但昨天发现,虽然它在休眠时有进度显示,可是在唤醒的时候失败了——当进度达到 100% 时就没动作了,我的桌面也就没能回来……

Category: Linux | Tags: linux ubuntu
9
1
2010
0

Ubuntu网络连接显示“设备未托管”解决了

几天前的一次开机,突然上不了网了,再一看,网络连接的图标也没了。郁闷地运行ifconfig,发现是eth0没有分配IPv4的地址。这个我同学曾经遇到过,所以我很淡定地执行sudo dbclient,网络连上了。

本以为问题就此结束,但再次开机时发现,情况依旧,于是再次运行sudo dbclient,同时也加到/etc/rc.local里开机自动运行。OK,万事大吉了。不过,偶尔想到这个,我很疑惑为什么会这样呢?

终于,曙光出现了!一次从挂起的状态恢复后,我惊奇地看到网络连接的图标再次出现,显示的是未连网状态,但我是可以上网的。好奇地点了它一下,只见到以前的连接都没有显示,只有行灰色的“设备未托管”。好了,线索有了,Google一下,我就知道了(这里):

编辑/etc/NetworkManager/nm-system-settings.conf,把里边的managed=false改成managed=true,重启OK!

Category: Linux | Tags: ubuntu 网络

部分静态文件存储由又拍云存储提供。 | Theme: Aeros 2.0 by TheBuckmaker.com