From ec4d7da09d0c5ee3fcbeecfddd6ea3105cd4fb04 Mon Sep 17 00:00:00 2001 From: yusufipk Date: Sun, 16 Aug 2026 10:29:07 +0300 Subject: [PATCH] Say there is a fourth system in the two documents that count them README.tr.md still offered three, so a Turkish reader could not tell Windows was supported at all. CONTRIBUTING opens the section a port is written from, and it described three tables and three systems; there are four of each now, plus paths.py, which master separated out while this branch was adding a Windows case to the two copies it replaced. --- CONTRIBUTING.md | 39 ++++++++++++++++++++++++--------------- README.tr.md | 12 +++++++++--- 2 files changed, 33 insertions(+), 18 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c23508a..1eff08c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -53,19 +53,28 @@ forgets fails rather than hangs. ## Another platform -Three systems are supported: Wayland, X11 and macOS. Each one is a named entry -in a table, and one chooser picks between them, so a fourth adds an entry and a -line rather than a branch inside every function. The three tables are -`paste.Desktop` (clipboard and key press), `audio.Sound` (capture and the device -lists) and the `_macos()`/`_gnome()` pair in `hotkey.py`. Keep `sys.platform` -inside the chooser and read it there every time: a constant settled at import is -one no test can stand somewhere else. +Four systems are supported: Wayland, X11, macOS and Windows. Each one is a named +entry in a table, and one chooser picks between them, so a fifth adds an entry +and a line rather than a branch inside every function. The tables are +`paste.Desktop` (clipboard and key press), `audio.Sound` (capture, the device +lists, and whether the far side of a meeting can be recorded at all), +`paths.directories()` (where the settings and the data live) and the +`_macos()`/`_windows()`/`_gnome()` set in `hotkey.py`. Keep `sys.platform` inside +the chooser and read it there every time: a constant settled at import is one no +test can stand somewhere else. + +Where a platform cannot do something, say so in its table entry rather than in +the code that asks. `audio.Sound.meetings` is the shape of it: Windows offers no +capture device for what the speakers are playing, and a caller reading a False +there can tell that apart from an empty device list, which only means the tool +that lists them is not installed. The tests are split along the same line, and almost none of them are skipped. -892 of the 935 run on any machine, including every line of the Wayland, X11 and -macOS backends: the programs are faked at `shutil.which`, the frameworks at the -one function that loads them. A test class says which system it is standing on -rather than avoiding the question: +1009 of the 1052 run on any machine, including every line of the Wayland, X11, +macOS and Windows backends: the programs are faked at `shutil.which`, the +frameworks and system libraries at the one function that loads them +(`paste._win_api`, `hotkey._win_input`). A test class says which system it is +standing on rather than avoiding the question: ```python class MacOS(ClipboardContract, DikteTest): @@ -73,10 +82,10 @@ class MacOS(ClipboardContract, DikteTest): here = paste.MACOS ``` -so the Linux half is checked on a Mac and the macOS half on Linux, and a change -to a chooser cannot quietly break the platform nobody is sitting at. What the -systems owe in common is written once as a contract class and subclassed by each -of them. +so the Linux half is checked on a Mac, the macOS half on Linux and the Windows +half on both, and a change to a chooser cannot quietly break the platform nobody +is sitting at. What the systems owe in common is written once as a contract +class and subclassed by each of them. The 43 that do carry `@linux_only` are the ones that would need the real thing: the `/dev/input` listener, KDE's shortcut file, GNOME's gsettings. Mark a test diff --git a/README.tr.md b/README.tr.md index db1f23c..099fe1c 100644 --- a/README.tr.md +++ b/README.tr.md @@ -4,9 +4,9 @@ çevrilir, bir model transkripti temizler (ıı'lar, tekrarlar, eksik noktalama), sonuç panoya kopyalanır ve o an yazdığın pencereye yapıştırılır. -KDE Plasma 6 / Wayland için yazıldı, GNOME X11 ve macOS'ta da çalışır. Sistem -paketleri dışında bağımlılığı yok: sadece Python standart kütüphanesi (3.11 veya -üstü) ve PyQt6. +KDE Plasma 6 / Wayland için yazıldı, GNOME X11, macOS ve +[Windows](README.windows.md)'ta da çalışır. Sistem paketleri dışında bağımlılığı +yok: sadece Python standart kütüphanesi (3.11 veya üstü) ve PyQt6. *[English README](README.md)* @@ -81,6 +81,12 @@ build -j`) ve yolunu Ayarlar → API'ye yaz, ya da buluta çevir. Toplantı içi BlackHole veya Loopback gerekiyor (`brew install blackhole-2ch`); dikte için gerekmiyor. +Windows da aynı şekilde çalışıyor, Dikte açıkken kombinasyonu sistemin kendi +kısayol servisi üzerinden tutuyor: `winget install Gyan.FFmpeg`, `pip install +PyQt6`, sonra `python dikte.py`; Başlat Menüsü girdisi ve `dikte` komutu için +isteğe bağlı `install.ps1`. Orada toplantı kaydı henüz yok, ayrıntılar +[Windows README](README.windows.md)'sinde. + `install.sh` `dikte` komutunu, menü girdisini, oturum açılışında otomatik başlatmayı ve iki global kısayolu kurar; tuşları da iki argümanı. `./update.sh` son sürümü çeker ve bunları senin seçtiğin tuşlarla yerine koyar;