|
2 | 2 |
|
3 | 3 | # MarkItDown GUI Wrapper |
4 | 4 |
|
5 | | -A feature-rich **GUI wrapper** for `MarkItDown`, built with **PySide6**. Easily convert files to markdown using drag & drop. |
| 5 | +A desktop GUI for `MarkItDown`, built with `PySide6` and `QFluentWidgets`. |
| 6 | +It focuses on fast multi-file conversion to Markdown with a modern Fluent-style interface. |
6 | 7 |
|
| 8 | + |
7 | 9 |
|
8 | | - |
| 10 | +## Current Status |
| 11 | + |
| 12 | +- Main conversion workflow is stable and production-usable. |
| 13 | +- The UI refactor to `QFluentWidgets` is active and already shipped for the main screens (`Home`, `Settings`, `Help`). |
| 14 | +- Current polish work is focused on visual consistency (Solarized light + Nord dark themes), typography, and startup-time improvements for packaged builds. |
9 | 15 |
|
10 | 16 | ## Features |
11 | 17 |
|
12 | | -- 📂 **File Management**: |
13 | | - - Drag & Drop for batch processing |
14 | | - - File type filtering |
15 | | - - Recent files history |
16 | | - - Batch processing with pause/resume |
17 | | - |
18 | | -- 🎨 **User Interface**: |
19 | | - - Dark/Light theme support |
20 | | - - Preview panel |
21 | | - - Progress tracking |
22 | | - - Keyboard shortcuts |
23 | | - |
24 | | -- ⚙️ **Advanced Options**: |
25 | | - - Format customization (headers, tables) |
26 | | - - Auto-save and backup |
27 | | - - Enable plugins |
28 | | - - Document Intelligence API support |
29 | | - |
30 | | -- 🛠️ **Output Options**: |
31 | | - - Save all in one file or separately |
32 | | - - Choose output directory |
33 | | - - Quick copy & paste |
34 | | - - Preview before saving |
| 18 | +- Queue-based file workflow with drag and drop. |
| 19 | +- Batch conversion with start, pause/resume, cancel, and progress feedback. |
| 20 | +- Results view with per-file selection and Markdown preview. |
| 21 | +- Preview modes: rendered Markdown view and raw Markdown view. |
| 22 | +- Save modes: export as one combined file or separate files. |
| 23 | +- Quick actions: copy Markdown, save output, back to queue, start over. |
| 24 | +- Settings for output folder, batch size, header style, table style, and theme mode (light/dark/system). |
| 25 | +- Built-in shortcuts dialog, update check action, and about dialog. |
35 | 26 |
|
36 | 27 | ## Installation |
37 | 28 |
|
38 | | -You can download the precompiled executable from the [Releases](https://github.com/imadreamerboy/markitdown-gui/releases) or build it from source. For that just follow the instructions below. |
| 29 | +Download prebuilt binaries from [Releases](https://github.com/imadreamerboy/markitdown-gui/releases), or run from source. |
39 | 30 |
|
40 | 31 | ### Prerequisites |
41 | 32 |
|
42 | | -- Python **3.10+** |
43 | | -- create a venv |
44 | | -- Install dependencies (preferred via `uv`): |
| 33 | +- Python `3.10+` |
| 34 | +- `uv` (recommended) |
| 35 | + |
| 36 | +Install dependencies: |
45 | 37 |
|
46 | 38 | ```sh |
47 | | -uv sync |
| 39 | +uv sync |
48 | 40 | ``` |
49 | | -or |
| 41 | + |
| 42 | +Alternative: |
50 | 43 |
|
51 | 44 | ```sh |
52 | | -pip install -r requirements.txt |
| 45 | +pip install -e .[dev] |
53 | 46 | ``` |
54 | 47 |
|
55 | | -### Run the App |
| 48 | +## Run the App |
56 | 49 |
|
57 | 50 | ```sh |
58 | 51 | uv run python -m markitdowngui.main |
59 | 52 | ``` |
60 | 53 |
|
61 | | -### Keyboard Shortcuts |
| 54 | +## Keyboard Shortcuts |
62 | 55 |
|
63 | | -- `Ctrl+O`: Open Files |
64 | | -- `Ctrl+S`: Save Output |
65 | | -- `Ctrl+C`: Copy Output |
66 | | -- `Ctrl+P`: Pause/Resume |
67 | | -- `Ctrl+B`: Begin Conversion |
68 | | -- `Ctrl+L`: Clear List |
69 | | -- `Ctrl+K`: Show Shortcuts |
70 | | -- `Esc`: Cancel Conversion |
| 56 | +- `Ctrl+O`: Open files |
| 57 | +- `Ctrl+S`: Save output |
| 58 | +- `Ctrl+C`: Copy output |
| 59 | +- `Ctrl+P`: Pause/resume |
| 60 | +- `Ctrl+B`: Start conversion |
| 61 | +- `Ctrl+L`: Clear queue |
| 62 | +- `Ctrl+K`: Show shortcuts |
| 63 | +- `Esc`: Cancel conversion |
71 | 64 |
|
72 | 65 | ## Build a Standalone Executable |
73 | 66 |
|
74 | | -First activate the development environment: |
75 | | - |
76 | 67 | ```sh |
77 | 68 | uv pip install -e .[dev] |
| 69 | +pyinstaller MarkItDown.spec --clean --noconfirm |
78 | 70 | ``` |
79 | 71 |
|
80 | | -Use `PyInstaller`: |
81 | | - |
82 | | -```sh |
83 | | - pyinstaller MarkItDown.spec --clean |
84 | | -``` |
85 | | - |
86 | | -The default spec builds an `onedir` bundle at `dist/MarkItDown/` for faster startup. |
| 72 | +The default spec builds an `onedir` app in `dist/MarkItDown/`. |
| 73 | +Release workflows package this folder into platform-specific `.zip` artifacts. |
87 | 74 |
|
88 | 75 | ## License |
89 | 76 |
|
90 | | -Licensed under **GPLv3 for non-commercial projects**. |
| 77 | +Licensed under **GPLv3 for non-commercial use**. |
91 | 78 |
|
92 | | -Commercial use requires a separate commercial license. |
93 | | -This aligns with the licensing model stated by `PySide6-Fluent-Widgets` (`qfluentwidgets`). |
| 79 | +Commercial use requires a separate commercial license. |
| 80 | +This follows the non-commercial licensing requirements of `PySide6-Fluent-Widgets` (`qfluentwidgets`). |
94 | 81 |
|
95 | 82 | ## Contributing |
96 | 83 |
|
97 | | -Contributions are welcome! Please follow these steps to contribute: |
98 | | - |
99 | | -1. **Fork the repository** and create a new branch for your feature or bug fix. |
100 | | -2. **Set up the development environment**: |
101 | | - - It is recommended to use a virtual environment. |
102 | | - - This project uses `uv` for package management. |
103 | | - - To install all dependencies, including for development and testing, run: |
104 | | - ```sh |
105 | | - uv pip install -e .[dev] |
106 | | - ``` |
107 | | -3. **Make your changes**. |
108 | | -4. **Run the tests** to ensure everything is working correctly: |
109 | | - ```sh |
110 | | - pytest |
111 | | - ``` |
112 | | -5. **Submit a pull request** with a clear description of your changes. |
| 84 | +1. Fork the repository and create a branch. |
| 85 | +2. Install dev dependencies: |
| 86 | + |
| 87 | +```sh |
| 88 | +uv pip install -e .[dev] |
| 89 | +``` |
| 90 | + |
| 91 | +3. Make your changes. |
| 92 | +4. Run tests: |
| 93 | + |
| 94 | +```sh |
| 95 | +uv run pytest -q |
| 96 | +``` |
| 97 | + |
| 98 | +5. Open a pull request with a clear summary. |
113 | 99 |
|
114 | 100 | ## Credits |
115 | 101 |
|
116 | | -- **MarkItDown** ([MIT License](https://opensource.org/licenses/MIT)) |
117 | | -- **PySide6** ([LGPLv3 License](https://www.gnu.org/licenses/lgpl-3.0.html)) |
118 | | -- **Lucide Icons** ([MIT License](https://lucide.dev/)) |
| 102 | +- MarkItDown ([MIT License](https://opensource.org/licenses/MIT)) |
| 103 | +- PySide6 ([LGPLv3 License](https://www.gnu.org/licenses/lgpl-3.0.html)) |
| 104 | +- PySide6-Fluent-Widgets / QFluentWidgets ([Project site](https://qfluentwidgets.com)) |
119 | 105 |
|
120 | 106 |
|
0 commit comments