Development of SecureDropUpdater in the journalist_gui Directory
SecureDropUpdater is a tool used by the journalists and admins, this tool helps them to update their SecureDrop git repository to the latest released tag.
It is a GUI tool and it is written using PyQt5 bindings of the Qt framework. This tool is written
Installing the Dependencies in a Virtual Environment
You can use Python’s built-in
venv module to install the dependencies
in a virtual environment. From the
$ python3 -m venv .venv && source .venv/bin/activate $ pip install --require-hashes -r dev-requirements.txt
The first command will create a virtual environment and activate it.
The second command will install the dependencies, using the exact hashes
dev-requirements.txt. Make sure you are using at least
The Updater GUI does not use a virtual environment on the Tails Workstations. As such, you can only use dependencies present in Tails.
You can run the GUI via:
$ python3 SecureDropUpdater
Note that since the application expects to run in Tails, you should test its functionality in a Tails VM. You can follow the instructions in the Virtualizing Tails guide to set up your Tails VM.
To Update the UI Design
The design of the GUI is saved in the
journalist_gui/mainwindow.ui file. To update the UI, one has to first install
qtcreator tool in the system. We are currently using 5.10.1 version of Qt for this project.
$ sudo apt install qtcreator python3-pyqt5
If we make any changes to the UI, we will have to use
pyuic5 command to update the corresponding Python code.
$ pyuic5 journalist_gui/mainwindow.ui -o journalist_gui/updaterUI.py
Using Resources in the UI
All icons and images for the UI is stored in the
journalist_gui/static directory. These are known as resources for the
journalist_gui/resources.qrc file contains the list of current resources for the project. Each resource needs
to be defined inside of a
Example qrc file:
<RCC> <qresource prefix="/images"> <file>static/securedrop.png</file> <file>static/securedrop_icon.png</file> </qresource> </RCC>
We will have to update the corresponding Python file for any change in this resource file. We can do that using the following command:
$ pyrcc5 journalist_gui/resources.qrc -o journalist_gui/resources_rc.py
resources_rc.py files are generated by the tools. So, do not make any changes to these
files. Any changes made to these files will be overridden.
As a reviewer of a PR involving changes to this resource file, you
should verify the changes to the file by running
Adding and Running Test Cases
We have Python unit tests in the
test_gui.py file. Any change in the actual application code will also require adding new
test cases or updating the old ones. You can run the tests using the following command:
$ python3 test_gui.py