1
0
Fork
You've already forked sailwa
0
Whatsapp basic client for SailfishOS
  • Python 58.8%
  • QML 24.5%
  • Gherkin 13.4%
  • Shell 3.3%
2026年07月12日 15:51:36 +00:00
.forgejo/workflows Migrating to python + qml 2026年07月12日 15:33:50 +00:00
docs Migrating to python + qml 2026年07月12日 15:33:50 +00:00
features Add goal specifications and evolutions 2026年07月10日 08:32:13 +00:00
icons/86x86 Migrating to python + qml 2026年07月12日 15:33:50 +00:00
python Migrating to python + qml 2026年07月12日 15:33:50 +00:00
qml Migrating to python + qml 2026年07月12日 15:33:50 +00:00
rpm Migrating to python + qml 2026年07月12日 15:33:50 +00:00
scripts cleanup 2026年07月12日 15:51:36 +00:00
.gitignore cleanup 2026年07月12日 15:51:36 +00:00
Evolutions.txt resolve EVO-110 2026年07月10日 19:46:16 +00:00
GOAL.md GOAL 2026年07月10日 08:28:34 +00:00
README.md cleanup 2026年07月12日 15:51:36 +00:00
sailwa.desktop Migrating to python + qml 2026年07月12日 15:33:50 +00:00

SailWA — SailfishOS WhatsApp Client

A simple SailfishOS WhatsApp client for quickly exchanging messages from a secondary phone. Uses the WhatsApp Web multi-device protocol through a Python backend.

Product behavior

Canonical product behavior is described in features/.

The .feature files are the source of truth for what the software does. They are product specifications first and executable BDD scenarios second.

Implementation and delivery tracking belongs outside this directory. Stable feature and scenario IDs let other workflows refer back to the product behavior without making the spec a status surface.

Prerequisites

  • rpmbuild and tar (for building the RPM)
  • Python 3.12+ and pip (for development and testing)
pip install -r python/requirements.txt

Build

scripts/build

Output RPMs are written to .devloop/build/rpmbuild/RPMS/noarch/.

Requires rpmbuild and tar on the build host (sudo apt install rpm). Uses the noarch RPM spec at rpm/sailwa.spec — no compilation step.

Test

Backend unit tests

Requires Python dependencies installed (see Prerequisites).

PYTHONPATH=python python3 -m pytest python/tests/ -x -v

QML smoke tests

Validates QML frontend structure without the Sailfish SDK runtime.

PYTHONPATH=python python3 -m pytest qml/tests/ -x -v

CI

Forgejo Actions runs both test suites and the RPM build on every push and pull request to main.

Deploy

Deploy the built RPM to a SailfishOS device or emulator:

# To the SDK emulator (default: nemo@192.168.2.15)
./scripts/deploy.sh
# To a physical device
./scripts/deploy.sh nemo@10.0.0.42

The script copies the RPM via SCP and installs it with pkcon install-local.

Development workflow

Run the Python backend directly

For frontend development, run the backend standalone:

python3 python/server.py

The backend listens on http://127.0.0.1:18080 by default. Change the port:

python3 python/server.py --port 18081
# or
SAILWA_PORT=18081 python3 python/server.py

Frontend QML

Edit QML files in qml/ directly — no rebuild needed for frontend changes when running on-device. The RPM build packages files listed in rpm/sailwa.spec under %files.

Troubleshooting

Problem Likely cause Fix
rpmbuild not found RPM tools not installed Install with sudo apt install rpm
Backend won't start Missing Python dependencies pip install -r python/requirements.txt
Port conflict Another process on port 18080 Use --port to pick a different port, or stop the other process
Deployment SCP fails Wrong IP or SSH key not set up Check the device IP, add your SSH public key to the device: ssh-copy-id nemo@<ip>
pkcon install-local fails on device RPM dependency not met Try devel-su rpm -i /tmp/<rpm-file> instead