「fcitx-remote(1)」-

通过终端控制Fcitx的状态的工具
命令语法格式
fcitx-remote [OPTION]
命令描述
命令fcitx-remote是一个终端工具,用于从控制台控制Fcitx的状态。比如:激活输入法、切换输入法、重新加载配置等等。
命令支持的选项及含义
[no option] 没有指定选项是打印Fcitx的状态:

0:表示关闭;
1:未激活;
2:已激活;

-a 打印Fcitx的dbus地址。
-e 要求退出Fcitx。
-c 关闭输入法。
-o 激活输入法。
-r 重新加载Fcitx的配置。
-t, -T 切换输入法的状态。等同与交替使用-c与-o选项。
-s imname 切换到由imname指定的输入法。比如,fcitx -m pinyin,表示切换到拼音输入法;fcitx -m wbpy,表示切换到无比输入法。
关于imname的取值参考下面的「关于输入法名称」部分。
-m <imname> 打印imname对应的附加组件的名字。
关于imname的取值参考下面的「关于输入法名称」部分。
-h 显示帮助信息并退出。
关于输入法名称
选项-s与-t的参数<imname>是Fcitx用来引用输入法的名称。
不幸的是,这些名字也没有在文档中记录,但你可以在你的fcitx配置文件中找到它们,在我们的系统中,它是~/.config/fcitx/profile。
该配置文件中有一个EnabledIMList参数,它是Fcitx所支持的输入列表。每个项之间使用逗号(,)分隔。项的格式为<imname>:<boolean>,其中imname为该输入法的名字,而boolean表示是否启用该输入法。并且只有输入法为启用状态时,才可以使用-s选项进行切换。
相关文件
Fcitx会创建名为/tmp/fcitx-socket-<displayname>的套解字文件,因此用户必须有权限访问/tmp目录。
参考文献

man 1 fcitx-remote, version 2010-12-16
How can I change my fcitx input method from the terminal?

更新日志

06/29/2018 创建文章[……]

READ MORE

「fcitx-skin-installer(u)」-

安装Fcitx皮肤包
命令行语法格式
fcitx-skin-installer <skin-file>
命令描述
命令fcitx-skin-installer是一个Shell脚本文件,用于安装Fcitx皮肤包。
参数<skin-file>是皮肤文件,该文件必须是压缩文件(必须能被tar -xf解压),且只能包含一个目录。皮肤的安装目录为$HOME/.config/fcitx/skin/<skin-name>。
可以手动进行安装。
命令支持的选项及含义

参考文献

cat /usr/bin/fcitx-skin-installer

更新日志

12/12/2017 创建文章
06/30/2018 修改文章内容[……]

READ MORE

「fcitx4-config(u)」-

获取Fcitx的编译信息
命令语法格式
fcitx4-config [OPTION]
命令描述
打印Fcitx输入法编译时的信息。
命令支持的选项及含义
–package 打印Fcitx的包名
–prefix 打印Fcitx的安装前缀。通常为/usr。
–exec-prefix 打印Fcitx的二进制前缀。通常为/usr。
–libdir 打印Fcitx的库路径。
–includedir 打印Fcitx的头文件所在的路径。
–addondir 打印附加组件库(.so文件)所在的目录。通常为/usr/lib/fcitx。
–configdescdir 打印Fcitx配置描述文件目录(FCDFD)的路径。该目录中保存了一些Fcitx及附加组件等的配置描述信息。
–addonconfigdir 打印Fcitx附加组件的配置文件保存的目录。该目录保存了附加组件的配置文件。
–imconfigdir 打印Fcitx输入法配置文件的保存目录。该目录保存了输入法相关的配置。
–help 显示帮助信息并退出。
–version 显示版本信息并退出。
参考文献

fcitx4-config -h

更新日志

06/30/2018 创建文章[……]

READ MORE

「mb2txt,txt2mb(1)」-

与Fcitx表相关工具
命令语法格式
mb2txt <mbfile>
txt2mb <txtfile>
命令描述
命令mb2txt和txt2mb用于在二进制文件和文本文件之间转换表文件。Fcitx只能使用二进制格式。
命令mb2txt和txt2mb默认将结果写入到标准输出。
使用示例
Fcitx表文件的扩展名为.mb。使用mb2txt可以将二进制的表文件转化为文本文件。执行

# mb2txt /usr/share/fcitx/table/wbpy.mb > wbpy.txt

上述命令将表文件wbpy.mb转化为文本文件,转化的结果会写入wbpy.txt文件中。
编辑该文件,保存后再使用txt2mb命令将该文本文件转化为二进制文件。执行如下命令进行文本到二进制文件的转化:

# txt2mb wbpy.txt > wbpy-new.mb

相关手册
参考Fcitx的主页:https://fcitx-im.org/
参考文献

man 1 mb2txt, version 2010-12-16
fcitx下自製碼表工具,mb2txt與txt2mb(倉頡、輕鬆輸入法、五筆篇)
(推薦)在fcitx下的好用自製碼表工具,mb2txt與txt2mb(嘸蝦篇)

更新日志

06/30/2018 创建文章[……]

READ MORE

「FCITX」- 快速开始

#3 中文输入法下,使用英文标点符号
“Global Config” > “Hotkey” > “Switch Full Width Character mode”.
默认的快捷键是 “Ctrl + .”
#2 简/繁体的输入切换
Fcitx既支持简体输入也支持繁体输入,默认切换快捷键为”Ctrl + Shift + F”
在 fcitx-configtool version 0.4.8 GTK+ 3中,设置如下:
“Global Config” > “Addon” > “Simplified Chinese To Traditional Chinese”,默认的快捷键是 “Ctrl + Shift + F”。
如果未安装该插件,需要勾选“Advance”选项来显示未启动的插件。
#1 中文输入法-使用全角中括号(【 】)
「[转][整理]fcitx中文输入法-全角中括号」 「Fcitx/Punctuation」
在中文输入法下,键 [ 打出的是 · 字符,而键 ] 打出的是 「 和 」 字符。而我们希望这两个键可以打出 【 和 】 字符。
编辑vim /usr/share/fcitx/data/punc.mb.zh_CN文件,将行[ ·替换为[ 【,然后将行] 「 」替换为]  】即可。保存并执行fcitx -r命令重启Fcitx进程。
!!!最好的做法是将/usr/share/fcitx/data/punc.mb.zh_CN文件复制到$HOME/.config/fictx/data/punc.mb.zh_CN进行修改。[……]

READ MORE

「Fcitx」- 皮肤制作

​皮肤的安装路径
Fcitx自带的皮肤位于/usr/share/fcitx/skin中,每个皮肤都在独自的文件夹中,其中文件夹名为皮肤名。通过观察文件夹的内容得知自定义皮肤并不复杂。用户自定义的皮肤放在$HOME/.config/fcitx/skin目录中
如何自定义一个皮肤?
自定义皮肤并不复杂。皮肤由三部分组成:

在皮肤的安装路径中,创建一个目录,目录名为皮肤名;
文件夹中放入若干张图片,图片会在配置文件中使用,用于界面使用;
再在文件夹中创建一个fcitx_skin.conf文件,用于配制输入法的各个部分(悬浮窗、输入栏、状态栏等)的样式;

所以,自定义皮肤的关键在于如何配置fcitx_skin.conf文件,然而并没有找到什么相关的官方手册对皮肤的自定义进行说明,本文大多数内容都是网上收集整理的。
如何配置fcitx_skin.conf文件?
该文件的格式是典型的INI风格的配置文件。
配置该文件有两种方式:

手动修改fcitx_skin.conf配置文件;
使用fcitx-config-gtk工具;

手动配置不再介绍,有关配置文件中的选项及含义参考本文的「配置文件选项」部分。本文主要介绍使用 fcitx-config-gtk 工具,配置文件的选项在该工具中都是可以进行直接配置的(我只是这么猜,并没有一个一个的比对)。
使用fcitx-config-gtk配置皮肤
运行fcitx-config-gtk,启动配置工具,在「Appearance」 > 「Other」 > 「选中某个皮肤」 > 「点击配置(齿轮+扳手那个按钮)」,如图:
配置可分为以下七个部分:
信息([SkinInfo])
配置皮肤的版本及作者信息;
字体([SkinFont])
对各个部分的「字体」进行配置;
主菜单栏([SkinMainBar])
对输入法的「悬浮窗」进行配置;
输入栏([SkinInputBar])
「候选词窗口」的样式;
托盘图标([SkinTrayIcon])
对「系统托盘图标」进行配置;
菜单([SkinMenu])
输入法「右键菜单」的样式设置;
屏幕键盘([SkinKeyboard])
对「屏幕键盘」进行配置;
配置文件选项
配置文件中的选项(我并没有找到相关的官方文档对皮肤自定义进行说明)

[SkinInfo]
# Skin Name
Name=mDark
# Skin Version
Version=0.8
# Skin Author
Author=M-Mark
# De[……]

READ MORE

「Fcitx」- 导入搜狗词库文件

#1 下载搜狗词库文件(.scel)
到搜狗官网下载词库文件
下载词库以后得到一个扩展名为scel的文件。比如:demo.secl
#2 将.scel文件转化为.org文件

#!/bin/bash

# 将scel文件转化为org文件
scel2org -o tmp.org demo.scel

# 执行结束以后会得到一个tmp.org文件

#3 将.org词库与原有的.org词库进行合并

#!/bin/bash

cat pyPhrase.org tmp.org > final.org

# pyPhrase.org文件位于源码/build/src/im/pinyin/data/pyPhrase.org
# build目录是构建的时候,我们自己创建的。
# 而pyPhrase.org的源文件为源码目录/src/im/pinyin/data/pinyin.tar.gz解压所得

#4 对生成的新的.org文件进行合并去重
可以对final.org文件先执行sort命令,后执行uniq命令进行去重。
这里略过,不再详述。
#5 将.org文件转化为.mb文件

#!/bin/bash

# 将ORG文件转化为MB文件
createPYMB gbkpy.org final.org

# 注意:gbkpy.org文件位与fcitx的源码目录/src/im/pinyin/data/gbkpy.org

#6 复制.mb文件到特定位置
将生成的.mb文件复制到/usr/share/fcitx/pinyin下,但这会覆盖目录下原有的pybase.mb和pyphrase.mb文件。
也可以将其生成的.mb文件复制到~/.config/fcitx/pinyin下,但是这样就不会再读取/usr/share/fcitx/pinyin/*.mb文件了。所以和合并新词库和旧词库是十分重要的。
#7 重启FCITX
执行:fcitx -d -r
按理说重启是不应该重启系统的,但是重启FCITX会使我的桌面系统卡死,还要重启桌面,为了方便我就直接重启了。
注意事项
文中部分内容属于个人推断,并未研究过,请以文档为准。
参考文献
fcitx输入法导入搜狗scel词库方法
更新日志
09/09/2017 创建文章 06/30/2018 修改文章内容[……]

READ MORE

「FCITX」- 配置方法

问题描述
该笔记将记录:配置 FCITX 的方法,以及相关问题的解决办法;
解决方案
配置方法有两种:通过修改配置文件;通过图形化配置工具;
方法一、直接修改配置文件
通过直接修改配置文件的方式,便能够实现 FCITX 的配置;
仅当部分配置必须通过配置文件进行设置,我们才会使用该方式。鉴于此,所以这里不再展开相关细节;
方法二、Fcitx-Configtool
fcitx-configtool,配置 Fcitx 输入法的 GUI 工具,我们将重点记录该工具相关的内容;
通过仓库安装
安装配置工具(for Debian-based):

# Fcitx-Configtool,分为 GTK+ 2 和 GTK+ 3 版本;

# gtk3 版本,该版功能更多,可以对主题进行设置;
apt-get install fcitx-config-gtk

# gtk2 版本
apt-get install fcitx-config-gtk2

通过源码安装
详细的编译教程在 INSTALL 文件中;

# 第一步、源码下载
# http://code.google.com/p/fcitx
# https://download.fcitx-im.org/fcitx-configtool/
# GitHub 项目地址:https://github.com/fcitx/fcitx-configtool

# 第二步、源码编译
mkdir build; cd build

# 如果要安装到不同的目录中,可以使用:cmake .. -DCMAKE_INSTALL_PREFIX=/install/path
cmake ..

make && make install

运行配置工具

# 运行 GTK+ 2 配置工具
fcitx-config-gtk

# 运行 GTK+ 3 配置工具
fcitx-config-gtk3

使用配置工具
配置工具的使用方法这里就不介绍了,也没有很复杂。在其他的文章里会涉及某些常用或者特殊的配置;
参考文献
fcitx-configtool/INSTALL Compile Configtool FCITX/Wiki/onfigure (Other)[……]

READ MORE

「FCITX」- 访问剪贴板

问题描述
在 FCITX 中,通过 Clipboard 插件,能够其支持剪贴板的历史内容;
该笔记将记录:安装配置 Clipboard 插件的方法,以及相关问题的解决办法;
解决方案
安装配置
1)该插件已预装在 FCITX 中; 2)然后,在 fcitx-configtool 的 AddOn 中,选中后启用; 3)点击 Configure 进行设置,如图:

插件使用
默认 Ctrl + ; 快捷键,然后将显示剪贴板的历史内容,如图:

通过 <0-9> 按键,进行选择内容选择; 通过 <+> / <-> 按键,完成翻页; 通过 <Tab> / <Shift + Tab> 按键,进行上下切换;
参考文献
Fcitx/Addon:https://fcitx-im.org/wiki/Category:Addon Clipboard – Fcitx[……]

READ MORE

「FCITX」- 输入特殊符号(字符)

问题描述
除了常规输入外,我们还需要输入某些特殊字符,诸如 ②, ③, ④ 等等;
该笔记将记录:在 FCITX 中,输入特殊字符的方法,以及相关问题的解决办法;
解决方案
Special Symbols(sxfh)
Fcitx/Special symbols
针对简单字符的输入,通过 sxfh 按键,即可实现:
通过 ~/.config/fcitx/data/pySym.mb 文件,能够额外添加部分特殊字符:

#The first line with “#” is a comment
#Format: coding symbol
#Code can only be lowercase letters, after pinyin analysis, the longest is 10 (such as py is 2, pinyin is also 2)
#Mathematics symbols
sxfh +
sxfh -
sxfh <
sxfh =
sxfh >

Special Characters(Unicode)
Unicode – Fcitx Fcitx/Input special characters
部分特殊字符的输入,需要 Unicode 插件; 该插件已预装,在 Addon 中,进行插件启用;
首先,通过 Ctrl + Alt + Shift + U 按键,显示搜索框:
然后,通过键入关键字,完成搜索: To search hex, type U+ or 0x as prefix. To search decimal value, type number directly.
例如,搜索 ① 字符,Ctrl + Alt + Shift + u,circle one,Alt + 1:[……]

READ MORE

「Fcitx」- 常见错误汇总

无法启动 Fcitx 输入法
在启动启动Fcitx后,产生如下错误:

(ERROR-6089 ime.c:432) fcitx-keyboard-cm-mmuock already exists

但是 Fcitx 进程是存在的,但是系统托盘(stalonetray)中没有 Fcitx 的图标。
该问题是由于运行了 ayatana-indicator-application 导致的,停止即可。
那个错误好像也没有什么关系,我觉得这种错误很难遇见。
Fcitx 无法进行切换
https://wiki.archlinux.org/index.php/fcitx#Ctrl.2BSpace_fail_to_work_in_GTK_programs[……]

READ MORE

「关于Fcitx输入法的状态」

问题
使用输入法时有一个问题就是输入法的状态,每次都要查看状态栏才能得知当前输入法的状态,否则无法知道当前输入法是英文状态还是中文状态。
想法
因此,我们需要想一个办法可以直观的看到当前输入法的状态,而不是每次都去看状态栏中的输入法状态。
有这么几个想法:

使用光标。每次输入法发生变化的时候,修改光标的状态或者颜色,使用光标颜色来分别输入法的状态。
使用窗口。每当输入法发生变化的时候,修改窗口的状态或者颜色,使用窗口颜色来区别输入法的状态。

这两个想法的前提是可以修改光标或者窗口的样式或行为。鉴于我使用的是Fvwm窗口管理器,所以这可以做到。但是输入法的功能确成为了瓶颈,我们缺少的是在输入法发生变化时收到事件通知的钩子,就是说我们无法检测到输入法何时发生了变化,因此我们也就不知道合适修改光标或者窗口的样式。
因此,只能换个思路了。Fcitx中有个命令fcitx-remote(1),可以用来控制输入法的切换、激活、关闭等等。因此,我们可以定义快捷键组合,按下该组合后,切换到某个输入法,然后再修改光标的颜色或窗口的状态;按下另一组快捷键时,切换到另一种输入法,同时修改光标或者窗口的颜色。你如果问我是怎么想到的,我也不知道,就是突然想到了。
还要在强调一点,因为我使用的窗口管理器是Fvwm,这使得修改光标或窗口的状态成为可能。不是说其他的窗口管理器做不到,如果你所使用的窗口管理器不能方便的修改光标或者窗口的状态,那你只能另辟蹊径了。
说到这里,我又有了另外的一个想法:抛弃直观状态,直接切换到指定的输入法。不管当前的输入法是什么,只要按下指定的快捷键组合就可以直接切换到指定的输入法。虽然这个想法不如先面的那一个,但也能算是个七八分的解决方案,唯一不足的地方就是无法直观的看到输入法的状态。写到这里的时候,我去看了一眼Fcitx中的附加组件,发现有一个扩展Input method selector,这个扩展可以设置快捷键直接切换到某个输入法。emmmmm…。这里就不介绍了,使用该附加组件,通过设置快捷键可以直接切换到某个输入法。
所以到这里,有了本文后面的总结性的内容。
方案一 设置快捷键(一个可以得到7分的办法)
Fcitx中有一个附加组件Input method selector,这个扩展可以设置快捷键来直接切换到某个输入法。
这里就不展开介绍了。唯一需要注意的一点是:你可能需要设置一个额外的输入法用作默认的输入法。因为在该扩展中第一输入法实际上是输入法列表中的第二个。
同时,我还保留了右SHIFT键进行输入法的切换。当我找到输入法的状态时,使用右SHIFT键直接切换状态。
方案二 远程控制Fcitx的切换(一个可以得到10分[……]

READ MORE

「Fcitx」- [已解决] 在 Firefox 中,不能使用 Fcitx 输入法

问题描述
Fcitx输入法已经安装,在其他的应用中可以正常使用,但是在Firefox中无法切换输入法。
所使用的Linux发行版为Kali GNU/Linux Rolling
安装Fcitx的命令为apt-get install fcitx-table-wbpy,执行命令时,APT自动为我安装了其他依赖。
问题原因
没有找到。可以查看「参考文献」部分中的文章列表来处理自己的问题。
解决办法
这里是我的解决办法。执行下面的命令安装相应的模块:

# apt-get install fcitx-module-x11 fcitx-frontend-gtk2 fcitx-frontend-gtk3

通常情况下,安装fcitx-module-x11就可以解决问题。
参考文献
解决Arch Linux下Firefox不能调用Fcitx输入法 Fcitx/FAQ/2 Problem in Firefox and Google Docs ArchLinux/Fcitx/Firefox popup menu not work
更新日志
05/27/2018 创建文章,记录该问题[……]

READ MORE

「FCITX-5」- 新版本 Fcix 输入法

Fcitx5 是 Fcitx 的下一代版本(在升级 Ubuntu 22.04 版本时,04/25/2023,我们开始使用 Fcitx 5 输入法)
原理简述
Fcitx 5,使用了 DBus 协议来实现输入法和应用程序之间的通信。
特性特征
Fcitx5,其支持的语言和功能与 Fcitx 相同; Fcitx5,在性能和稳定性方面有所提升。 Fcitx5,还支持多种主题和插件,可以自由定制输入法的外观和功能;
应用场景
Linux Desktop 的中文输入[……]

READ MORE

「FCITX-5」- 安装 ⇒ 配置 ⇒ 使用

第一步、安装输入法

# Ubuntu 22.04 LTS,该命令将安装所有与 Fcitx 5 相关的软件包
apt-get install fcitx5-*

第二步、配置输入法
输入法配置:

# for Ubuntu 22.04 LTS
im-config

输入法自启动(Fcitx/Setup Fcitx 5/Autostart):

mkdir -p ~/.config/autostart && cp /usr/share/applications/org.fcitx.Fcitx5.desktop ~/.config/autostart

第三步、使用输入法
系统托盘图标 ⇒ Configure ⇒ Input Method ⇒ Avaialable Input Method ⇒ 选择 Pinyin 书法[……]

READ MORE

「Linux」- 应用程序自启动,自动启动脚本

问题描述
该笔记将记录:在系统中发生某些事件时,如何自动执行脚本,或者如何启动桌面应用程序;
解决方案
文章主要的内容参考了ArchWiki/Autostaring中的介绍,然后加入了一些补充说明;
在系统启动和关机时
使用systemd服务;
在用户登入和登出时
可以使用systemd/User服务;
时间事件
按日期、时间进行周期的执行:

systemd/Timers
Cron

在某个日期和时间执行一次:

systemd/Timers
at

systemd/Timers 中涵盖了 Cron 及 at 的功能;
在文件系统事件发生时
通常使用 inotify 实现,由下面这些工具:

inotify-tools (see some examples)
Incron
fswatch

在 SHELL 的登入或登出时
这个可以通过配置命令行 SHELL 的配置文件实现;
在 Xorg 启动时
可以通过下面两个配置文件实现:

xinitrc,如果你使用 xinit 手动启动 Xorg;
xprofile,如果你使用了显示管理器;

在桌面环境启动时
大多数桌面环境实现了XDG Autostart,如果可以参考相关 ArchWiki 中桌面环境的 Autostart 部分的介绍:

GNOME#Autostart
KDE#Autostart
Xfce#Autostart
LXDE#Autostart
LXQt#Autostart

在窗口管理器启动时
可以参考桌面管理器在 ArchWiki 中的文章,文章中的 Autostart 部分中有相关的介绍:

Fluxbox#Autostart
Openbox#Autostart
Awesome#Autostart

我现在使用的窗口管理器是 FVWM,但是没有 Arch 中没有相关的 Autostart 介绍。可以通过 Fvwm 中的 InitFunction 实现应用的自启动;
关于使用 XDG 自动启动应用的问题
在XDG 自启动规范中定义了一种方法,用于在桌面环境启动、可移动介质装入时,自动启动桌面条目(通常.desktop 文件)。这种方法需要将桌面条目放置在特定的目录中;
注意,虽然 XDG 工具包中提供了很多命令,但是这些命令中并不包含自启动脚本。什么意思呢?就是说对于 XDG 自启动,需要桌面环境的支持。XDG[……]

READ MORE

「Linux」- 设置默认的应用程序

今天使用某个应用程序里的“打开文件管理器“功能时,产生了如下的错误:

linux Error reporting is enabled
If you wish to disable this feature you may do so in the Help menu

目测是默认的应用程序配置(或者说是MIME的配置)有问题。”目测“是凭借经验的一种猜测。
上面的消息是通过一个弹窗进行显示的,通过xprop(1)定位到了显示窗口的进程PID值,查看进程发现这个弹窗是由chirpw(1)产生的,所以可以确定是MIME配置不正确导致其使用了CHIRP打开。
所以,修改默认的应用程序配置即可。
修改默认应用程序
在Linux中,默认应用程序的设置、默认打开方式都遵循了MIME规范。可以使用xdg-utils软件包中的xdg-mime(1)命令进行默认软件的设置。
打开文件管理器的MIME类型为inode/directory,没有为什么这是规范,这是标准。其实,我也不是很懂这里面的机制。
执行如下命令来设置默认的打开方式:

# xdg-mime default pcmanfm.desktop inode/directory

我使用的文件管理器PCManFM,你要却确保pcmanfm.desktop是存在的。emmmmm….关于.desktop文件,又涉及了另外一个话题了。
执行完上述命令后,在$HOME/.local/share/applications/mimeapps.list文件中会多出一个内容为inode/directory=pcmanfm.desktop行。文件类型关联的打开方式都保存在这个文件中。这个一个用户级别的配置文件。系统级别的配置文件为/etc/xdg/mimeapps.list。
参考文献
Default applications XDG MIME Applications Media type Error reporting is enabled How do I change the default file manager back to Nautilus?[……]

READ MORE

「在Debian下,配置桌面通知」

“桌面通知”,指的是一种“类似于Microsoft Windows中出现在桌面右下角的弹窗”的通知。这种通知并不是Alert,因此不会影响用户的操作,仅起到提示功能。
本文将一步一步的实现:通过命令行发送通知。其实也没有几步,很简单。之所以这么做是因为在系统发生某些事件或者某个时间点时,我希望能够收到通知提示,因此需要通过命令行(Shell脚本)来发送通知。在「ArchLinux/Desktop notifications」中给出了其他编程语言发送通知的方法。
什么是Libnotify?
Libnotify是「桌面通知规范」的一种实现,它为GTK+和Qt应用程序提供支持,并且与桌面无关:它已被许多开源应用程序(如Evolution和Pidgin)使用。
我猜测的流程
在Shell中,通过调用notify-send(1)命令,将消息内容发送给“通知守护进程”,然后”通知守护进程“在桌面上显示一个通知。
我们需要启动”通知守护进程“。
启动“通知守护进程”
在Debian系列中,安装notification-daemon软件包:

# apt-get install notification-daemon

然后,执行如下命令来启动“通知守护进程”:

# /usr/lib/notification-daemon/notification-daemon

到此,我们就有了一个“通知守护进程”,接下来就是发送通知了。
命令行中发送通知
如果想要在命令行中发送通知,需要使用notify-send(1)命令。在Debian中,该命令在libnotify-bin软件包中,执行如下命令进行安装:

# apt-get install libnotify-bin

然后,执行notify-send(1)命令来发送通知:

# notify-send “First message” “This is a message body.”

至此,你就可以收到一个标题为“First message”,内容为“This is a message body.”的消息。
实际上,“通知”还支持HTML标记、高亮、启动应用、鸣声等等相关功能,本文并没有进行详细的介绍,该部分内容可以参考「The Desktop Notification Spec」的说明。在「ArchLinux/Desktop notifications」中给出了其他编程语言发送通知的方法。
开机启动“通知守护进程”
通过D-Bus启动
可以分别向目录/usr/share/dbus-1/services和$XDG_DAT[……]

READ MORE

「Linux」- 桌面整理软件(Desktop Organizer)

问题描述
桌面整理软件,类似 Fences、360 桌面、腾讯桌面 等等软件。
解决方案
for Linux
Desktop Folder(推荐)
spheras/desktopfolder: Bring your Desktop Back to Life
Folderview Screenlet(废弃)
Folderview Screenlet – linux-apps.com
在 Linux 中,我们能够使用 Folderview Screenlet 软件。
# 07/22/2021 版本已经很久了,上次是 2016-04-15 更新。
for Windows
Coodesker
Coodesker – Desktop organize tool
# 11/12/2021 最开始我们使用 360 桌面,不过全屏的游戏经常会调整分辨率,而导致盒子错位(即使锁定也不能解决问题)。Coddesker version 1.0.0.35 我们暂时未发现该问题。
# 01/16/2022 游戏分辨率如果低于当前桌面分辨率,可能会导致 Coodesker 出现白线(渲染问题)。但是问题不大,重新收起 Box 再展开即可。
参考文献
Folderview Screenlet: App Reviews, Features, Pricing & Download | AlternativeTo ubuntu – Is there a tool similar to Fences (by Stardock) for Gnome? – Super User[……]

READ MORE

「Linux」- 修改鼠标滚轮的滚动方向

我们要实现什么功能?
就是……像在OS X Lion中一样,鼠标滚轮滚动的方向就是页面移动的方向(模仿智能手机或平板电脑滚动)。
(无关紧要的一句话:可以这么想象,在Mac中,滚轮用于移动在窗口中的页面,而在Windows中,滚轮用于移动在页面上的窗口)
这个东西称为「反向滚动」(Reverse scrolling),或者「自然滚动」(Natural scrolling)
有哪些办法呢?
有那些方法可以实现呢?

xmodmap,修改Xorg中的键映射和指针按钮映射(部分应用程序无效);
xinput,修改libinput Natural Scrolling Enabled属性;
synaptics,但是这个只是用于触控板;

这里并没有介绍图形化界面中的那些设置方法(在桌面环境中,可以在设置用找到「Natural scrolling」功能进行设置)。
有些东西一言难尽……
「xmodmap」与「XKB」没有直接关系。因为在“在X中如何处理keycode”中,「xmodmap」使用了不同想法(前XKB)。有关高级布局配置,请参阅「XKB」部分。
TODO 「xmodmap」与「XKB」的真正区别。为什么使用「xmodmap」后,某些应用是无效的。
# xmodmap(存在一些问题)
XMODMAP – 用于调整键盘和鼠标映射
为什么用到了这个技术?不知道,我搜索“linux change mouse scroll direction”后,出来的第一篇文章就是和XMODMAP有关的内容,发现这技术可以实现我想要的功能。大概是这个样子的(里面含有一些猜测的成分,并未找到直接相关的文档,也没有翻阅官方手册(因为成本和收益的原因),只看到一些介绍的博客):

在Linux(或者其他操作系统)中,每个按键都映射到一个编号。下面鼠标按钮映射值:

mouse 1:左键
mouse 2:中间(滚轮。鼠标中间是可点击的,比如在Firefox中,在链接上单击中键,可以在新选项卡中打开页面)
mouse 3:右键
mouse 4:下滚动,滚轮逆时针(垂直方向)
mouse 5:上滚动,滚轮顺时针(垂直方向)
mouse 6:左滚动(没见过……)
mouse 7:右滚动(没见过……)
mouse 8:向后导航(没见过……)
mouse 9:向前导航(没见过……)

可以使用xev -event button命令。在弹出的“Event Tester”窗口中进行点击操作,并观察控制台的输出,来观察鼠标的映射值。这里没有讨论键盘,键盘也[……]

READ MORE

「Screen Locker」- 锁屏软件

for Linux
The Best Linux Lockscreen ArchWiki/Screen lockers
light-locker
访问 light-locker 主页
slock
执行 slock 命令进行锁屏。锁屏后,屏幕空白,背景为黑色。输入密码时,背景变为蓝色。按下回车键,提交密码进行验证。如果密码错误则背景变为红色。如果密码正确,则进入桌面;
唯一困惑我的是:如果密码错误,大概要等待 3 秒背景才能变为红色;如果密码正确,则马上解锁进入桌面。所以,我放弃使用 slock,转用 i3lock 了,仅仅因为反馈太差。虽然 i3lock 存在同样的问题,但是 i3lock 会显示一个“Verifying…”(虽然是静态的,自欺欺人,但是有个心里安慰);
命令 slock 属于 suckless-tools 软件包,访问 suckless-tools 主页。在 Debian 及衍生版中执行apt-get install suckless-tools命令进行安装;
i3lock
访问 i3lock 主页
xlock
Ubuntu 16.04.2 LTS 中已经移除了该软件包,只能编译安装了。然而我并没有找到源码包;
参考 xlock 手册
for Window
关闭自动锁屏
Disable auto-lock Windows 7
控制面板 / 外观和个性化 / 个性化 / 屏幕保护程序(右下角)/ 在恢复时显示登录屏幕(取消勾选)[……]

READ MORE

「Screensaver」 – 屏保程序(在Linux中)

解决方案
屏幕保护程序(或屏幕保护程序)是一种计算机程序,当计算机不使用时,它会使屏幕空白或用移动的图像或图案填充屏幕;
屏幕保护程序的最初目的是防止 CRT 和等离子计算机显示器上的荧光粉老化(因此得名)。
虽然现代显示器不容易受到此问题的影响,但屏幕保护程序仍可用于其他目的。 屏幕保护程序通常设置为提供基本的安全层,需要密码才能重新访问设备。 一些屏保使用其他未使用的计算机资源来执行有用的工作,例如处理分布式计算项目;
XScreenSaver
访问 XScreenSaver 主页
GNOME Screensaver
访问 GNOME Screensaver 主页
参考文献
Wikipedia / Screensaver[……]

READ MORE

「Linux」- Audio/Sound

如何让笔记本发出蜂鸣声?
How to ring the system bell from command line? Why does the bell character have a limit? Beep in shell script not working?
控制声音的GUI程序
pavucontrol
pasystray、avahi
pavumeter
Alsamixer https://wiki.ubuntu.com/Audio/Alsamixer alsa-utils alsamixergui
aumix
alsa-tools-gui https://community.linuxmint.com/software/view/alsa-tools-gui
qasmixer
Advanced Audio Control on Linux
Advanced Linux Sound Architecture
PulseAudio
ALSA Applications
我目前正在使用的是 pasystray ,启动后在系统托盘中显示一个喇叭图标。
音频工具
Home | JACK Audio Connection Kit jackaudio/jack2: jack2 codebase
duncanthrax/scream: Virtual network sound card for Microsoft Windows[……]

READ MORE

「Linux」- 声音驱动

ALSA :: Advanced Linux Sound Architecture
Homepage: http://www.alsa-project.org/main/index.php/Main_Page
PulseAudio
PulseAudio 是 POSIX OS 的声音系统,它是声音应用程序的代理。它允许在应用程序和硬件之间传递的声音数据上执行高级操作。将音频传输到不同的机器、更改样品格式或通道数、将多种声音混合成一个,诸如此类可以使用声音服务器轻松实现;
PulseAudio 专为 Linux 系统而设计。它也已经在 Solaris,FreeBSD,NetBSD,MacOS X,Windows 2000 和 Windows XP 上移植和测试;
PulseAudio 是所有相关现代 Linux 发行版的组成部分,并被多个供应商在各种移动设备中使用;
ALSA 与 PulseAudio 之间的关系
ALSA kernel drivers -> ALSA library -> dmix -> PulseAudio server -> Alsa library (-> Pulse backend) -> Application
pulseaudio 和 alsa 不会冲突; pulseaudio 是管理声卡的; alsa 是驱动声卡的; pulseaudio 给 application 提供了一个访问声音设备的简单接口; application 完全可以绕过 ps 直接用 alsa;

参考文献
关于 pulseaudio 和 alsa: http://tieba.baidu.com/p/3790145023 ArchWiki / PulseAudio: https://wiki.archlinux.org/index.php/PulseAudio[……]

READ MORE

「已解决」登录后没有声音(Kali Linux)

问题描述
系统启动后,登录root帐号后,系统没有声音(Firefox里没有声音)。
操作系统为Kali GNU/Linux Rolling
可能原因一:服务未启动
未找到。可能是因为PulseAudio服务未启动
解决办法
执行下面的命令,安装PulseAudio,并启动服务:

# apt-get install pulseaudio pulseaudio-utils
# systemctl –user enable pulseaudio
# systemctl –user start pulseaudio
# systemctl –user status pulseaudio

然后重启Firefox。
可能原因二:静音
另外一个可能的原因是:静音。下面是我遇到的情况,我用的是ALSA驱动。
我也是从PASysTray(pasystray -d)的调试日志中看出端倪的:

(pasystray:1766): pasystray-DEBUG: 12:38:16.431: volume:37696 muted

(PASysTray是一个声音控制程序,能够显示在系统托盘中)。
解决办法
执行amixer命令来关闭静音:

# amixer set Master unmute

或者执行:

# amixer set Master toggle

来切换静音的开关状态。顺便,如果想要静音,可以执行:

# amixer set Master mute

命令。
可能原因三:当前为root用户,导致服务无法启动
09/05/2018 前不久系统又没有声音了。今天打算处理一下。
执行systemctl –user status pulseaudio查看服务时,输出了如下信息:
● pulseaudio.service – Sound Service
Loaded: loaded (/usr/lib/systemd/user/pulseaudio.service; enabled; vendor preset: enabled)
Active: inactive (dead)
Condition: start condition failed at Wed 2018-09-05 06:39:07 CST; 5min ago
└─ ConditionUser=!root was not met

查看/usr/lib/system[……]

READ MORE

「PASysTray」- Pulse Audio System Tray

安装

#!/bin/bash

# Kali GNU/Linux Rolling
apt-get install pasystray

常见错误列表
#1
(pasystray:30116): pasystray-WARNING **: [notify] unable to show notification: g-dbus-error-quark: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.Notifications was not provided by any .service files (2)
原因:未知。可能是因为没有安装notification-daemon服务导致的。 解决:未解决。
#2 Error initializing Avahi: Daemon not running
(pasystray:30890): pasystray-WARNING **: Error initializing Avahi: Daemon not running
原因:没有安装avahi服务。或者avahi服务没有启动。 系统:Kali GNU/Linux Rolling 解决:安装avahi服务,并启动该服务。

# 安装avahi服务
apt-get install libavahi-common3 libavahi-core7 avahi-daemon
# 开机自启动
systemctl enable avahi-daemon
# 启动服务
systemctl start avahi-daemon

参考文献
项目pasystray的GitHub中的地址[……]

READ MORE

「Linux Desktop」- 有趣的系统资源监视器

问题描述
当需要查看系统资源状态、资源使用情况等信息时,我们会使用一些系统资源监视工具。在终端里中,执行这些命令,然后就会终端中显示出一个文本图形界面,以实时地显示出某些信息;
但是,有的时候这并不能满足我们的需要。因为,我们想实时查看系统的一些摘要信息 CPU 使用、内存使用、网络占用、系统中断、电池、CPU 温度、硬盘 IO 等等。而上面的命令通常都是服务器级别的管理命令,显示具有针对性的信息,很少有包含全部摘要信息的命令。而且这些命令都是在终端中执行的,想在桌面上一直显示,不是很方便;
(这里我们讨论的笔记本电脑中的应用程序,不是服务器级别应用)
该笔记将记录:我们使用过的几款桌面 GUI 的系统资源监视程序。它们有:
解决方案
XOSView(基于 X 的系统监视器)
http://xosview.sourceforge.net/ 参考 XOSView 主页 man 1 xosview, Version 3rd Berkeley Distribution 此版本的 xosview 从以下站点分发:http://www.pogo.org.uk/~mark/xosview/ 有关 XOSView 的截图
安装程序:

# Kali GNU/Linux Rolling
apt-get install xosview

gDesklets
https://www.gdesklets.info/archive/
GKrellM
http://gkrellm.srcbox.net/
Xbattbar
参考文献
Alternative to Gkrellm[……]

READ MORE

「Linux」- 桌面壁纸(Wallpaper Changer)

问题描述
以前喜欢玩这些东西,设置桌面,改改壁纸,把 Linux 桌面弄成自己喜欢的样子。现在(05/16/2021)工作这么忙,看到的永远都是终端和各种文档:-(,哪里还有时间欣赏壁纸(已经很多年了,上次留意壁纸的时候已经记不清了)。
现在(05/16/2021),我们发现很多壁纸真的很好看,所以我们预留台显示器专门用来显示壁纸,留着好看,就是玩儿。
该笔记将记录:在 Linux 中,用于设置桌面壁纸的软件,以及相关问题的处理方案。
解决方案
通常,带有壁纸库的软件需要付费。免费软件,通常需要我们自己到网络中下载图片,然后再使用工具进行管理。
Variety(推荐)
GitHub – varietywalls/variety: Wallpaper downloader and manager for Linux systems
整理时间:05/17/2021
1)不仅能够显示本地壁纸,还能到 Flickr, Wallhaven, Unsplash 等等站点下载壁纸; 2)能够自动进行壁纸切换(能设置每秒切换一次) 3)还能够显示时钟、设置壁纸效果(比如模糊、油画等等) 4)监控剪切板,以自动下载复制的图片地址; 5)……

Wallch(推荐)
Wallch in Launchpad
整理时间:05/17/2021
1)支持壁纸自动切换,加载本地壁纸库 2)Live Earth 壁纸 3)从 Wikipedia 中获取 Picture of the Day 作为壁纸 4)在壁纸上显示时钟 5)动态站点(将站点页面设置为壁纸)
网络受限,部分功能需要特殊手段才能够正常使用。

Bing Wallpapers for Linux
Explore the world one photo at a time | Bing Wallpaper GitHub – whizzzkid/bing-wallpapers-for-linux
整理时间:05/17/2021
1)bingwallpaper 能够自动下载 Bing 的高清壁纸图片,并设置壁纸。
但是,不像其他壁纸软件那样功能丰富,bingwallpaper 是个仅能在命令行运行的工具。
Komorebi – 动态壁纸
GitHub – cheesecakeufo/komorebi: A beautiful and customizable wallpapers manager for Linux
整理时间:05/17/2021
1)通过 Komorebi 应用,我们能够显示动态壁纸。在该壁纸上,能够设置显示当前时间。 2)除此之外,我们还[……]

READ MORE

「Linux」- 通过进程ID切换到窗口

内容简介
本文将介绍:在桌面环境下,如何通过进程ID切换到对应的窗口。
问题描述
当你发现某个窗口占用资源(比如CPU、内存等等)非常多时,如何才能快速找到对应的窗口呢?在多数情况下,直接查看进程正在执行的命令,就能找到对应的窗口。
但是有些情况下,比如同一个程序运行了多个实例(比如打开多个浏览器实例),怎样才能确定是哪一个占用资源呢?
这也是本文要介绍的内容:在桌面环境下,如何通过进程ID切换到对应的窗口。
解决办法
#1 找到“问题”进程
通过top、ps命令,找到资源占用较多的进程,得到进程的PID值,这里不再介绍。
#2 找到对应窗口

#!/bin/sh

cat <<EOF > /tmp/find-window.sh
#!/bin/sh

findpid=$1

known_windows=$(xwininfo -root -children|sed -e ‘s/^ *//’|grep -E “^0x”|awk ‘{ print $1 }’)

for id in ${known_windows}
do
xp=$(xprop -id $id _NET_WM_PID)
if test $? -eq 0; then
pid=$(xprop -id $id _NET_WM_PID|cut -d’=’ -f2|tr -d ‘ ‘)

if test “x${pid}” = x${findpid}
then
echo “Windows Id: $id”
echo “##################################”
xprop -id $id
fi
fi
done
EOF

# 找到窗口的ID值,形如「0x5a00001」格式。
sh /tmp/find-window.sh “<PID>”

#3 切换到该窗口
使用wmctl可以切换到该窗口,但前提是「窗口管理器」要符合EWMH标准:

#!/bin/sh

# wmctl -i -a ‘WINDOW ID’
wmctl -i -a ‘0x5a00001’

参考文献
How to get window ID from process ID Is there a linux command to determine the window IDs associated with a given process ID? How to get an X11 Window from a Proces[……]

READ MORE

「suckless-tools」

wmname
Homepage Git Repository
wmname,打印/设置 Root Window 的 Window Manager 的名称属性,类似于 hostname(1) 的行为。 wmname 是一个很好的实用程序,用于修复 JDK 版本和其他破坏的程序的问题。
我们之所以安装 wmname 是为了解决 Netbeans 在 xmonad 中无法正常启动,界面是空白。
下载安装
到官网下载wmname,详细的安装步骤位于源码目录下的README文件中。
参考文献
Homepage[……]

READ MORE