Metadata-Version: 2.2
Name: devicedeck
Version: 0.1.0
Summary: Desktop workspace for Android debugging: ADB files, terminal sessions, and scrcpy screen control.
Author: DeviceDeck contributors
License: MIT
Project-URL: Homepage, https://nvnkennedy.github.io/Device_Deck/
Project-URL: Repository, https://github.com/nvnkennedy/Device_Deck
Project-URL: Documentation, https://github.com/nvnkennedy/Device_Deck#readme
Project-URL: PyPI, https://pypi.org/project/devicedeck/
Keywords: android,adb,scrcpy,pyqt5,sftp,desktop
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: X11 Applications :: Qt
Classifier: Environment :: Win32 (MS Windows)
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Testing
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: PyQt5<6.0,>=5.15.11
Requires-Dist: pyserial<4.0,>=3.5
Requires-Dist: paramiko<5.0,>=3.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Provides-Extra: build
Requires-Dist: pyinstaller<7.0,>=6.0; extra == "build"

# DeviceDeck (PyQt5)

Desktop workspace for Android debugging: ADB file transfer, multi-session terminal, and USB screen forwarding.

| | |
|--|--|
| **PyPI package name** | `devicedeck` |
| **Run after install** | `devicedeck` (also in `Scripts` on Windows) |
| **Website** | [nvnkennedy.github.io/Device_Deck](https://nvnkennedy.github.io/Device_Deck/) |
| **PyPI** | [pypi.org/project/devicedeck](https://pypi.org/project/devicedeck/) |

## Prerequisites

- Python 3.9+
- **ADB** and a **USB display-forwarding** tool on `PATH`, or paths in **File → Preferences**
- **`ssh` on PATH** if you use SSH terminal sessions
- **Serial/COM** hardware if you use serial tabs (pyserial is a dependency)

## Install (recommended)

From [PyPI](https://pypi.org/project/devicedeck/):

```bash
python -m pip install --upgrade pip
python -m pip install devicedeck
```

Then:

```bash
devicedeck
```

Same as: `python -m devicedeck`

This repository is **source-only** on GitHub — users install the **published package** with pip, not by downloading an `.exe` from the repo.

## Install from a git clone (development)

```bash
git clone https://github.com/nvnkennedy/Device_Deck.git
cd Device_Deck
pip install -e ".[dev]"
```

Editable install with tests:

```bash
pip install -e ".[dev]"
```

Or install **directly from GitHub**:

```bash
pip install "git+https://github.com/nvnkennedy/Device_Deck.git"
```

`main.py` is a thin launcher for local development only.

## Publishing to PyPI

See **[docs/PYPI_PUBLISH.md](docs/PYPI_PUBLISH.md)** (build wheel/sdist, API token, optional GitHub Actions).

## Website (GitHub Pages)

Static site under `site/` — **Install** instructions for end users. Deployed by `.github/workflows/pages.yml` when you push changes under `site/`.

## Windows standalone executable (optional, maintainers only)

For machines **without** Python, you can build a **PyInstaller** folder or installer **locally** — outputs are **not** committed to this repo.

```powershell
pip install -e ".[build]"
powershell -ExecutionPolicy Bypass -File scripts\build_windows_exe.ps1
```

See `DeviceDeck.spec`. ADB and display-forwarding tools are **not** bundled.

## Project layout

- `pyproject.toml` — metadata, `[project.scripts]` → `devicedeck` command
- `devicedeck/` — application code
- `site/` — GitHub Pages (home + install + PyPI links)
- `scripts/` — `build_windows_exe.ps1`, `export_app_icon.py`
- `tests/` — pytest
- `DeviceDeck.spec` — PyInstaller (optional)

## Build wheel / sdist

```bash
pip install build
python -m build
```

Artifacts: `dist/devicedeck-*.whl` and `dist/*.tar.gz`.

## Testing

```bash
python -m pytest tests/ -q
```

## Notes

- Settings: `~/.devicedeck.json`
- License: MIT — see [LICENSE](LICENSE)
