Artix Linux Note

dwm中启用中文输入法,修改.xinitrc文件

export GTK_IM_MODULE=fcitx
export GTK2_IM_MODULE=fcitx
export GTK3_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export XIM_PROGRAM=fcitx
export XIM=fcitx
export QT_IM_MODULE=fcitx
fcitx -d
exec dwm

dwm,dmenu

alt+p 打开dmenu
alt+shift+c关闭当前窗体
alt+shift+enter 打开一个终端窗体
alt+shift+q 退出dwn
alt+T 平铺窗体
alt+M 独立窗体
alt+[n] 切换虚拟工作区
alt+shift+[n]将当前主窗体移动到工作区n(不切换虚拟窗口)
alt+i/d 切换主窗体和子窗体之间的布局(垂直/水平)
alt+shift+space 变换窗体大小
alt+mouse1 悬浮窗体拖拽
alt+l 增加主窗体大小
alt+h 减少主窗体大小
alt+j 切换到下一个窗口
alt+k 切换到上一个窗口

surf

^g 打开网站
^h 返回
^l 前进  

tmux

^b + [%,"] 分割窗体
^b + x 关闭子窗体
^b + d detach窗体
^b + z 最大化当前窗体/还原
tmux ls 显示会话列表
tmux a -t [n] attach窗体
^b + $ 重命名
tmux kill-session -t [n]
tmux kill-session [session-name]  

取消扬声器静音,可加入/etc/rc.local中,这样启动后扬声器默认就不会静音了

amixer -c 0 sset 'Master',0 60%,100% unmute

禁用自动休眠

xset s off -dpms

解锁sudo账户多次密码失败后被锁定

faillock --user $(`whomai`) --reset

pacman常用命令

pacman -Sy [package_name] 直接安装包
pacman -S 安装包,需确认
pacman -Syu 升级(谨慎使用,由于不支持版本回滚,可能导致更新后个别软件无法使用)
pacman -Ss 查询包
pacman -Q 显示所有已安装的软件 -Qq 不显示版本号
pacman -Qs 在已安装的包中查询
pacman -Qe 查询自己安装的包 -Qeq 不显示版本号
pacman -Qdt 查询所有孤儿软件,不再被需要(不一定,根据实际情况自行决定) -Qdtq 不显示版本号
sudo pacman -Rscn $(pacman -Qdtq) 删除所有孤立的包
pacman -R 删除包的同时,保留依赖关系
pacman -Rns <pkg> 删除软件,包括<pkg>所有的依赖和<pkg>的全局配置文件
pacman -U _/path/test.tar.xz_ 从本地安装
pacman -U http://example.com/test.tar.xz 从远程安装第三方包

md5sum使用方法

md5sum -c [file_containing-hashes] 直接比对当前目录中文件和文件hash
md5sum -t [text-file] 显示文本文件hash
md5sum -b [binary-file] 显示二进制文件hash
md5sum [filename] > [file-containing-hashes 生成hash文件

linux usb live create

dd bs=4M if=path/test.iso of=/dev/sdx conv=fsync oflag=direct status=progress

修改sudo权限

sudoedit /etc/sudoers
%sudo ALL=(ALL:ALL) ALL

彻底禁用ipv6

sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet ipv6.disable=1"
update-grub

安装dnscrypt-proxy

sudo pacman -Sy dnscrypt-proxy
sudo pacnan -Sy dnscrypt-proxy-runit
sudo ln -s /etc/runit/sv/dnscrypt-proxy /run/runit/service/
sudo sv start dnscrypt-proxy

pass with gnupg

gpg --full-generate-key
gpg --list-key
pass init [gpg-id] #初始化pass
pass insert [account] #添加账户
pass edit [account] #直接编辑密码文件
pass -c [account] #拷贝密码到剪贴板

移除所有元数据

exiftool -r -overwrite_original -P -all= *.jpg *.jpeg *.JPG

修改图片大小

convert test.jpg -resize 600 result.jpg

设置静态ip地址,你可以写成脚本,并加入/etc/rc.local中,或直接添加进去也可以,rc.local中的脚本默认都是root权限

ip link set eth0 up
ip addr add 192.168.50.129/24 broadcast 192.168.50.255 dev eth0
ip route add default via 192.168.50.1

删除接口配置信息

sudo ip address flush eth0

git clone出现failed to connect localhost proxy错误,重置代理即可

git config --list 显示当前git代理配置
git config --global --unset http.proxy
git config --global --unset https.proxy
git config --global --unset socks.proxy

mupdf常用快捷键

space 下一页
b 上一页
123g 前往123页
g,G 前往第一页/最后一页
m 将当前也存入快照
t 从快照列表中pop
[0-9]m 数字寄存器
[0-9]t

+,- 放大缩小页面
W,H 适应最大宽度或高度
Z 最大宽或高窗体
z 重置缩放
w 裁减窗体来适应页面
f 全屏
/,? 向后或向前搜索文本
n,N 向后或向前匹配下一个的结果
<,> 修改字体大小
c 彩页和灰度渲染切换
C 全部彩页
I 反色/普通切换

pip常用命令

pip list #显示所有python安装的包
pip list -o #查看可升级的包
pip freeze #显示使用pip安装的包
pip uninstall [pkg-name] #移除包
pip install [pkg-name] #安装包
pip install --upgrade [pkg-name] #升级包
pip show [pkg-name] #显示安装包信息
pip3 install --upgrade pip #升级pip3(python3)
pip install --upgrade pip #升级pip(python2)
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple #将镜像站写入配置文件
pip install [pkg-name]==[version-number] #指定版本安装

dnssec hardened

#sudo vi /etc/dnscrypt-proxy/dnscrypt-proxy.toml
doh_servers = false
require_dnssec = true
force_tcp = true
timeout = 1000
blocked_query_response = 'refused'
dnscrypt_ephemeral_keys = true
block_ipv6 = true
skip_incompatible = true
direct_cert_fallback = false

dnscrypt-proxy 无返回值修复

禁用windows dns client服务
对dnscrypt-proxy的.md服务器列表文件链接修改为github的加速镜像地址

设置系统时间(不建议与Internet时间同步),将系统时间同步到BIOS

sudo date -s '2022-01-01 13:40:00'
sudo hwclock --systohc

搜索引擎查找技巧

intitle:*.invidious* inurl:*/feed/trending

无线键盘信号差导致的断续问题解决

找到无线键盘电路板的天线位置,用刀片刮开天线上方的绿油,然后接一小段导线,并将导线裸露在键盘外壳的外面

修复显示器分辨率永久化

--filename:screenset.sh--
#!/bin/bash
sleep 1
xrandr -s 1920x1080_60
#打开.xinitrc文件,在"exec dwm"之前加一行下面的内容
~/path/screenset.sh &

控制台登录后自动打开窗口系统,打开用户主目录下的隐藏文件.bash_profile,在后面加入下面内容

if [ -z "$DISPLAY" ] && [ -n "$XDG_VTNR" ] && [ "$XDG_VTNR" -eq 1 ]; then
  exec startx
fi

无线网卡自动连接设置

wpa_passphrase [your ssid] [password]
  ##生成下面的字符串
  network={
        ssid="test_ssid"
        #psk="12345678"
        psk=84432da3f4cb39258f16093b24a5e4f4cb841bbe81b221b93e710e9ff2a63ae9
    }

   ##追加到下面的文件中

    /etc/wpa_supplicant/wpa_supplicant.conf
    ctrl_interface=/run/wpa_supplicant
    update_config=1
    network={
        ssid="test_ssid"
        #psk="12345678"
        psk=84432da3f4cb39258f16093b24a5e4f4cb841bbe81b221b93e710e9ff2a63ae9
    }

无线网卡ip地址和mac地址随机化静态分配,mac地址部分使用shell来生成。之后再调用macchanger的-m参数

#!/bin/sh
function usage()
{
    echo "need root priority"
    echo "usage:"
    echo "      maybe multi times to success!"
    echo "      wlan0 192.168.1[net address]"
    exit -1
}
[ `id -u` != 0 ] && usage
NET_ADDR=""
HOSTNUM=$(($RANDOM%254+2))
MAC_ADDR=`echo $RANDOM|md5sum|sed 's/../&:/g'|cut -c 1-17`

function rnd_ip_mac()
{
    killall wpa_supplicant
    ip link set wlan0 down
    macchanger -m ${MAC_ADDR} wlan0
    ip addr flush dev wlan0
    wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
    ip addr add ${NET_ADDR}.${HOSTNUM}/24 broadcast ${NET_ADDR}.255 dev wlan0
    ip link set wlan0 up
    ip route add default via ${NET_ADDR}.1
}


if [ $# == 1 ]; then
    NET_ADDR=`echo $1|grep -x -E "([0-9]{1,3}\.){2}[0-9]{1,3}"`
    if [ "${NET_ADDR}" == "" ];then
        usage
    fi
    rnd_ip_mac
else
    usage
fi

简单的网络警犬(a simple watch dog)

#!/bin/sh
while :;
do
    clear
    echo "Network Monitor is Running..."
    DATA=$(ss -tap|grep EST|grep -E "\"sh\",|\"bash\",|\"perl\",|\"openssl\",|\"nc\",|\"netcat\",|\"ssh\",|\"socat\",|\"awk\",|\"ncat\","
    TS=$(date '+%Y-%m-%d %H:%M:%S')
    if [ "${DATA}" != "" ];then
        echo "Intrusion discovered!"
        echo  "${DATA}${TS}" >> network_monitor.log
        echo ${DATA}|awk -F= '{print $2}'|awk -F, '{print $1}'|xargs -I % sh -c 'kill -9 % 2>/dev/null'
        speaker-test -t sine -f 1000 -l 1 >/dev/null
    fi
    sleep 3
done

dns解析脚本

#!/bin/sh
TEMPFILE=/tmp/iplist
> ${TEMPFILE}
xclip -o 2>/dev/null|grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}" > ${TEMPFILE}
xclip -i < /dev/null
function usage()
{
        echo "usage:"
        echo "    getdns (read from clipboard or yourself isp address)"
        echo "    getdns <domain_name|ip address>"
        exit -1
}
if [ $# == 0 ];then
    CNT=$(cat ${TEMPFILE}|wc -l)
    if [ ${CNT} != 0 ];then
        cat ${TEMPFILE}|sort|uniq|xargs -I % sh -c 'curl -s http://ipinfo.io/%' > /tmp/getdns.log
        less /tmp/getdns.log
        exit -1
    else
        curl -s http://ipinfo.io/json
        exit -1
    fi
fi

if [ $# == 1 ]; then
    IP=$(echo ${1}|grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" )
    if [ -n " ${IP}"  ]; then
        curl -s http://ipinfo.io/${IP}
        exit -1
    elif [ ${1} == '-h' ]; then
        usage
    else
        dig ${1}|grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" |grep -v 127.0.0.1|awk '{print $5}'|xargs -I % sh -c 'curl -s http://ipinfo.io/%'
        exit -1
    fi
fi

一句话听歌

#!/bin/sh
while :; do clear;echo "q:next,^c:exit";curl -s https://free.wqwlkj.cn/wqwlapi/wyy_random.php|grep "\"url\":"|awk -F\" '{print $4}'|xargs -I % sh -c 'mpv --really-quiet %';sleep 1;done
#!/bin/sh
while :; do clear;echo "q:next,^c:exit";curl -s "https://api.uomg.com/api/rand.music?sort=热歌榜&format=json"|awk -F\" '{print $12}'|xargs -I % sh -c 'mpv --really-quiet %';sleep 1;done
#!/bin/sh
while :; do clear;echo "q:next,^c:exit";mpv --really-quiet https://api.vvhan.com/api/wyMusic/热歌榜;sleep 1;done

一句话看美女

#!/bin/sh
while :; do clear;echo "q:next,^c:exit";curl -s -I https://www.cunshao.com/666666/api/web.php?t=${RANDOM}|grep '^location'|awk -F. '{print "https://www.cunshao.com/666666/api"$2".mp4"}'|xargs -I % sh -c 'mpv --really-quiet %';done

有线网卡ip地址和mac地址随机化静态分配

MAC_ADDR=`echo $RANDOM|md5sum|sed 's/../&:/g'|cut -c 1-17`
NET_ADDR="192.168.30"
HOSTNUM=$(($RANDOM%254+2))
ip link set eth0 down
macchanger  -m${MAC_ADDR} eth0
ip addr flush dev eth0
ip addr add ${NET_ADDR}.${HOSTNUM}/24 broadcast ${NET_ADDR}.255 dev eth0
ip link set eth0 up
ip route add default via ${NET_ADDR}.1

天干地支的计算

 4    5    6   7    8    9    0    1   2    3  
'甲','乙','丙','丁','戊','己','庚','辛','壬','癸'
#根据年尾数找天干,比如1991年,尾数为1,所以天干为辛
 1    2    3    4   5    6    7   8    9   10   11   12
'寅','卯','辰','巳','午','未','申','酉','戌','亥','子','丑'
#地支的计算公式 (年份+7)%12,如果余数为0,则地支为丑,否则就是余数对应的位置
#比如1991年的地支  (1991+7)%12=6,所以是未

屏幕亮度调节

sudo echo 2 > /sys/class/backlight/acpi_video0/brightness

批量字符串修改

for i in `ls -1d ~/bin/pycode/cdt_html/*.html`
do
    sed -i 's/.\/cdt_html\//..\/cdt_html\//g' ${i}
    echo "${i}字符串修改完成!"
done

屏幕截图,图片查看,文件管理

scrot
pqiv
thunar
ranger

在终端中显示ASCII艺术文字

echo ascci_file.txt|gzip|base64
base64 -d <<<"base64_string"|gunzip

vpngate bash script

#!/usr/bin/env bash
WORK_DIR=$(dirname $0)
VPN_TEMP=${WORK_DIR}/vpngate_temp
OVPN_TEMP=${WORK_DIR}/wosvpn.ovpn
clear
echo -e "\033[96;40m"
base64 -d <<< "H4sIAAAAAAAAA0WNuw3AQAxC+0jZgTaVt0lliUU8fACfFPt+fiAOJE7RtVemH5r6fV9odarURJcdg8MNTUfTYOSPUB1FBO00W8NRYnzggOMXfqEVxZurhztDH1pTxvoVWVpIdNnvYTmSsWdTfvcHKXdBoPMAAAA="|gunzip
echo -e "\033[0m"

if [ ! -f /usr/local/sbin/fping ];then
    echo "please install fping first"
    exit -1
fi

function updatevpn()
{
echo -e "\033[96;40m"
echo "update database..."
curl -s -x http://127.0.0.1:7890 http://www.vpngate.net/api/iphone/ > /tmp/vpngate_temp
cat /tmp/vpngate_temp |grep -v "#"|awk -F, '{print $2}'|xargs -I % sh -c 'fping -c1 -t500 %'|grep bytes|awk '{print $1,$6}'|sort -k2 -g|uniq|awk '{print $1}'|xargs -I % sh -c 'cat /tmp/vpngate_temp|grep %'|sort|uniq > ${VPN_TEMP}
echo "update complete!"
echo -e "\033[0m"
}

if [ $# == 1 ]; then
    if [ ${1} == '-u' ]; then
        updatevpn
    fi
fi

while IFS= read -r line
do
echo "${line}"|awk -F, '{print $15}'|base64 --decode 2>/dev/null > ${OVPN_TEMP}
sudo openvpn --persist-key --connect-timeout 4 --connect-retry-max 2 --config ${OVPN_TEMP}
sleep 1
done < ${VPN_TEMP}

chromium startup arguments optimization

sh -c 'chromium  --disable-hang-monitor --disable-prompt-on-repost --disable-background-networking --disable-sync --disable-translate --disable-web-resources --disable-client-side-phishing-detection --disable-component-update --disable-default-apps --disable-zero-browsers-open-for-tests --test-third-party-cookie-phaseout --js-flags=--noexpose_wasm --disable-webgl --disable-http2 --proxy-server="socks5://127.0.0.1:7891" 2>/dev/null &'

chromium privacy Addon recommend

BP Privacy Block All Font and Glyph Detection (some js video play maybe corrupt)
Canvas Blocker - Fingerprint Protect
Chromium Web Store
Decentraleyes
WebRTC Network Limiter
Tampermonkey

random timezone

export TZ="$(ls -1d /usr/share/zoneinfo/*/*|sed 's/\/usr\/share\/zoneinfo\///g'|shuf -n 1)"

python and node tips

python -c "import urllib.parse;print(urllib.parse.unquote(\""${STRTMP}"\"))"
node -e 'require("'${JSPATH}'").func1("'${SIG}'")'

a script test ProxiTok Instance Available

curl -x http://127.0.0.1:7891 -s https://raw.githubusercontent.com/pablouser1/ProxiTok/master/instances.json|grep clearnet|awk -F\" '{print $4}'|xargs -P8 -I {} sh -c 'curl -x http://127.0.0.1:7891 -s {}tag/comedyvideo|grep stream >/dev/null && echo {}'

使用SSH作为socks5代理

ssh -D 127.0.0.1:7891 -q -T -x -a -k -C -N username@domain.com

-D 1337: open a SOCKS proxy on local port :1337. If that port is taken, try a different port number. If you want to open multiple SOCKS proxies to multiple endpoints, choose a different port for each one.
-C: compress data in the tunnel, save bandwidth
-q: quiet mode, don’t output anything locally
-N: do not execute remote commands, useful for just forwarding ports

chromium startup execute clearBrowserData

put "chrome://settings/clearBrowserData" into startup "Open a specific webpage or set of webpages"