GithubHelp home page GithubHelp logo

spyophobia / shadowsocks-gtk-rs Goto Github PK

View Code? Open in Web Editor NEW
53.0 2.0 7.0 720 KB

A desktop GUI frontend for shadowsocks-rust client implemented with gtk-rs.

License: GNU General Public License v3.0

Rust 99.49% Shell 0.51%

shadowsocks-gtk-rs's Introduction

shadowsocks-gtk-rs

Auto compile test

A desktop GUI frontend for shadowsocks-rust client implemented with gtk-rs.

This application is currently Linux only. Compatibility with other OSes isn't planned, because there already exists plenty of alternative solutions for Windows and MacOS.

This package contains two binaries:

Binary Functionality
ssgtk The main executable; launches the GUI application.
ssgtkctl The runtime API controller; see Q&A.

Table of Contents

Work in Progress

Be advised that this application may be incomplete and/or buggy. But do rest assured that it won't destroy your OS or something.

Your input is very welcomed! If you have any suggestions or have found any issue (no matter how small or unimportant) with the code or the documentation, please feel free to raise an issue. Or better yet, submit a PR if you can!

Install

Read the Documentation!

If you are using this application for the first time, you should first read the configuration guide.

Arch Linux and Derivatives

You can install the AUR package that I maintain.

# install with paru
paru shadowsocks-gtk-rs

Any Linux

You can always install directly from crates.io.

cargo install shadowsocks-gtk-rs

Limitations of Using cargo-install

Build

Dependencies

  • A working installation of rust, see here.
  • The sslocal binary from shadowsocks-rust as the backend.
    • Strictly speaking, this is only required at runtime.
  • GTK3 and libappindicator, using your distro's package manager.

The latest versions are highly recommended.

Distro GTK3 libappindicator
Arch pacman gtk3 libappindicator-gtk3
Debian apt libgtk-3-dev libappindicator3-dev
Fedora dnf gtk3-devel libappindicator-gtk3

If you are using any recent version of Gnome as your desktop environment, you also need gnome-shell-extension-appindicator for the tray icon to show up.

Clone Source and Run

git clone https://github.com/spyophobia/shadowsocks-gtk-rs.git
cd shadowsocks-gtk-rs
# this script runs locally in the project directory
./run-local.sh

Useful Reading

shadowsocks-gtk-rs's People

Contributors

dependabot[bot] avatar spyophobia avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

shadowsocks-gtk-rs's Issues

Feat: Releases on github

This is really annoying that I have to compile, it would be really awesome if you use Github actions, Isn't this a better way of getting rid of dependency hell?

Project Status Update

Hi guys, main developer here. This is just a quick update on the status of this project and where it is heading.

I started this project back in 2021 as a Linux alternative to shadowsocks-windows. At the time I had plenty of spare time and lots of enthusiasm, which enabled the project to be developed rapidly. However as you can probably tell from the commit history, this is no longer the case, neither in terms of time nor passion.

At the moment I'm quite busy with work and some of my other personal projects (not under this anonymous account); hopefully that explains the lack of free time. As of my lack of passion, funnily enough it's due to just how much I learned about Rust working on my project. I learned so much that unfortunately, I can no longer look back at my old code and not grimace. In fact I was working on a major refactoring of this project mid-2022, but my own code was giving me such a headache that I would find any excuse to not look at it. Those (uncommitted) changes are still sitting in my local repository if I recall correctly.

Going forward

First of all, I want to clarify that I do not intend to leave this project as abandonware. I also do believe that Linux deserves a good GUI Shadowsocks frontend, it's just this project, in its current state, isn't it. There are several issues if my memory serves me well:

  1. I didn't use async in this project (cannot remember the reason; definitely should have), which directly led to a lot of shitty code.
  2. At the time I struggled to find a good library for tray icon support.
  3. GTK is just not a great GUI toolkit to use directly IMO, especially so with the Rust bindings.

As you can see, those are rather major changes to this project. I mean, even the project's name will have to be changed if I'm to use a different GUI toolkit ๐Ÿ˜…. At this point, why not just make it a new repository?

So my plan now is somewhat straightforward. I intend to start a new project that supersedes this one, with my now-improved coding competence, using a better GUI toolkit. Hopefully the idea of starting with a clean slate and learning a new toolkit will rekindle my lost enthusiasm too. The config files will be organised in a similar manner, so hopefully it won't be too difficult to migrate for my users, all three of you ๐Ÿ˜‰.

The GUI toolkit I'm most interested in now is tao, since it seems to come with decent tray support, and there are existing projects built using it (example: elem). I'm also open to other suggestions from everyone.

I will be trying to make this new project a reality in the next few months. However I do have to set your expectations now, and say that there is no timeline guarantee; I'm a busy guy after all (at least I would like to think so), and I would be working on this thing for free. I'll update the README in this repository when the new project is ready.

Anyways, thanks for spending time to read this, and have a great 2023.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.