为KDE桌面环境快速设置系统代理
2019-03-29 ArchLinux自己使用代理最主要的目的就是访问 Google,所以使用校园网时一般不需要开代理,电脑连接手机热点时才需要。
而 ArchLinux 的extra/firefox
不会跟随系统代理,开关代理的切换过程就变得十分麻烦。
目的
通过 shell 脚本依次完成:
- 启动 Shadowsocks
- 修改 KDE 系统代理设置
- 修改 Firefox 代理设置
Shadowsocks
官方源里的community/shadowsocks
直接通过systemd
启动即可:
$ sudo systemctl start [email protected]
KDE 系统代理设置
之前用qdbus
执行过一些操作,例如:
- 锁屏:
$ qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.Lock
- 获取剪切版内容:
$ qdbus org.kde.klipper /klipper org.kde.klipper.klipper.getClipboardContents
- 弹出开始菜单:
$ qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.activateLauncherMenu
所以尝试寻找通过qdbus
修改系统设置的方法,未找到,但在Changing system settings from CLI发现了可以利用kwriteconfig
修改配置文件来修改系统设置。
直接在Google上搜索kde proxy settings file
,可以找到很久以前的回答Change proxy from terminal..or where is proxy settings file?,看到其中提到了~/.kde[5]/share/config/kioslaverc
。
现在已经是kde5了,诸多配置文件默认目录都切换到了~/.config
,成功找到~/.config/kioslaverc
,里面存储的正是系统代理设置。
在系统设置中手动切换不同的代理模式,观察文件内容的更改,可以发现[Proxy Settings]
中ProxyType
不同值的含义如下:
- 0 无代理
- 1 使用手动配置的代理服务器
- 2 使用代理自动配置 URL
- 3 自动检测代理配置
- 4 使用系统代理服务器配置
所以想要修改系统代理模式,将ProxyType
换成自己需要的值即可。例如使用代理自动配置 URL:
$ kwriteconfig5 --file $HOME/.config/kioslaverc --group "Proxy Settings" --key "ProxyType" 2
Firefox 代理设置
在ArchWiki: Firefox可以看到火狐的用户配置文件保存在~/.mozilla/firefox/xxxxxxxx.default/
,然后在firefox proxy settings via command line找到代理设置具体保存在prefs.js
中。
打开prefs.js
可以看到提示:
// Mozilla User Preferences
// DO NOT EDIT THIS FILE.
//
// If you make changes to this file while the application is running,
// the changes will be overwritten when the application exits.
//
// To change a preference value, you can either:
// - modify it via the UI (e.g. via about:config in the browser); or
// - set it within a user.js file in your profile.
那么只需要手动创建user.js
文件,里面的设置就会在 Firefox 启动时覆盖prefs.js
中的内容:
- 0 无代理
- 1 手动代理配置
- 2 自动代理配置的 URL
- 4 自动检测此网络的代理设置
- 5 使用系统代理设置(默认)
例如使用自动代理配置的 URL:
$ echo 'user_pref("network.proxy.type", 2);' > $HOME/.mozilla/firefox/*.default/user.js
最终结果
#!/bin/bash
#########################################################################
# File Name: proxy.sh
# Author: nian
# Blog: https://whoisnian.com
# Mail: [email protected]
# Created Time: 2019年03月30日 星期六 01时13分25秒
#########################################################################
SSCONFIGNAME="example"
function usage(){
echo "usage: proxy.sh [command]"
echo " st start proxy"
echo " ed end proxy"
}
function proxy_start(){
echo "Start..."
sudo systemctl start shadowsocks@$SSCONFIGNAME
kwriteconfig5 --file $HOME/.config/kioslaverc --group "Proxy Settings" --key "ProxyType" 2
echo 'user_pref("network.proxy.type", 2);' > $HOME/.mozilla/firefox/*.default/user.js
echo "Done."
}
function proxy_end(){
echo "End..."
sudo systemctl stop shadowsocks@$SSCONFIGNAME
kwriteconfig5 --file $HOME/.config/kioslaverc --group "Proxy Settings" --key "ProxyType" 0
echo 'user_pref("network.proxy.type", 5);' > $HOME/.mozilla/firefox/*.default/user.js
echo "Done."
}
if [ $# -ge 1 ]
then
if [ $1 = "st" ]
then
proxy_start
elif [ $1 = "ed" ]
then
proxy_end
else
usage
fi
else
usage
fi