Skip to content
Gnome Shell Extension that helps you to manage shadowsocks proxies.
JavaScript TypeScript Shell
Branch: master
Clone or download
Pull request Compare This branch is 40 commits ahead, 1 commit behind petres:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Gnome Extension Shadowsocks

My first GJS project. This project is only for learning developing Gnome extensions.


  • switch ss server and change proxy mode (direct, PAC, manual) from Gnome tray
  • support getting server profiles from Surge subscription link
  • also supports Vmess (V2ray) via v2socksAUR and v2rayN format subscription link



for Arch users: gnome-shell-extension-shadowsocks-gitAUR is avalible in AUR.

For non-Arch users, follow the easy steps:

cd /tmp
git clone
mv gnome-shell-extension-shadowsocks/ ~/.local/share/gnome-shell/extensions

Then press Alt+F2 and enter r to reload, and enable it in Tweak Tool.


This extension makes use of the following commands, make sure they are accessible in path.

  • sslocal or ss-local: shadowsocks or shadowsocks-libev executable
  • v2socks: to support Vmess protocol
  • xdg-open: to open the configure directory for you
  • curl: to sync subscription


This extension uses a JSON file for configuration, since it is much easier to copy and share than gsettings. This extension reads configs/config.json under the its installation directory. config.example.json in the same folder can be copied as a start point, which contains the descriptions of each settings and itself is valid in format (but the server is not accessible, of course).


Forked from gnome-shell-extension-services-systemd, which is under GPLv3.


  • SSR subscription
  • host local pac file
  • show pings?
  • show status on icon?
  • allow multiple PAC/manuals, set them by ourself
  • listen to config file?
  • show tooltip on items in menu that display basic information of a server?
  • add button for restarting?
You can’t perform that action at this time.