diff --git a/README.md b/README.md index 85be8fc..fe36166 100644 --- a/README.md +++ b/README.md @@ -117,17 +117,11 @@ run here by default, on models of your own. The cloud is the other option: speech to text on **OpenAI**, **Groq** or **OpenRouter** (`gpt-4o-transcribe`), cleanup on OpenRouter (`google/gemini-3.5-flash-lite`) or, when either is installed, on Claude Code or Codex. The keys fall back to `OPENAI_API_KEY`, -`GROQ_API_KEY` and `OPENROUTER_API_KEY`. - -All settings, including the indicator screen and corner, are stored outside the -application: in `$XDG_CONFIG_HOME/dikte/config.json` (normally -`~/.config/dikte/config.json`) on Linux, `%APPDATA%\Dikte\config.json` on -Windows, and `~/Library/Application Support/Dikte/config.json` on macOS. The -file is mode 600 where Unix permissions apply. Rebuilding, replacing or -updating Dikte therefore keeps the settings. Only removing that file or -uninstalling with `--purge` resets them. Cleanup can be switched off, in which -case the raw transcript is pasted, and a thinking model's effort can be set -next to it. +`GROQ_API_KEY` and `OPENROUTER_API_KEY`, and are stored in +`~/.config/dikte/config.json`, mode 600, or in +`~/Library/Application Support/Dikte` on a Mac. Cleanup can be switched off, in +which case the raw transcript is pasted, and a thinking model's effort can be +set next to it. ## Using it diff --git a/README.tr.md b/README.tr.md index 0457c52..5e88c69 100644 --- a/README.tr.md +++ b/README.tr.md @@ -114,15 +114,8 @@ seçersen sesi yazıya çevirme **OpenAI**, **Groq** ya da **OpenRouter**'da (varsayılan `gpt-4o-transcribe`), temizleme OpenRouter'da (`google/gemini-3.5-flash-lite`) ya da kuruluysa Claude Code veya Codex'te çalışır. Anahtarları boş bırakırsan `OPENAI_API_KEY`, `GROQ_API_KEY` ve -`OPENROUTER_API_KEY` kullanılır. - -Gösterge ekranı ve köşesi dahil bütün ayarlar uygulamanın dışında saklanır: -Linux'ta `$XDG_CONFIG_HOME/dikte/config.json` (normalde -`~/.config/dikte/config.json`), Windows'ta `%APPDATA%\Dikte\config.json`, -macOS'ta `~/Library/Application Support/Dikte/config.json`. Unix izinlerinin -geçerli olduğu sistemlerde dosyanın izni 600'dür. Bu nedenle Dikte'yi yeniden -derlemek, değiştirmek veya güncellemek ayarları silmez. Yalnızca bu dosyayı -silmek ya da kaldırıcıyı `--purge` ile çalıştırmak ayarları sıfırlar. +`OPENROUTER_API_KEY` kullanılır; anahtarlar `~/.config/dikte/config.json` +içinde, izinler 600, Mac'te ise `~/Library/Application Support/Dikte` altında. Temizlemeyi tamamen kapatabilirsin, o zaman ham transkript yapıştırılır; modelin yanındaki kutudan düşünme seviyesini de seçebilirsin. diff --git a/dikte/i18n.py b/dikte/i18n.py index 56ec263..c4f19d1 100644 --- a/dikte/i18n.py +++ b/dikte/i18n.py @@ -150,7 +150,7 @@ TR = { # --- settings: tabs and general ------------------------------------ "Dikte Settings": "Dikte Ayarları", "General": "Genel", - "Display": "Görüntü", + "Display": "Ekran", "API and models": "API ve modeller", "Cleanup rules": "Temizleme kuralları", "Audio file": "Ses dosyası", diff --git a/dikte/overlay.py b/dikte/overlay.py index a4acbe3..8fc561a 100644 --- a/dikte/overlay.py +++ b/dikte/overlay.py @@ -246,7 +246,10 @@ class Overlay(QWidget): self.resize(width, HEIGHT) def _reposition(self): - # On a multi-monitor setup, show up where the user actually is. + # The screen the settings name, or, when none is named or it is not + # plugged in right now, where the user actually is. Names are connector + # names on X11 and model names on macOS, where two identical monitors + # can share one; the first then wins. screen = next( (item for item in QApplication.screens() if item.name() == self.screen_name), None, diff --git a/dikte/settings_ui.py b/dikte/settings_ui.py index a032ffc..945e710 100644 --- a/dikte/settings_ui.py +++ b/dikte/settings_ui.py @@ -732,10 +732,14 @@ class SettingsWindow(QDialog): self.indicator_screen = QComboBox() self.indicator_screen.addItem(t("Follow the mouse pointer"), "") for screen in QGuiApplication.screens(): + # The native resolution, so that a scaled 4K screen reads + # 3840 × 2160 and not the 1920 × 1080 Qt sees through the scale. area = screen.geometry() + ratio = screen.devicePixelRatio() self.indicator_screen.addItem( t("{name} ({width} × {height})", name=screen.name(), - width=area.width(), height=area.height()), + width=round(area.width() * ratio), + height=round(area.height() * ratio)), screen.name(), ) form.addRow(t("Indicator screen"), self.indicator_screen)