onionshare/desktop
2021-11-23 15:28:40 +11:00
..
package Fix Windows and Mac build scripts 2021-05-05 20:39:14 -07:00
screenshots Add onionshare CLI to cli folder, move GUI to desktop folder, and start refactoring it to work with briefcase 2020-10-12 22:40:55 -07:00
scripts Fix meek-client in Windows 2021-11-07 12:12:12 -08:00
src Fetch the built-in bridges from Tor's Censorship Circumvention API, rather than hardcode them 2021-11-23 15:28:40 +11:00
tests Merge pull request #1406 from SaptakS/fix-filelisting 2021-09-09 16:52:25 -07:00
pyproject.toml Change all version to 2.4, update languages, rebuild docs, update tor from Tor Browser 2021-09-26 11:41:01 -07:00
README.md Fix meek-client in Windows 2021-11-07 12:12:12 -08:00

OnionShare Desktop

Building OnionShare

Start by getting the source code and changing to the desktop folder:

git clone https://github.com/onionshare/onionshare.git
cd onionshare/desktop

Install platform-specific dependencies

Linux

In Ubuntu 20.04 you need the libxcb-xinerama0 package installed.

Install python dependencies:

pip3 install --user poetry requests

Download Tor Browser and extract the binaries:

./scripts/get-tor-linux.py

macOS

Download and install Python 3.8.6 from https://www.python.org/downloads/release/python-386/. I downloaded python-3.8.6-macosx10.9.pkg. (You may need to also run /Applications/Python\ 3.8/Install\ Certificates.command.)

Install python dependencies:

pip3 install --user poetry requests

Download Tor Browser and extract the binaries:

./scripts/get-tor-osx.py

Windows

These instructions include adding folders to the path in Windows. To do this, go to Start and type "advanced system settings", and open "View advanced system settings" in the Control Panel. Click Environment Variables. Under "System variables" double-click on Path. From there you can add and remove folders that are available in the PATH.

Download Python 3.8.6, 32-bit (x86) from https://www.python.org/downloads/release/python-386/. I downloaded python-3.8.6.exe. When installing it, make sure to check the "Add Python 3.8 to PATH" checkbox on the first page of the installer.

Download and install 7-Zip from http://www.7-zip.org/download.html. I downloaded 7z1900.exe. Add C:\Program Files (x86)\7-Zip to your path.

Install python dependencies:

pip install poetry requests

Download Tor Browser and extract the binaries:

python scripts\get-tor-windows.py

Compile dependencies

Install Go. The simplest way to make sure everything works is to install Go by following these instructions. (In Windows, make sure to install the 32-bit version of Go, such as go1.17.3.windows-386.msi.)

Download and compile meek-client:

./scripts/build-meek-client.py

Prepare the virtual environment

OnionShare uses Briefcase.

Install Briefcase dependencies by following these instructions.

Now create and/or activate a virtual environment.

  • Linux and macOS
    python3 -m venv venv
    . venv/bin/activate
    
  • Windows
    python -m venv venv
    venv\Scripts\activate.bat
    

While your virtual environment is active, install briefcase from pip.

pip install briefcase

In order to work with the desktop app, you'll need to build a wheel of the CLI package first, and copy it into the desktop folder. You'll need to re-run this script each time you change the CLI code.

python scripts/rebuild-cli.py

Running OnionShare from the source code tree

Inside the virtual environment, run OnionShare like this to install all of the dependencies:

briefcase dev -d

Once you have the dependencies installed, you can run it using the dev.sh script, which lets you use command line arguments, such as to --verbose or --local-only:

./scripts/dev.sh --help
./scripts/dev.sh -v
./scripts/dev.sh -v --local-only

Windows uses scripts\dev.bat instead.

Running tests

Install these packages inside your virtual environment:

pip install pytest pytest-briefcase pytest-faulthandler pytest-qt

Then run the tests:

./tests/run.sh

If you want to run tests while hiding the GUI, you must have the xvfb package installed, and then:

xvfb-run ./tests/run.sh