A tool that creates Anki flashcards from movies and TV shows with subtitles, for language learning.
This is a GTK4 / .NET 10 rewrite of the UI layer. The processing core (subtitle parsing, ffmpeg calls, SRS generation) is carried over from the original with minimal changes.
- Christopher Brochtrup — original author
- erjiang — Linux/Mono port
- nihil-admirari — updated dependencies
| Area | Old (erjiang fork) | This port |
|---|---|---|
| UI toolkit | WinForms on Mono | GTK4 via GirCore |
| Runtime | Mono | .NET 10+ |
| System.Drawing | Required everywhere | Removed — SrsColor, FontInfo used instead |
| Serialization | BinaryFormatter |
System.Text.Json (ObjectCloner) |
| Preferences format | Custom key = value text with regex updates |
JSON (preferences.json) |
| Progress dialogs | BackgroundWorker + modal DialogProgress |
async/await + IProgressReporter |
| PropertyGrid (Preferences) | WinForms PropertyGrid |
ColumnView with editable cells |
| Preview dialog | BackgroundWorker (deadlocked on Wayland) |
Task.Run + async |
| Font/Color pickers | WinForms dialogs | FontDialogButton / ColorDialogButton (native GTK4) |
| VobSub support | Built-in | Optional (compile with EnableVobSub=true) |
| MS fonts | Required fontconfig workaround | Not needed |
| Build system | mcs / xbuild | dotnet publish via Makefile |
- SubsReTimer — separate tool, not part of this port
- DialogAbout — removed (was WinForms bitmap-based)
- DialogPreviewSnapshot — merged into
DialogPreview - DialogVideoDimensionsChooser — removed (size set directly in settings)
- GroupBoxCheck — WinForms custom control, not needed in GTK
Runtime:
- .NET 10+ runtime
- GTK 4
- ffmpeg
- mp3gain (only if using audio normalization)
- mkvtoolnix (
mkvextract,mkvinfo) (only for MKV track extraction)
Build:
Optional:
- noto-fonts-cjk — for Japanese/Chinese/Korean text
make buildmake testyay -S subs2srs-guigit clone https://github.com/ajatt-tools/subs2srs.git
cd subs2srs
sudo make installInstalls to /usr/lib/subs2srs/, launcher to /usr/bin/subs2srs.
sudo make uninstallOn first run, preferences.json is created in
~/.config/subs2srs/.
If a preferences.txt from a previous version exists in the same directory,
it is automatically migrated to JSON on first launch. The old file is left
intact.
Projects are saved as .s2s.json files (File → Save/Load Project).
Edit preferences via Preferences dialog or by editing preferences.json
directly.
- Add default constant to
PrefDefaults - Add property to
PreferencesData.cswith default fromPrefDefaults - Add delegating property to
ConstantSettings - Add to
DialogPref.BuildPropTable()+DialogPref.SavePreferences() - Add to
Logger.writeSettingsToLog() - If the preference maps to
Settings.Instance, add toSettings.Reset()
Set max_parallel_tasks in Preferences → Misc (or in preferences.json):
0— auto (number of CPU cores, default)1— sequential (no parallelism)N— use up to N threads for media generation
VobSub (.sub/.idx) parsing requires System.Drawing.Common and is
disabled by default. To enable:
dotnet publish subs2srs/subs2srs.csproj -c Release -p:EnableVobSub=true