# DesQ Shell

## MultiProcess Shell
1. Shell Manager - Pure console app to manage the Shell Components
  - Manager will keep track of all the components                                                                                              ✓
  - Use QProcess (and not QProcess::startDetached) to start the processes                                                                      ✓
  - If any QProcess dies (exit code is non zero), intimate the user and restart the process.                                                   ✓
  - New options:                                                                                                                               ✓
    - `start-process /path/to/process or desq-process` (like bg, panel, etc)
    - `kill-process /path/to/process or desq-process` (like bg, panel, etc)
    - `restart-process /path/to/process or desq-process` (like bg, panel, etc)

2. Shell BG      - Background-only component (This is now multi-monitor enabled - not tested yet)                                              ✓
3. Shell Widgets - Desktop Widgets - DesQ Cask                                                                                                 ✓
  - We need to make desq-cask multi-monitor enabled.
  - Typical Widgets are
    - SNI
    - DesQ SuperButton (To be built)
    - Clock
    - UsageBars
    - Volume
    - Backlight
      We need to add support for newly connected devices.
    - Pager
4. Panel         - Start the panel (if enabled)                                                                                                ✓
5. Dock          - Start the dock (if enabled)

## IO Process Manager
We need a smooth IO manager that performs the copy/move operations on behalf of the file manager or any other application.
We can easily provide a IO Progress Meter in the system tray to track the progress.

### IPC Interface for Copying/Moving/... files/folders
- `desq-ipc Shell IO::Copy [Path1, Path2, Path3, ...] Target`
- `desq-ipc Shell IO::Move [Path1, Path2, Path3, ...] Target`
- `desq-ipc Shell IO::Link [Path1, Path2, Path3, ...] Target`
- `desq-ipc Shell IO::Trash [Path1, Path2, Path3, ...] Target`
- `desq-ipc Shell IO::Delete [Path1, Path2, Path3, ...] Target`



Note:
	✍ - Work in progress
	□ - Work to be started
	✓ - Work Completed
	✗ - Not working on this
	◐ - Partially complete
