分类 Linux 下的文章

做了个小工具essential-pathway

个人作品说明,如有转载,请注明作者和出处。

——by realasking

工具下载地址:

github pypi

以前就一直觉得在命令行下切换各个目录很头疼,而且总是忘记哪些目录在用,所以后来就自己写了好几个shell脚本来管理在使用的目录,并提醒自己其中的内容。最近几天,突然萌生了把它们整理一下、打成一个包的念头,不过没有想到的是,做着做着突然觉得还不如干脆用python来整个重写一遍,结果最后就做出了这么个东西。

这个小工具是用python3.6开发的,以LGPLv3发布,兼容性并未进行多少测试,目前只在64位archlinux上使用着。它用python调用sqlite3来管理常用路径,并生成包含数据内记录路径的modulefile供Tcl版的environment module来读取,以生成新的环境变量供用户调用,而在列表显示内部的路径时,需要调用python的prettytable库,所以该工具在安装前,需要先安装配置module和prettytable。

prettytable直接用pip install prettytable即可安装。

module在archlinux上用yaourt -S env-modules-tcl安装,在安装完成后,需要在$HOME下建立文件.modulespath,其内容为存放modulefile的目录位置,然后还需要在.bashrc中添加如下两行:
export MODULEPATH=${HOME}/env/module_files:$MODULEPATH
source /etc/modules-tcl/init/bash
下次登录bash即可启用module了。

本工具所生成的modulefile叫epath,要启用它,则需要在以上两行之后另起一行,添加以下内容:

module load epath

这一步建议在本工具安装完成并至少运行一次后操作

设置完成后,用pip install essential-pathway安装本工具,然后执行ep,就可以看到各种功能的使用说明了,举个例子,比如要将当前目录加入到pathway中,并将此pathway命名为myhome,执行:

ep a myhome

然后执行:

ep l

显示:

然后执行:

[realasking@Laptop Documents]$cd ~
[realasking@Laptop ~]$module load epath
[realasking@Laptop ~]$cd "$myhome"
[realasking@Laptop Documents]$

可以看到,环境变量myhome就生效了。

同样的,该工具还支持评注(备忘)、删除、刷新、备份、卸载环境变量设置等功能,需要注意的是,每次使用该命令前,请先执行一次module unload epath,否则可能会出现一些问题,在所需操作都执行完之后,需要让所有的pathway都生效,则可以再执行一次module load epath,当然,如果将这一句导入到了.bashrc中,则重新登录shell就可以了。

有兴趣的朋友可以试试,欢迎大家提意见,但限于个人精力和能力,本人不保证此工具的有效性及稳定性,也不一定能及时回复大家的关切,还望大家海涵。

安装配置archlinux下的tty控制台中文显示和输入

个人笔记,若有转载,请注明作者和出处。

——by realasking

 

上一次折腾Linux的中文环境是2013或2014年了,当时用的也是archlinux,后来转用Fedora之后,也沿用着当时配置的结果,在X环境下使用fcitx-sogoupinyin,在tty下使用zhcon和zhcon自带的双拼,这一次重装antergos之后,一直没改,直到昨天需要在tty下打开一个中文文件,才发现,随着时间的流逝,一切都会改变。

当年在tty下选择zhcon其实是不得已之下的选择,当时的fbterm字体显示非常难看,即使设置多个字体也是如此,在fbterm下启动fcitx也不够稳定,老出现一些莫名的问题,而当时的zhcon非常强壮,虽然输入法没有那么好用,却不会闹什么幺蛾子。

但是昨天,当我在zhcon下用vim打开一个中文文件时,却遇到了麻烦,表现为:文件打开后,屏幕一片黑,看不到任何内容,需要不停的滚屏,然后回翻才能看到文字,在耐着性子操作了一会儿之后,实在不能忍受之下,终于决定重新配置tty下的中文支持。

仔细的查找了一些资料,发觉问题可能是由于archlinux内核的framebuffer驱动已经不再是uvesa造成的,既然如此,似乎也只能暂时搁置zhcon了,于是决定重新安装fbterm和fcitx-fbterm。

 

做法是:

 

1-1.删除掉termcap自带的fbterm的terminfo:

sudo rm /usr/share/terminfo/f/fbterm

 

1-2.安装fbterm

执行

yaourt -S fbterm-git

在完成打包后不要马上按Y或N,而是执行:

cp  /tmp/yaourt-tmp-realasking/PKGDEST.7Kk/fbterm-git-20150509-3-x86_64.pkg.tar.xz ./

xz -d fbterm-git-20150509-3-x86_64.pkg.tar.xz

tar -xvf fbterm-git-20150509-3-x86_64.pkg.tar

sudo cp usr/share/terminfo/f/fbterm /usr/share/terminfo/f/fbterm

sudo cp usr/bin/fbterm /usr/bin/

sudo cp usr/share/man/man1/fbterm.1.gz /usr/share/man/man1/fbterm.1.gz

sudo setcap 'cap_sys_tty_config+ep' /usr/bin/fbterm

sudo chmod u+s /usr/bin/fbterm

这么操作是为了偷懒,不用自己到处找patch,另外也避开了yaourt报告两个包有相同文件的错误。

 

1-3.安装fcitx-fbterm

git clone https://github.com/fcitx/fcitx-fbterm.git

cd fctix-fbterm

mkdir build

cd build

cmake .. -DCMAKE_INSTALL_PREFIX=/usr

make

sudo make install

 

似乎一切顺利?不是的,此时进入tty,打开fbterm会发现,字体很丑,而且输入时候选栏是乱码。实际上,字体丑,可以重新定义,乱码问题,则是fcitx若使用sogou拼音则需要使用sogou的panel造成的,重新配置环境如下:

 

2-1.配置fbterm

vi .fbtermrc

将font-names行设置为:

font-names=Liberation Mono,Noto Sans Mono CJK SC Bold,Droid Sans Fallback

这样设置下,现在的fbterm处理英文字体会优先读取Liberation Mono,而字间距和行间距也以它的设定为准,中文则优先读取Noto Sans Mono CJK SC Bold,其他字体读取Droid Sans Fallback,虽说效果不如zhcon,但也比以前的fbterm好不少了

输入法设置为:

input-method=fcitx-fbterm

为了vim分别定义gui和256色的tty环境的colorscheme,需要设定以下行:

TERM=fbterm

 

2-2.配置fcitx

yaourt -R fcitx-sogoupinyin

yaourt -S fcitx-sunpinyin fcitx-cloudpinyin

干掉搜狗拼音,使用孙拼音,并启用云拼音支持

孙拼音现在支持双拼了,这是我没有想到的,以前放弃它的一个重要原因就是它在fcitx下不能支持双拼,没想到几年后,发现双拼已经能被支持了,云拼音的设置在系统设置->输入法->附加组件设置->模块->云拼音里面,有两个云拼音来源可选,一个是google,一个是百度,如果google因为上网不够可选而不可用,换成另一个就可以了。

另外,在kde面板上,可以添加一个kimpanel,以实现输入法和桌面风格的统一,不过kimpanel一直不能自定义候选字颜色算是一个小小的怨念吧。

这样设置后,在tty下启动输入法就不会再乱码了。

 

2-3.vim的配色

if &term =="fbterm"

 

set t_Co=256

colo desertEx

endif

desertEx在tty下算是一个基本能看清字的色彩方案吧。

 

最后,还是传统的一个小技巧,让登录个人账户的时候自动启用fbterm

3-1.登录配置

[[ $(tty) == \/dev\/tty[0-9]* ]] && fbterm && echo && exit

这样,当且仅当登录的是tty时,会自动启动fbterm,且输入exit的时候会直接退出登录,而不需要打两次exit。

 

然后,一切都满意了,继续干活儿。

awesome-widgets:一个kde5桌面环境的系统监控程序

个人配置笔记,如有转载,请注明作者和出处。

——by realasking

先来一个效果:

选区_058

很久很久以前,曾经用过很长一段时间的conky,那是一个类似于服务一样的启动后驻留的可以提供系统状态监控的小工具。它可以将系统配置、应用、运行进程以自动而直观的形式显示在桌面上,而且支持扩展,可以通过lua或shell脚本,连接系统中的各种程序、调用cairo图形库等,将用户想显示在桌面上的东西一目了然的显示出来。曾几何时,Linux平台上的日历功能非常弱小,我就自己写过一套脚本来进行日程安排,同时,修改过一个网上的农历程序以便自己使用,并且我曾结合conky,以实现桌面上的自动显示和到时提醒,另外,conky还曾被我结合mutt等软件当做邮件提醒工具使用,自己也完善过一个天气预报的脚本——当时感觉,conky既方便,又强大。唯一的怨念是它内存的泄露问题:无论怎么修改脚本,只要使用了lua,就一定会泄露,而且图形功能用得越多越严重——持续很久,这一问题未能解决,国内免费天气预报的API一度一茬儿一茬儿的关,自己被弄得不胜其烦,而同时的智能手机发展却非常迅速,几年时间里,日历、天气、邮件功能都成熟得很了——最终,我放弃了conky。

虽然心中还怀念着方便的系统监控,以及电脑右边的widgets的调调儿,也曾一度想重新配置conky,却发现其语法已经发生改变,而且当时没有能成功完成支持lua和cairo的conky版本的编译,于是只好暂歇了心思。

又过了一段时间。前几天,却偶然间发现了一个只用于kde5平台的监控工具,叫做awesome-widgets,试用一下,发现其简洁明了,支持脚本扩展和函数操作,又有图形前端的支持,上手方便,就很快做了配置,使用了起来。在使用中,发现其手册写得过于简易,有些应注意的地方并未提及,未免今后遗忘,就想做个记录。

1.该程序的部件窗口点击应用按钮只是保存设置,并不会刷新widgets,需要点击确定才可以

2.该程序自带的天气,如果选择使用图形,则$weatherN是不能在函数中return回来的,只有不勾选使用图形时方可

3.对于需要二次登录的环境,不能使用$netdev是否为lo来判断网络是否连接,必须自行构造脚本来判断

4.通过return来定义变量值颜色的时候,<span>变量</span>中,变量的周围最好不要有空格,否则可能输出不了变量

5.要让监控像conky常见的那样换行显示,需要在高级设置中勾选自动换行,同时不勾选启用自动换行

6.如果自定义脚本的输出要用于显示,则需要输出为<span ...>值</span>这样的形式,如果要用于判断,或者用在函数里,则输出的直接是值

例如,假设是用bash脚本输出本地城市,若要直接显示,则可以输出为:

echo "<span style=\"color:#479e34;\">$cityname</span>"

若要输出出来再在函数中处理,则脚本的输出是:

echo "$cityname"

下面是自己做的几个扩展脚本:

1.获取linux发行版名称,及当前用户信息:

#!/bin/bash
#obtain Linux distribution name and user information
#by realasking
AA=`lsb_release -a|grep Description|cut -d":" -f2|xargs`
me=`whoami`
hn=`hostname`
echo "<span style=\"color:#6b97ff;\">$AA</span><span style=\"color:#479e34;font-size:9pt;\"><i> $me@$hn </i></span>"

2.获取城市名称:

#!/bin/bash
#obtain cityname
#by realasking

site1="myip.opendns.com"
site2="@resolver1.opendns.com"
externalip=`dig +short $site1 $site2`
cityname=`geoiplookup $externalip|awk '{if(NR==1) print $5;else if(NR==2) print $8;}'|xargs|sed 's/,//g'|awk '{print $2,$1}'`

#echo "<span style=\"color:#479e34;\">$cityname</span>"
echo "$cityname"

3.结合colunar输出,显示中国农历

#!/bin/bash
#display chinese traditional calendar
#by realasking

gz=`colunar |grep "干支"|cut -d" " -f2`
gz2=`colunar |grep 干支|cut -d" " -f3`
gz3=`colunar |grep 干支|cut -d" " -f4`
gz4=`colunar |grep 干支|cut -d" " -f5`
yl1=`colunar |grep 阴历|cut -d" " -f4`
yl2=`colunar |grep 阴历|cut -d" " -f5`
echo "<span style=\"color:#ff0000;font-size:12pt;\">$gz</span><span style=\"color:#479e34;font-size:12pt;\"> $gz2 </span><span style=\"color:#ff9125;font-size:12pt;\"> $gz3 </span><span style=\"color:#0000ff;font-size:12pt;\"> $gz4 </span>"
echo "<b><span style=\"color:#b8860b;font-size:12pt;\"> $yl1</span><span style=\"color:#b8860b;font-size:12pt;\">$yl2 </span></b>"

4.获取Intel cpu信息(需要intel parallel suite)

#!/bin/bash
#cpu info
#by realasking

intel_home="/opt/intel/composer_xe_2013_sp1.0.080/mpirt/bin/intel64"
AA=`$intel_home/cpuinfo -g|grep "Processor name"|awk '{for(i=4;i<=NF;i++){printf $i" "}}'`
echo "<span style=\"color:#d0922f;\">${AA} </span>"

5.检查网络是否连通,二次登录网络可以使用

#!/bin/bash
#net stat
#by realasking

site1=`dig +short www.baidu.com|grep -v "[A-Za-z]"|head -n 1`

if [ "$site1"x = x ];then
stat=0
else
stat=1
fi
echo "$stat"

配置文件中的功能实现方法:

1.显示cpu频率,根据频率变化色彩不同:

CPU频率:${{

function colorCpufq()

{

if ($cpucl > 2500)

return "<span style=\"color:#ff0000;\">$cpucl</span>"

else

if($cpucl>2400)

return "<span style=\"color:#ffaa00;\">$cpucl</span>"

else

if($cpucl>1600)

return "<span style=\"color:#6b97ff;\">$cpucl</span>"

else

return "<span style=\"color:#479e34;\">$cpucl</span>"

}

colorCpufq()

}} MHz

2.显示连接的网络和网速:

网络连接:${{

function colornet()

{

return "<span style=\"color:#6b97ff;\"> $netdev</span><span style=\"color:#d0922f;\"> $down</span>/<span style=\"color:#479e34;\">$up</span>"

}

colornet()

}} KB/s

3.如果网络连接处于连通状态,则输出城市和天气信息:

${{

function nettest()

{

if($custom7==1)

return "<span>城市:</span><span style=\"color:#479e34;\">$custom6</span>"

else

return ""

}

nettest()

}}

${{

function nettest2()

{

if($custom7==1)

return "<span>天气:</span>$weather1<span>气温:</span>$temperature1<span>°C</span>"

else

return ""

}

nettest2()

}}

 

KDE5下搜狗拼音输入法输入框乱码及黑边的解决办法

个人摸索得到的方法,如有转载,请注明作者和出处。

——by realasking

我使用的是基于ArchLinux的Antergos系统,此前一直用fcitx的双拼输入法,在KDE桌面下,使用的是kimpanel前端,一切都很好,今天突然想换一下搜狗拼音输入法,却没想到遇到了一些问题。

在我从源里安装好fcitx-sogoupinyin后,首先遇到的问题是每次输入都会出现双输入框,一个是kimpanel的,没有候选字输出,一个是搜狗拼音的,候选框中全部都是乱码,经过尝试,发现只要停用kimpanel就好。

但又遇到另外一个问题,就是sogoupinyin启动后,切换输入法时会出现一个黑块儿,而输入时输入框四周都会出现黑框,这显然是渲染引擎的问题,在网上搜索了一下,却没有针对KDE5环境的方案,于是尝试自己解决:

1.尝试用kwin_x11替代kwin_wayland——没有效果;

2.检查compositing状态:

qdbus org.kde.KWin /KWin supportInformation|grep Compositing

发现其中有如下内容:

Compositing is not active

3.检查direct rendering:

glxinfo |grep direct
显示:

direct rendering: Yes
    GL_EXT_depth_bounds_test, GL_EXT_direct_state_access,
    GL_EXT_depth_bounds_test, GL_EXT_direct_state_access,

glxinfo |grep "version string"

显示:
server glx version string: 1.4
client glx version string: 1.4
OpenGL core profile version string: 3.3.0 NVIDIA 340.102
OpenGL core profile shading language version string: 3.30 NVIDIA via Cg compiler
OpenGL version string: 3.3.0 NVIDIA 340.102
OpenGL shading language version string: 3.30 NVIDIA via Cg compiler
OpenGL ES profile version string: OpenGL ES 2.0 NVIDIA 340.102 340.102
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.00

显然驱动没有问题

4.检查混成器设置:

系统设置->显示和监控->混成器

发现混成器后端默认的是OpenGL 2.0,猜想是否这个设置太低,于是将其改为了OpenGL 3.1。注销桌面重新登录后,发现输入框已经正常了,而且执行:

qdbus org.kde.KWin /KWin supportInformation|grep Compositing

显示内容也变成了:

useCompositing: true
windowsBlockCompositing: true
Compositing
Compositing is active
Compositing Type: OpenGL


至此,KDE5下搜狗拼音终于能正常工作了。

某种科学上网方法和archlinux的包签名验证机制冲突

个人笔记,如有转载,请注明作者和出处。

——by realasking

昨天为了上Google找个软件,安装了xx-net,以期实现科学上网,但是没有想到,运行它之后,用yaourt更新系统,提示gpgme error:no data,反复排查无果,后偶然发现关闭xx-net后即恢复正常。在网上尚未找到解决办法,仅作记录。

最新文章

最近回复

  • realasking: 哪里的话,还要非常感...
  • cnfczn: 发送留言报错:in_...
  • cnfczn: 大狮兄666,以前经...
  • realasking: 最近还行啊,就是上网...
  • cnfczn: 大狮兄,好久不见啊....
  • realasking: 您好。有什么问题就在...
  • Eric Chen: 作者你好!最近折腾中...

分类

归档

其它