# sp-client-core (`v0.1.0`)

## Prerequisites

### Application Data

* `xdg-data-resources.tar.gz`
  * `~/.local/share/simplified-privacy`

### System Packages

```bash
sudo apt install bubblewrap iproute2 microsocks proxychains4 ratpoison tor wireguard xserver-xephyr
```

### Python Packages

All external Python dependencies can be found in `requirements.txt`.

## Command Line Interface

For testing purposes, this version contains a command line interface that will eventually be extracted.

> **Important:** At the same time, said `cli` serves as a reference implementation of the library. Do not rely on `main.py` when writing your own implementation. In addition, please do not interact with logic outside the controllers.

All commands and subcommands feature help messages (accessible through `-h` or `--help`). 

### Configuration

#### Get Connection

```bash
python3 main.py get connection
```

#### Set Connection

```bash
# Example 1
python3 main.py set connection 'system'

# Example 2
python3 main.py set connection 'tor'
```

### Sync

```bash
python3 main.py sync
```

### Profiles

#### Create System Profile

```bash
python3 main.py profile create system -i 1 -n 'Primary' -l 'md' -c 'wireguard'
```

#### Create Session Profile

```bash
# Example 1
python3 main.py profile create session -i 2 -n 'Research' -l 'md' -a 'brave:1.63.165' -c 'tor' -r '1024x768'

# Example 2
python3 main.py profile create session -i 3 -n 'Entertainment' -l 'md' -a 'chromium:122.0.6261.94-1' -c 'system' -r '1600x900'

# Example 3
python3 main.py profile create session -i 4 -n 'Banking' -l 'md' -a 'firefox:123.0' -c 'wireguard' -m
```

#### List Profiles

```bash
python3 main.py profile list
```

#### Show Profile

```bash
python3 main.py profile show -i 4
```

#### Destroy Profile

```bash
python3 main.py profile destroy -i 4
```

#### Enable Profile

```bash
# Enable (halt in case of state conflicts and/or potential security issues).
python3 main.py profile enable -i 4

# Enable (ignore state conflicts and/or potential security issues).
python3 main.py profile enable -i 4 -f

# Enable (delete any existing profile data on beforehand).
python3 main.py profile enable -i 4 -p
```

#### Disable Profile

```bash
# Disable (halt in case of state conflicts and/or potential security issues).
python3 main.py profile disable -i 4

# Disable (ignore state conflicts and/or potential security issues).
python3 main.py profile disable -i 4 -f
```

### Applications

#### List Applications

```bash
# Example 1
python3 main.py application list

# Example 2
python3 main.py application list -c 'firefox'
```

#### Show Application

```bash
python3 main.py application show -a 'chromium:122.0.6261.94-1'
```

#### Install Application

```bash
# Install (halt in case the application is already installed).
python3 main.py application install -a 'firefox:123.0'

# Install (reinstall the application if it already exists).
python3 main.py application install -a 'firefox:123.0' -r
```

#### Uninstall Application

```bash
python3 main.py application uninstall -a 'brave:1.63.165'
```

### Version Information

```bash
python3 main.py --version
```