分类 Linux 下的文章

在Android下使用同文输入法

 前天的时候,因为一些事情让我在我的华为手机上重新开始使用同文输入法,不知道是因为什么原因输入法词库似乎出现了问题,打字出现很多不应出现的繁体字,卸载重装问题依旧。看群友说最近同文版本更新后挺稳定的,索性删干净本地配置文件,重新去github下载了最新版本安装包,然后手动下载了rimerc最新的配置文件进行配置。发现UI更改了,看上去比以前成熟了许多,输入也很舒服。

在linux mint下使用中州韵RIME输入法

 中州韵和同文输入法都是开源的中州韵输入法引擎(RIME)衍生的产物。之前一直没敢在linux下使用中州韵,但是同文在移动端的体验让我对RIME的其他平台的实现充满了信心。参照https://rime.im/download/ 的说明,我选择了fcitx-rime,因为我已经在PC上安装过基于fcitx实现的百度拼音输入法了。
安装参考fcitx-rime的github说明,linux mint是基于ubuntu的,我可以直接使用打包好的安装包。
当然,因为我很久没更新软件包了,故在此之前先通过包管理器更新了除了wine的全部软件包。随后重启PC开始安装中州韵。

sudo apt-get install fcitx-rime

等待命令执行完成后可以在右下角进入fcitx配置自己的输入法方案了,我目前在使用明月拼音,不过地球拼音也很棒啦!后者会有拼音提示的哦!

设置默认输入法方案

中州韵在linux下安装后默认方案是明月拼音(繁体),对于我一个中国大陆地区的用户来说肯定得修改成明月拼音简化字的。
用户文件目录是~/.config/fcitx/rime/,如果你用ibus路径应该也类似,很容易找到。
相关路径参照RimeWithSchemata#rime-中的數據文件分佈及作用
配置文件编写参考了rime中州韵输入法安装及配置【输入法】Rime-中州韵 基本设置 附:官方定制指南

以下操作可以参照注释手动在文件管理器里完成,不必强迫自己用命令进行。
cd /home/xfox/.config/fcitx/rime        #进入RIME的用户目录
touch default.custom.yaml               #创建自定义全局配置文件
nano default.custom.yaml                #编辑文件(随便你用什么编辑器)
不要创建default.yaml,这个文件是RIME在启动后自动动态拼接多个配置文件产生的总配置文件,直接创建并修改这一文件会在软件更新,重新部署等时刻丢失你的配置信息!
在你的自定义输入法配置文件中加入如下内容:
# default.custom.yaml
# 用户  输入法配置
patch:  
  schema_list:  # 输入方案列表
    - schema: luna_pinyin_simp  # 不使用其它输入方案, 只保留明月拼音-简化字输入方案
  menu:
    page_size: 5  # 候选词为5个

接下来重启fcitx后者点击重新部署。

这里发现一个很坑的地方,luna_pinyin_simp是指的朙月拼音-简化字,而你使用朙月拼音简化字对应生成的文件还是在luna_pinyin.userdb这个朙月拼音的文件夹里。所以,如果你想实现开机默认使用朙月拼音简化字方案,我上面引用的两个教程里,jrri这个人写了’输入法自定义方案设置为朙月拼音和自定义朙月拼音方案使用简体字‘两个自定义配置文件,就是完全错误的行为。如果你完全按照他的配置文件照抄出两个自定义配置文件然后重新启动fcitx后会出现报错,并且输入法配置错误无法正常输出汉字,只能输出英语。总而言之,你只需要设定默认输入法方案是朙月拼音-简化字就可以了,根本不需要去写朙月拼音的方案自定义内容(替你踩过坑了,不用谢我=-=)

在windows10下使用小狼毫(Weasel)输入法

 小狼毫是RIME在windows下的实现,https://rime.im/download/ 看开发日志已经很成熟了,等我下次使用windows10的时候顺便用它替换百度拼音。

 向自由软件开发者致敬!谢谢!

本篇博文全部在thinkpad上使用中州韵完成,输入体验极佳!

意外的惊喜:

我发现卸载百度拼音输入法后,linux下的原生微信2.1.1聊天框是可以正常使用中州韵输入文字的,而且正常显示。也就是说,微信输入框不显示文字的问题大概率是百度输入法的锅,万恶百度,万恶腾讯。

前段时间在我家云搭建了cloudreve,因为systemctl有问题,换用了screen,但是开机自启动一直没解决好。

脚本实现screen开机自启动并运行指定程序

参考了Zbuter前辈的开机启动screen并在后台运行其他程序
新建一个脚本文件,内容如下。

screen_name="cloudreve"                # 要建立的screen名字
screen -dmS $screen_name
cmd="/home/SATA-Data/cloudreve/cloudreve"    # 要执行的命令,要指明路径,不指明时默认是在 / 目录下
screen -x -S $screen_name -p 0 -X stuff "$cmd"    # 输入命令
screen -x -S $screen_name -p 0 -X stuff $'\n'   # 回车执行

然后把执行上述脚本的命令加入rc.local就行了,没执行权限记得chmod +x

摘自:知乎:dealiaxy(很巧,这位前辈跟我一样用的linux mint)

我经常遇到Linux下时间正常,但是Windows下时间错误(相差八小时)的问题,两个系统时间设定本来都好好的。

原因

windows默认使用硬件时钟,而linux使用网络时间

解决方案

linux下执行

timedatectl set-local-rtc 1

还可以执行后进行验证:

timedatectl

https://www.bilibili.com/video/BV1p3411i7FV?share_source=copy_web
实际上,几年前我就听deepin论坛的大佬说UOS上有原生微信,但是有系统判断,不是UOS不能正常使用。随后听说有大佬已经修改好了deb包,去掉了系统校验。但是随后没了消息,我也找不到深度论坛的原帖子了。前几天UOS官方号突然发视频表示UOS和腾讯合作已上架原生微信。很快,我在吾爱破解找到了坛友发来的帖子,里面附有提取出来的deb安装包

- 阅读剩余部分 -

Shell脚本实现方案

方案1:缺点无法自动选择有效时间长的ipv6长地址,但是仅需一个Shell文件即可完成。
#!/usr/bin/bash    
dnspod_ddnsipv6_id="#####" #【API_id】将引号内容修改为获取的API的ID
dnspod_ddnsipv6_token="####" #【API_token】将引号内容修改为获取的API的token
dnspod_ddnsipv6_ttl="600" # 【ttl时间】解析记录在 DNS 服务器缓存的生存时间,默认600(s/秒)
dnspod_ddnsipv6_domain='######' #【已注册域名】引号里改成自己注册的域名
dnspod_ddnsipv6_subdomain='#####' #【二级域名】将引号内容修改为自己想要的名字,需要符合域名规范,附常用的规范
local_net="eth0" # 【网络适配器】 默认为eth0,如果你的公网ipv6地址不在eth0上,需要修改为对应的网络适配器
# 常用的规范【二级域名】
# 【www】 常见主机记录,将域名解析为 www.test.com
# 【@】   直接解析主域名 test.com
# 【*】   泛解析,匹配其他所有域名 *.test.com
#  改进了非fe80开头内网地址被误解析的错误。ps:仅支持中国电信,中国联通,中国移动使用,若国外ipv6无法解析请自行修改脚本。
# 举例
# 在腾讯云注册域名,登陆DNSPOD,在【我的账号】的【账号中心】中,有【密钥管理】
# 点击创建密钥即可创建一个API
# 如果你在腾讯云注册域名叫【test.com】
# 那么【dnspod_ddnsipv6_domain】后面就填【test.com】
# 然后根据常用的规范/自己想要的名字在【dnspod_ddnsipv6_subdomain】填入自己需要的名字
# 现假设为【file】,那么你的访问地址为【file.test.com】
if [ "$dnspod_ddnsipv6_record" = "@" ]
then
  dnspod_ddnsipv6_name=$dnspod_ddnsipv6_domain
else
  dnspod_ddnsipv6_name=$dnspod_ddnsipv6_subdomain.$dnspod_ddnsipv6_domain
fi

die () {
    echo "Error: unable to find [public IPv6 address], please use the 'ip addr' command or query the network panel of the system to check the network card, and fill in the name of the network card with the IPv6 address in the 'local_net' position in the command file." >&2
    echo "IP地址提取错误: 在指定的网络适配器上[$local_net]找不到<公网IPv6地址>(不是fe80开头),请使用'ip addr'命令或在系统的网络面板查询有公网IP的网络适配器,然后在脚本的[local_net]中用填写网络适配器的名称。" >&2
    exit
}

ipv6_list=`ip addr show $local_net | grep inet6 | sed 's/\/.*//g' | awk '{print $2}'  | grep 24 |  awk 'NR==1{print}'` || die

for ipv6 in ${ipv6_list[@]}
do
    if [[ "$ipv6" =~ ^fe80.* ]]
    then
        continue
    else
        echo select IP: $ipv6 >&1
        break
    fi
done

if [ "$ipv6" == "" ] || [[ "$ipv6" =~ ^fe80.* ]]
then
    die
fi

dns_server_info=`nslookup -query=AAAA $dnspod_ddnsipv6_name 2>&1`

dns_server_ipv6=`echo "$dns_server_info" | grep 'address ' | awk '{print $NF}'`
if [ "$dns_server_ipv6" = "" ]
then
    dns_server_ipv6=`echo "$dns_server_info" | grep 'Address: ' | awk '{print $NF}'`
fi
    
if [ "$?" -eq "0" ]
then
    echo "DNS server IP: $dns_server_ipv6" >&1

    if [ "$ipv6" = "$dns_server_ipv6" ]
    then
        echo "The address is the same as the DNS server." >&1
    fi
    unset dnspod_ddnsipv6_record_id
else
    dnspod_ddnsipv6_record_id="1"   
fi

send_request() {
    local type="$1"
    local data="login_token=$dnspod_ddnsipv6_id,$dnspod_ddnsipv6_token&domain=$dnspod_ddnsipv6_domain&sub_domain=$dnspod_ddnsipv6_subdomain$2"
    return_info=`curl -X POST "https://dnsapi.cn/$type" -d "$data" 2> /dev/null`
}

query_recordid() {
    send_request "Record.List" ""
}

update_record() {
    send_request "Record.Modify" "&record_type=AAAA&record_line=默认&ttl=$dnspod_ddnsipv6_ttl&value=$ipv6&record_id=$dnspod_ddnsipv6_record_id"
}

add_record() {
    send_request "Record.Create" "&record_type=AAAA&record_line=默认&ttl=$dnspod_ddnsipv6_ttl&value=$ipv6"
}

if [ "$dnspod_ddnsipv6_record_id" = "" ]
then
    echo "seem exists, try update." >&1
    query_recordid
    code=`echo $return_info  | awk -F \"code\":\" '{print $2}' | awk -F \",\"message\" '{print $1}'`
    echo "return code $code" >&1
    if [ "$code" = "1" ]
    then
        dnspod_ddnsipv6_record_id=`echo $return_info | awk -F \"records\":.{\"id\":\" '{print $2}' | awk -F \",\"ttl\" '{print $1}'`
        update_record
        echo "update sucessful" >&1
    else
        echo "error code return, domain not exists, try add." >&1
        add_record
        echo "add sucessful." >&1
    fi
else
    echo "domain not exists, try add."
    add_record
    echo "add sucessful" >&1

fi

Shell方案2

来自:https://github.com/rehiy/dnspod-shell 非单文件,但是也可以稍加修改后单文件运行,并且支持识别长效地址。