From 612dfc9db81c51088c09c2155e386f5c50b640e8 Mon Sep 17 00:00:00 2001 From: Lemmy Date: Thu, 8 Jan 2026 20:18:39 -0500 Subject: [PATCH] ScreenRecorder: removed from core - use the plugin instead. --- Assets/Translations/de.json | 48 --- Assets/Translations/en.json | 48 --- Assets/Translations/es.json | 48 --- Assets/Translations/fr.json | 48 --- Assets/Translations/hu.json | 48 --- Assets/Translations/ja.json | 48 --- Assets/Translations/ku.json | 48 --- Assets/Translations/nl.json | 48 --- Assets/Translations/pl.json | 48 --- Assets/Translations/pt.json | 48 --- Assets/Translations/ru.json | 48 --- Assets/Translations/tr.json | 48 --- Assets/Translations/uk-UA.json | 48 --- Assets/Translations/zh-CN.json | 48 --- Assets/settings-default.json | 18 -- Assets/settings-widgets-default.json | 1 + Commons/IconsTabler.qml | 1 - Commons/Settings.qml | 21 -- Modules/Bar/Widgets/ScreenRecorder.qml | 71 ---- .../ControlCenter/Widgets/ScreenRecorder.qml | 29 -- Modules/Panels/Settings/SettingsContent.qml | 10 - Modules/Panels/Settings/SettingsPanel.qml | 1 - .../Settings/Tabs/ScreenRecorderTab.qml | 304 ------------------ Services/Control/IPCService.qml | 9 - Services/Media/ScreenRecorderService.qml | 271 ---------------- Services/System/ProgramCheckerService.qml | 2 - Services/UI/BarWidgetRegistry.qml | 4 - Services/UI/ControlCenterWidgetRegistry.qml | 4 - 28 files changed, 1 insertion(+), 1417 deletions(-) delete mode 100644 Modules/Bar/Widgets/ScreenRecorder.qml delete mode 100644 Modules/Panels/ControlCenter/Widgets/ScreenRecorder.qml delete mode 100644 Modules/Panels/Settings/Tabs/ScreenRecorderTab.qml delete mode 100644 Services/Media/ScreenRecorderService.qml diff --git a/Assets/Translations/de.json b/Assets/Translations/de.json index 7500775f1..7f677d308 100644 --- a/Assets/Translations/de.json +++ b/Assets/Translations/de.json @@ -464,9 +464,6 @@ "tooltip-action": "Energieprofil", "tooltip-disabled": "Installiere power-profiles-daemon, um Energieprofile zu verwenden" }, - "screen-recorder": { - "label-stopped": "Aufnehmen" - }, "wifi": { "label-disconnected": "WLAN getrennt", "label-ethernet": "Ethernet" @@ -573,20 +570,6 @@ "quick-settings-style-modern": "Modern" }, "frame-rates-fps": "{fps} FPS", - "screen-recording": { - "audio-sources-both": "System-Ausgabe + Mikrofon-Eingabe", - "audio-sources-microphone-input": "Mikrofon-Eingabe", - "audio-sources-none": "Kein Audio", - "audio-sources-system-output": "System-Ausgabe", - "color-range-full": "Vollständig", - "color-range-limited": "Begrenzt", - "quality-high": "Hoch", - "quality-medium": "Mittel", - "quality-ultra": "Ultra", - "quality-very-high": "Sehr hoch", - "sources-portal": "Portal", - "sources-screen": "Bildschirm" - }, "scrolling-modes": { "always": "Immer scrollen", "hover": "Beim Hover scrollen", @@ -1220,35 +1203,6 @@ "region": { "title": "Region" }, - "screen-recorder": { - "audio-audio-codec-description": "Opus wird für beste Leistung und kleinste Audio-Größe empfohlen.", - "audio-audio-codec-label": "Audio-Codec", - "audio-audio-source-description": "Audio-Quelle für die Aufnahme.", - "audio-audio-source-label": "Audio-Quelle", - "audio-desc": "Audio-Aufnahme-Optionen konfigurieren.", - "audio-title": "Audio-Einstellungen", - "general-copy-to-clipboard-description": "Kopiere die Datei nach Beendigung der Aufnahme in die Zwischenablage.", - "general-copy-to-clipboard-label": "In die Zwischenablage kopieren", - "general-desc": "Bildschirmaufnahme-Ausgabe und -Inhalt verwalten.", - "general-output-folder-description": "Ordner, in dem Bildschirmaufnahmen gespeichert werden.", - "general-output-folder-label": "Ausgabe-Ordner", - "general-select-output-folder": "Ausgabe-Ordner auswählen", - "general-show-cursor-description": "Mauszeiger im Video aufnehmen.", - "general-show-cursor-label": "Cursor anzeigen", - "general-title": "Allgemeine Einstellungen", - "title": "Bildschirmrekorder", - "video-color-range-description": "Begrenzt wird für bessere Kompatibilität empfohlen.", - "video-color-range-label": "Farbbereich", - "video-desc": "Video-Aufnahme-Optionen konfigurieren.", - "video-frame-rate-description": "Ziel-Bildrate für Bildschirmaufnahmen.", - "video-title": "Video-Einstellungen", - "video-video-codec-description": "h264 ist der gebräuchlichste Codec.", - "video-video-codec-label": "Video-Codec", - "video-video-quality-description": "Höhere Qualität führt zu größeren Dateigrößen.", - "video-video-quality-label": "Video-Qualität", - "video-video-source-description": "Portal wird empfohlen, bei Artefakten versuchen Sie Bildschirm.", - "video-video-source-label": "Video-Quelle" - }, "session-menu": { "countdown-duration-description": "Legen Sie fest, wie lange der Countdown-Timer vor der Ausführung von Energieaktionen dauert.", "countdown-duration-label": "Countdown-Dauer", @@ -1609,11 +1563,9 @@ "refresh-wallhaven": "Wallhaven-Ergebnisse aktualisieren", "refresh-wallpaper-list": "Hintergrundbild-Liste aktualisieren", "remove-widget": "Widget entfernen", - "screen-recorder-not-installed": "Bildschirmrekorder (nicht installiert)", "search-close": "Suche schließen", "session-menu": "Sitzungsmenü", "show-all-devices": "Alle Geräte anzeigen", - "stop-screen-recording": "Bildschirmrekorder", "switch-to-dark-mode": "Dunkler Modus", "switch-to-light-mode": "Heller Modus", "unmute": "Stummschaltung aufheben", diff --git a/Assets/Translations/en.json b/Assets/Translations/en.json index 02700308b..e419f5217 100644 --- a/Assets/Translations/en.json +++ b/Assets/Translations/en.json @@ -464,9 +464,6 @@ "tooltip-action": "Power Profile", "tooltip-disabled": "Install power-profiles-daemon to use power profiles" }, - "screen-recorder": { - "label-stopped": "Record" - }, "wifi": { "label-disconnected": "Wi-Fi disconnected", "label-ethernet": "Ethernet" @@ -573,20 +570,6 @@ "quick-settings-style-modern": "Modern" }, "frame-rates-fps": "{fps} FPS", - "screen-recording": { - "audio-sources-both": "System output + microphone input", - "audio-sources-microphone-input": "Microphone input", - "audio-sources-none": "No audio", - "audio-sources-system-output": "System output", - "color-range-full": "Full", - "color-range-limited": "Limited", - "quality-high": "High", - "quality-medium": "Medium", - "quality-ultra": "Ultra", - "quality-very-high": "Very high", - "sources-portal": "Portal", - "sources-screen": "Screen" - }, "scrolling-modes": { "always": "Scroll always", "hover": "Scroll on hover", @@ -1220,35 +1203,6 @@ "region": { "title": "Region" }, - "screen-recorder": { - "audio-audio-codec-description": "Opus is recommended for best performance and smallest audio size.", - "audio-audio-codec-label": "Audio codec", - "audio-audio-source-description": "Audio source to capture during recording.", - "audio-audio-source-label": "Audio source", - "audio-desc": "Configure audio recording options.", - "audio-title": "Audio settings", - "general-copy-to-clipboard-description": "Copy the file to clipboard after recording finishes.", - "general-copy-to-clipboard-label": "Copy to clipboard", - "general-desc": "Manage screen recording output and content.", - "general-output-folder-description": "Folder where screen recordings will be saved.", - "general-output-folder-label": "Output folder", - "general-select-output-folder": "Select output folder", - "general-show-cursor-description": "Record mouse cursor in the video.", - "general-show-cursor-label": "Show cursor", - "general-title": "General settings", - "title": "Screen Recorder", - "video-color-range-description": "Limited is recommended for better compatibility.", - "video-color-range-label": "Color range", - "video-desc": "Configure video recording options.", - "video-frame-rate-description": "Target frame rate for screen recordings.", - "video-title": "Video settings", - "video-video-codec-description": "h264 is the most common codec.", - "video-video-codec-label": "Video codec", - "video-video-quality-description": "Higher quality results in larger file sizes.", - "video-video-quality-label": "Video quality", - "video-video-source-description": "Portal is recommended, if you get artifacts try Screen.", - "video-video-source-label": "Video source" - }, "session-menu": { "countdown-duration-description": "Set how long the countdown timer lasts before executing power actions.", "countdown-duration-label": "Countdown duration", @@ -1609,11 +1563,9 @@ "refresh-wallhaven": "Refresh Wallhaven results", "refresh-wallpaper-list": "Refresh wallpaper list", "remove-widget": "Remove widget", - "screen-recorder-not-installed": "Screen recorder (not installed)", "search-close": "Close search", "session-menu": "Session menu", "show-all-devices": "Show all devices", - "stop-screen-recording": "Screen recorder", "switch-to-dark-mode": "Dark Mode", "switch-to-light-mode": "Light Mode", "unmute": "Unmute", diff --git a/Assets/Translations/es.json b/Assets/Translations/es.json index 9365f6185..02750a5d1 100644 --- a/Assets/Translations/es.json +++ b/Assets/Translations/es.json @@ -464,9 +464,6 @@ "tooltip-action": "Perfil de energía", "tooltip-disabled": "Instala power-profiles-daemon para usar perfiles de energía" }, - "screen-recorder": { - "label-stopped": "Grabar" - }, "wifi": { "label-disconnected": "Wi-Fi desconectado", "label-ethernet": "Ethernet" @@ -573,20 +570,6 @@ "quick-settings-style-modern": "Moderno" }, "frame-rates-fps": "{fps} FPS", - "screen-recording": { - "audio-sources-both": "Salida del sistema + entrada del micrófono", - "audio-sources-microphone-input": "Entrada del micrófono", - "audio-sources-none": "No audio", - "audio-sources-system-output": "Salida del sistema", - "color-range-full": "Completo", - "color-range-limited": "Limitado", - "quality-high": "Alta", - "quality-medium": "Media", - "quality-ultra": "Ultra", - "quality-very-high": "Muy alta", - "sources-portal": "Portal", - "sources-screen": "Pantalla" - }, "scrolling-modes": { "always": "Desplazar siempre", "hover": "Desplazar al pasar", @@ -1220,35 +1203,6 @@ "region": { "title": "Región" }, - "screen-recorder": { - "audio-audio-codec-description": "Se recomienda Opus para el mejor rendimiento y el menor tamaño de audio.", - "audio-audio-codec-label": "Códec de audio", - "audio-audio-source-description": "Fuente de audio a capturar durante la grabación.", - "audio-audio-source-label": "Fuente de audio", - "audio-desc": "Configura las opciones de grabación de audio.", - "audio-title": "Configuración de audio", - "general-copy-to-clipboard-description": "Copiar el archivo al portapapeles después de que termine la grabación.", - "general-copy-to-clipboard-label": "Copiar al portapapeles", - "general-desc": "Gestiona la salida y el contenido de la grabación de pantalla.", - "general-output-folder-description": "Carpeta donde se guardarán las grabaciones de pantalla.", - "general-output-folder-label": "Carpeta de salida", - "general-select-output-folder": "Seleccionar carpeta de salida", - "general-show-cursor-description": "Grabar el cursor del ratón en el video.", - "general-show-cursor-label": "Mostrar cursor", - "general-title": "Configuración general", - "title": "Grabadora de pantalla", - "video-color-range-description": "Se recomienda limitado para una mejor compatibilidad.", - "video-color-range-label": "Rango de color", - "video-desc": "Configura las opciones de grabación de video.", - "video-frame-rate-description": "Tasa de fotogramas objetivo para las grabaciones de pantalla.", - "video-title": "Configuración de video", - "video-video-codec-description": "h264 es el códec más común.", - "video-video-codec-label": "Códec de video", - "video-video-quality-description": "Una mayor calidad resulta en archivos de mayor tamaño.", - "video-video-quality-label": "Calidad de video", - "video-video-source-description": "Se recomienda Portal; si aparecen artefactos, prueba Screen.", - "video-video-source-label": "Fuente de video" - }, "session-menu": { "countdown-duration-description": "Establecer cuánto tiempo dura el temporizador de cuenta regresiva antes de ejecutar acciones de energía.", "countdown-duration-label": "Duración de la cuenta regresiva", @@ -1609,11 +1563,9 @@ "refresh-wallhaven": "Actualizar resultados de Wallhaven", "refresh-wallpaper-list": "Actualizar lista de fondos de pantalla", "remove-widget": "Eliminar widget", - "screen-recorder-not-installed": "Grabadora de pantalla (no instalada)", "search-close": "Cerrar búsqueda", "session-menu": "Menú de sesión", "show-all-devices": "Mostrar todos los dispositivos", - "stop-screen-recording": "Grabadora de pantalla", "switch-to-dark-mode": "Modo oscuro", "switch-to-light-mode": "Modo claro", "unmute": "Activar el audio", diff --git a/Assets/Translations/fr.json b/Assets/Translations/fr.json index ca08d13d9..c3cb5a6c2 100644 --- a/Assets/Translations/fr.json +++ b/Assets/Translations/fr.json @@ -464,9 +464,6 @@ "tooltip-action": "Profil d'alimentation", "tooltip-disabled": "Installez power-profiles-daemon pour utiliser les profils d'alimentation" }, - "screen-recorder": { - "label-stopped": "Enregistrer" - }, "wifi": { "label-disconnected": "Wi-Fi déconnecté", "label-ethernet": "Ethernet" @@ -573,20 +570,6 @@ "quick-settings-style-modern": "Moderne" }, "frame-rates-fps": "{fps} FPS", - "screen-recording": { - "audio-sources-both": "Sortie système + entrée microphone", - "audio-sources-microphone-input": "Entrée microphone", - "audio-sources-none": "Pas d'audio", - "audio-sources-system-output": "Sortie système", - "color-range-full": "Complète", - "color-range-limited": "Limitée", - "quality-high": "Haute", - "quality-medium": "Moyenne", - "quality-ultra": "Ultra", - "quality-very-high": "Très haute", - "sources-portal": "Portail", - "sources-screen": "Écran" - }, "scrolling-modes": { "always": "Défiler toujours", "hover": "Défiler au survol", @@ -1220,35 +1203,6 @@ "region": { "title": "Région" }, - "screen-recorder": { - "audio-audio-codec-description": "Opus est recommandé pour de meilleures performances et une taille audio minimale.", - "audio-audio-codec-label": "Codec audio", - "audio-audio-source-description": "Source audio à capturer pendant l'enregistrement.", - "audio-audio-source-label": "Source audio", - "audio-desc": "Configurez les options d'enregistrement audio.", - "audio-title": "Paramètres audio", - "general-copy-to-clipboard-description": "Copier le fichier dans le presse-papiers une fois l'enregistrement terminé.", - "general-copy-to-clipboard-label": "Copier dans le presse-papiers", - "general-desc": "Gérez la sortie et le contenu de l'enregistrement d'écran.", - "general-output-folder-description": "Dossier où les enregistrements d'écran seront sauvegardés.", - "general-output-folder-label": "Dossier de sortie", - "general-select-output-folder": "Sélectionner le dossier de sortie", - "general-show-cursor-description": "Enregistrez le curseur de la souris dans la vidéo.", - "general-show-cursor-label": "Afficher le curseur", - "general-title": "Paramètres généraux", - "title": "Enregistreur d'écran", - "video-color-range-description": "Limitée est recommandée pour une meilleure compatibilité.", - "video-color-range-label": "Gamme de couleurs", - "video-desc": "Configurez les options d'enregistrement vidéo.", - "video-frame-rate-description": "Fréquence d'images cible pour les enregistrements d'écran.", - "video-title": "Paramètres vidéo", - "video-video-codec-description": "h264 est le codec le plus courant.", - "video-video-codec-label": "Codec vidéo", - "video-video-quality-description": "Une qualité supérieure entraîne des fichiers de plus grande taille.", - "video-video-quality-label": "Qualité vidéo", - "video-video-source-description": "Portail est recommandé, si vous obtenez des artefacts, essayez Écran.", - "video-video-source-label": "Source vidéo" - }, "session-menu": { "countdown-duration-description": "Définir la durée du compte à rebours avant d'exécuter les actions d'alimentation.", "countdown-duration-label": "Durée du compte à rebours", @@ -1609,11 +1563,9 @@ "refresh-wallhaven": "Actualiser les résultats de Wallhaven", "refresh-wallpaper-list": "Actualiser la liste des fonds d'écran", "remove-widget": "Supprimer le widget", - "screen-recorder-not-installed": "Enregistreur d'écran (non installé)", "search-close": "Fermer la recherche", "session-menu": "Menu de session", "show-all-devices": "Afficher tous les appareils", - "stop-screen-recording": "Enregistreur d'écran", "switch-to-dark-mode": "Mode sombre", "switch-to-light-mode": "Mode clair", "unmute": "Réactiver le micro", diff --git a/Assets/Translations/hu.json b/Assets/Translations/hu.json index 7e8488d04..6703259c9 100644 --- a/Assets/Translations/hu.json +++ b/Assets/Translations/hu.json @@ -464,9 +464,6 @@ "tooltip-action": "Energiaprofil", "tooltip-disabled": "Telepítse a power-profiles-daemon-t az energiaprofilok használatához" }, - "screen-recorder": { - "label-stopped": "Felvétel" - }, "wifi": { "label-disconnected": "Wi-Fi leválasztva", "label-ethernet": "Ethernet" @@ -573,20 +570,6 @@ "quick-settings-style-modern": "Modern" }, "frame-rates-fps": "{fps} FPS", - "screen-recording": { - "audio-sources-both": "Rendszerkimenet + mikrofonbemenet", - "audio-sources-microphone-input": "Mikrofonbemenet", - "audio-sources-none": "No audio", - "audio-sources-system-output": "Rendszerkimenet", - "color-range-full": "Teljes", - "color-range-limited": "Korlátozott", - "quality-high": "Magas", - "quality-medium": "Közepes", - "quality-ultra": "Ultra", - "quality-very-high": "Nagyon magas", - "sources-portal": "Portál", - "sources-screen": "Képernyő" - }, "scrolling-modes": { "always": "Mindig görgetés", "hover": "Görgetés rámutatáskor", @@ -1220,35 +1203,6 @@ "region": { "title": "Régió" }, - "screen-recorder": { - "audio-audio-codec-description": "Az Opus ajánlott a legjobb teljesítmény és a legkisebb hangméret érdekében.", - "audio-audio-codec-label": "Hang kodek", - "audio-audio-source-description": "Rögzítés során rögzítendő hangforrás.", - "audio-audio-source-label": "Hangforrás", - "audio-desc": "Hangrögzítési beállítások konfigurálása.", - "audio-title": "Hangbeállítások", - "general-copy-to-clipboard-description": "A felvétel befejezése után másold a fájlt a vágólapra.", - "general-copy-to-clipboard-label": "Másolás a vágólapra", - "general-desc": "Képernyőfelvétel kimenetének és tartalmának kezelése.", - "general-output-folder-description": "Mappa, ahová a képernyőfelvételek mentésre kerülnek.", - "general-output-folder-label": "Kimeneti mappa", - "general-select-output-folder": "Kimeneti mappa kiválasztása", - "general-show-cursor-description": "Egérmutató rögzítése a videóban.", - "general-show-cursor-label": "Mutató megjelenítése", - "general-title": "Általános beállítások", - "title": "Képernyőfelvevő", - "video-color-range-description": "A korlátozott ajánlott a jobb kompatibilitás érdekében.", - "video-color-range-label": "Színtartomány", - "video-desc": "Videórögzítési beállítások konfigurálása.", - "video-frame-rate-description": "Cél képkockasebesség a képernyőfelvételekhez.", - "video-title": "Videóbeállítások", - "video-video-codec-description": "A h264 a leggyakoribb kodek.", - "video-video-codec-label": "Videó kodek", - "video-video-quality-description": "A jobb minőség nagyobb fájlméreteket eredményez.", - "video-video-quality-label": "Videó minősége", - "video-video-source-description": "A Portal ajánlott, ha hibákat tapasztal, próbálja meg a Képernyőt.", - "video-video-source-label": "Videóforrás" - }, "session-menu": { "countdown-duration-description": "Állítsa be, mennyi ideig tart a visszaszámlálás az energiagazdálkodási műveletek végrehajtása előtt.", "countdown-duration-label": "Visszaszámlálás időtartama", @@ -1609,11 +1563,9 @@ "refresh-wallhaven": "Wallhaven eredmények frissítése", "refresh-wallpaper-list": "Háttérkép lista frissítése", "remove-widget": "Widget eltávolítása", - "screen-recorder-not-installed": "Képernyőfelvevő (nincs telepítve)", "search-close": "Keresés bezárása", "session-menu": "Munkamenet menü", "show-all-devices": "Összes eszköz megjelenítése", - "stop-screen-recording": "Képernyőfelvevő", "switch-to-dark-mode": "Sötét mód", "switch-to-light-mode": "Világos mód", "unmute": "Némítás feloldása", diff --git a/Assets/Translations/ja.json b/Assets/Translations/ja.json index b11a3bd55..b1838c6ba 100644 --- a/Assets/Translations/ja.json +++ b/Assets/Translations/ja.json @@ -464,9 +464,6 @@ "tooltip-action": "電源プロファイル", "tooltip-disabled": "電源プロファイルを使用するには power-profiles-daemon をインストールしてください" }, - "screen-recorder": { - "label-stopped": "録画" - }, "wifi": { "label-disconnected": "Wi-Fi 未接続", "label-ethernet": "イーサネット" @@ -573,20 +570,6 @@ "quick-settings-style-modern": "モダン" }, "frame-rates-fps": "{fps} FPS", - "screen-recording": { - "audio-sources-both": "システム出力 + マイク入力", - "audio-sources-microphone-input": "マイク入力", - "audio-sources-none": "No audio", - "audio-sources-system-output": "システム出力", - "color-range-full": "フル", - "color-range-limited": "リミテッド", - "quality-high": "高", - "quality-medium": "標準", - "quality-ultra": "ウルトラ", - "quality-very-high": "最高", - "sources-portal": "ポータル", - "sources-screen": "スクリーン" - }, "scrolling-modes": { "always": "常にスクロール", "hover": "ホバー時にスクロール", @@ -1220,35 +1203,6 @@ "region": { "title": "地域" }, - "screen-recorder": { - "audio-audio-codec-description": "最高のパフォーマンスと最小のファイルサイズを実現する Opus を推奨します。", - "audio-audio-codec-label": "オーディオコーデック", - "audio-audio-source-description": "録画中にキャプチャする音声ソース。", - "audio-audio-source-label": "オーディオソース", - "audio-desc": "音声録音のオプションを設定します。", - "audio-title": "オーディオ設定", - "general-copy-to-clipboard-description": "録画終了後、ファイルをクリップボードにコピーします。", - "general-copy-to-clipboard-label": "クリップボードにコピー", - "general-desc": "画面録画の出力先や内容を管理します。", - "general-output-folder-description": "画面録画ファイルを保存するフォルダ。", - "general-output-folder-label": "出力フォルダ", - "general-select-output-folder": "出力フォルダを選択", - "general-show-cursor-description": "動画にマウスカーソルを含めて録画します。", - "general-show-cursor-label": "カーソルを表示", - "general-title": "一般", - "title": "スクリーンレコーダー", - "video-color-range-description": "互換性を高めるため、リミテッドを推奨します。", - "video-color-range-label": "カラーレンジ", - "video-desc": "映像録画のオプションを設定します。", - "video-frame-rate-description": "画面録画のターゲットフレームレート。", - "video-title": "ビデオ設定", - "video-video-codec-description": "H264 が最も一般的なコーデックです。", - "video-video-codec-label": "ビデオコーデック", - "video-video-quality-description": "品質を高くすると、ファイルサイズが大きくなります。", - "video-video-quality-label": "ビデオ品質", - "video-video-source-description": "ポータルを推奨します。映像が乱れる場合はスクリーンを試してください。", - "video-video-source-label": "ビデオソース" - }, "session-menu": { "countdown-duration-description": "カウントダウンタイマーが電源操作を実行するまでの時間を設定します。", "countdown-duration-label": "カウントダウンの時間", @@ -1609,11 +1563,9 @@ "refresh-wallhaven": "Wallhaven の検索結果を更新", "refresh-wallpaper-list": "壁紙リストを更新", "remove-widget": "ウィジェットを削除", - "screen-recorder-not-installed": "スクリーンレコーダー(未インストール)", "search-close": "検索を閉じる", "session-menu": "セッションメニュー", "show-all-devices": "すべてのデバイスを表示", - "stop-screen-recording": "画面録画", "switch-to-dark-mode": "ダークモード", "switch-to-light-mode": "ライトモード", "unmute": "ミュート解除", diff --git a/Assets/Translations/ku.json b/Assets/Translations/ku.json index 4ffa2fbcd..814977ab8 100644 --- a/Assets/Translations/ku.json +++ b/Assets/Translations/ku.json @@ -464,9 +464,6 @@ "tooltip-action": "Power profile", "tooltip-disabled": "Daemonê power-profiles-daemon saz bike da ku profîlên hêzê bikar bîne" }, - "screen-recorder": { - "label-stopped": "Tomar bike" - }, "wifi": { "label-disconnected": "Wi-Fi qut bû.", "label-ethernet": "Ethernet" @@ -573,20 +570,6 @@ "quick-settings-style-modern": "Nûjen" }, "frame-rates-fps": "{fps} FPS", - "screen-recording": { - "audio-sources-both": "Derana pergalê + ketana mîkrofonê", - "audio-sources-microphone-input": "Ketana mîkrofonê", - "audio-sources-none": "Bê deng.", - "audio-sources-system-output": "Derana pergal", - "color-range-full": "Tijî", - "color-range-limited": "Sînorkirî", - "quality-high": "Bilind", - "quality-medium": "Navîn", - "quality-ultra": "Ultra", - "quality-very-high": "Pir bilind", - "sources-portal": "Dergeh", - "sources-screen": "Dîmender" - }, "scrolling-modes": { "always": "Her tim bigere", "hover": "Li ser gerandinê bigere", @@ -1220,35 +1203,6 @@ "region": { "title": "Herêm" }, - "screen-recorder": { - "audio-audio-codec-description": "ئۆپووس بۆ باشترین ئەنجام و بچووکترین قەبارەی دەنگی پێشنیار دەکرێت.", - "audio-audio-codec-label": "Kodkirina dengê", - "audio-audio-source-description": "Çavkaniya dengî ya ku di dema tomarkirinê de were girtin.", - "audio-audio-source-label": "Çavkaniya dengê", - "audio-desc": "Vebijarkên tomarkirina dengî saz bike.", - "audio-title": "Sazkariyên dengê", - "general-copy-to-clipboard-description": "Piştî qedandina tomarkirinê pelê kopî bike clipboardê.", - "general-copy-to-clipboard-label": "Kopî bo clipboardê", - "general-desc": "Derana tomarkirina dîmenderê û naverokê bi rê ve bibe.", - "general-output-folder-description": "Pelda ku dê tomarên dîmenderê lê bên hilanîn.", - "general-output-folder-label": "Peldanka deranê", - "general-select-output-folder": "Pelda qeydê hilbijêre", - "general-show-cursor-description": "Di vîdyoyê de nîşana mişkê tomar bike.", - "general-show-cursor-label": "Nîşankar nîşan bide", - "general-title": "Sazkariyên giştî", - "title": "Tomarkarê dîmenderê", - "video-color-range-description": "Ji bo çêtir lihevhatin, sînorkirî tê pêşniyarkirin.", - "video-color-range-label": "Rêjeya rengê", - "video-desc": "Vebijarkên tomarkirina vîdyoyê saz bike.", - "video-frame-rate-description": "ڕێژەی چوارچێوەی ئامانج بۆ تۆمارکردنی شاشە.", - "video-title": "Sazkariyên vîdyoyê", - "video-video-codec-description": "h264 kodeka herî berbelav e.", - "video-video-codec-label": "Kodkirinê vîdyoyê", - "video-video-quality-description": "Bilindtir kalîte dibe sedema mezinahiya pelên.", - "video-video-quality-label": "Kalîteya vîdyoyê", - "video-video-source-description": "Gerîn tê pêşniyarkirin, eger te artefakt dîtin, Screen biceribîne.", - "video-video-source-label": "Çavkaniya vîdyoyê" - }, "session-menu": { "countdown-duration-description": "Demjimêra heta pêkanîna kiryarên hêzê destnîşan bike.", "countdown-duration-label": "Dirêjahiya jimartinê berjêr", @@ -1609,11 +1563,9 @@ "refresh-wallhaven": "Nûkirina encamên Wallhavenê", "refresh-wallpaper-list": "Nûkirina lîsteya dîwêr", "remove-widget": "Rakire amûrekê", - "screen-recorder-not-installed": "Tomarkarê dîmenderê (nehatiye sazkirin)", "search-close": "Lêgerînê bigire", "session-menu": "Menuya danişînê", "show-all-devices": "Hemû amûran nîşan bide", - "stop-screen-recording": "Tomarkarê dîmenderê", "switch-to-dark-mode": "Awaya tarî", "switch-to-light-mode": "Awaya ronahî", "unmute": "Bêdeng neke", diff --git a/Assets/Translations/nl.json b/Assets/Translations/nl.json index 92e9436d2..8eb50b1c2 100644 --- a/Assets/Translations/nl.json +++ b/Assets/Translations/nl.json @@ -464,9 +464,6 @@ "tooltip-action": "Energieprofiel", "tooltip-disabled": "Installeer power-profiles-daemon om energieprofielen te gebruiken" }, - "screen-recorder": { - "label-stopped": "Opnemen" - }, "wifi": { "label-disconnected": "Wi-Fi niet verbonden", "label-ethernet": "Ethernet" @@ -573,20 +570,6 @@ "quick-settings-style-modern": "Modern" }, "frame-rates-fps": "{fps} FPS", - "screen-recording": { - "audio-sources-both": "Systeemuitvoer + microfooninvoer", - "audio-sources-microphone-input": "Microfooninvoer", - "audio-sources-none": "Geen audio", - "audio-sources-system-output": "Systeemuitvoer", - "color-range-full": "Volledig", - "color-range-limited": "Beperkt", - "quality-high": "Hoog", - "quality-medium": "Gemiddeld", - "quality-ultra": "Ultra", - "quality-very-high": "Zeer hoog", - "sources-portal": "Portal", - "sources-screen": "Scherm" - }, "scrolling-modes": { "always": "Altijd scrollen", "hover": "Scrollen bij hover", @@ -1220,35 +1203,6 @@ "region": { "title": "Regio" }, - "screen-recorder": { - "audio-audio-codec-description": "Opus wordt aanbevolen voor de beste prestaties en de kleinste audiogrootte.", - "audio-audio-codec-label": "Audiocodec", - "audio-audio-source-description": "Audiobron om tijdens de opname vast te leggen.", - "audio-audio-source-label": "Audiobron", - "audio-desc": "Configureer opties voor audio-opname.", - "audio-title": "Audio-instellingen", - "general-copy-to-clipboard-description": "Kopieer het bestand naar het klembord nadat de opname is voltooid.", - "general-copy-to-clipboard-label": "Kopiëren naar klembord", - "general-desc": "Beheer schermopname-uitvoer en inhoud.", - "general-output-folder-description": "Map waarin schermopnamen worden opgeslagen.", - "general-output-folder-label": "Uitvoermap", - "general-select-output-folder": "Uitvoermap selecteren", - "general-show-cursor-description": "Neem de muiscursor op in de video.", - "general-show-cursor-label": "Cursor tonen", - "general-title": "Algemene instellingen", - "title": "Schermrecorder", - "video-color-range-description": "Beperkt wordt aanbevolen voor betere compatibiliteit.", - "video-color-range-label": "Kleurbereik", - "video-desc": "Configureer opties voor video-opname.", - "video-frame-rate-description": "Doelframesnelheid voor schermopnamen.", - "video-title": "Video-instellingen", - "video-video-codec-description": "h264 is de meest gebruikte codec.", - "video-video-codec-label": "Videocodec", - "video-video-quality-description": "Hogere kwaliteit resulteert in grotere bestanden.", - "video-video-quality-label": "Videokwaliteit", - "video-video-source-description": "Portal wordt aanbevolen; als je artefacten krijgt, probeer dan Screen.", - "video-video-source-label": "Videobron" - }, "session-menu": { "countdown-duration-description": "Stel in hoe lang de afteltimer duurt voordat energieacties worden uitgevoerd.", "countdown-duration-label": "Afteltimer duur", @@ -1609,11 +1563,9 @@ "refresh-wallhaven": "Wallhaven-resultaten verversen", "refresh-wallpaper-list": "Achtergrondlijst verversen", "remove-widget": "Widget verwijderen", - "screen-recorder-not-installed": "Schermrecorder (niet geïnstalleerd)", "search-close": "Zoeken sluiten", "session-menu": "Sessiemenu", "show-all-devices": "Toon alle apparaten", - "stop-screen-recording": "Schermrecorder", "switch-to-dark-mode": "Donkere modus", "switch-to-light-mode": "Lichte modus", "unmute": "Dempen opheffen", diff --git a/Assets/Translations/pl.json b/Assets/Translations/pl.json index 158e80621..d878641ab 100644 --- a/Assets/Translations/pl.json +++ b/Assets/Translations/pl.json @@ -464,9 +464,6 @@ "tooltip-action": "Profil zasilania", "tooltip-disabled": "Zainstaluj power-profiles-daemon, aby korzystać z profili zasilania" }, - "screen-recorder": { - "label-stopped": "Nagraj" - }, "wifi": { "label-disconnected": "Wi-Fi rozłączone", "label-ethernet": "Ethernet" @@ -573,20 +570,6 @@ "quick-settings-style-modern": "Nowoczesny" }, "frame-rates-fps": "{fps} FPS", - "screen-recording": { - "audio-sources-both": "Wyjście systemowe + mikrofon", - "audio-sources-microphone-input": "Wejście mikrofonu", - "audio-sources-none": "Brak dźwięku.", - "audio-sources-system-output": "Wyjście systemowe", - "color-range-full": "Pełny", - "color-range-limited": "Ograniczony", - "quality-high": "Wysoka", - "quality-medium": "Średnia", - "quality-ultra": "Ultra", - "quality-very-high": "Bardzo wysoka", - "sources-portal": "Portal", - "sources-screen": "Ekran" - }, "scrolling-modes": { "always": "Zawsze przewijaj", "hover": "Przewijaj po najechaniu", @@ -1220,35 +1203,6 @@ "region": { "title": "Region" }, - "screen-recorder": { - "audio-audio-codec-description": "Opus jest zalecany dla najlepszej wydajności i najmniejszego rozmiaru pliku.", - "audio-audio-codec-label": "Kodek audio", - "audio-audio-source-description": "Źródło dźwięku do przechwycenia podczas nagrywania.", - "audio-audio-source-label": "Źródło audio", - "audio-desc": "Konfiguruj opcje nagrywania dźwięku.", - "audio-title": "Ustawienia audio", - "general-copy-to-clipboard-description": "Skopiuj plik do schowka po zakończeniu nagrywania.", - "general-copy-to-clipboard-label": "Kopiuj do schowka", - "general-desc": "Zarządzaj wyjściem i zawartością nagrań ekranu.", - "general-output-folder-description": "Folder, w którym będą zapisywane nagrania.", - "general-output-folder-label": "Folder wyjściowy", - "general-select-output-folder": "Wybierz folder wyjściowy", - "general-show-cursor-description": "Nagrywaj kursor myszy na wideo.", - "general-show-cursor-label": "Pokaż kursor", - "general-title": "Ustawienia ogólne", - "title": "Nagrywanie ekranu", - "video-color-range-description": "Zakres ograniczony (Limited) jest zalecany dla lepszej kompatybilności.", - "video-color-range-label": "Zakres kolorów", - "video-desc": "Konfiguruj opcje nagrywania wideo.", - "video-frame-rate-description": "Docelowa liczba klatek na sekundę (FPS).", - "video-title": "Ustawienia wideo", - "video-video-codec-description": "h264 to najczęściej spotykany kodek.", - "video-video-codec-label": "Kodek wideo", - "video-video-quality-description": "Wyższa jakość skutkuje większym rozmiarem plików.", - "video-video-quality-label": "Jakość wideo", - "video-video-source-description": "Zalecany jest Portal. Jeśli pojawiają się błędy, spróbuj Ekran (Screen).", - "video-video-source-label": "Źródło wideo" - }, "session-menu": { "countdown-duration-description": "Ustaw czas odliczania przed wykonaniem akcji zasilania.", "countdown-duration-label": "Czas trwania odliczania", @@ -1609,11 +1563,9 @@ "refresh-wallhaven": "Odśwież wyniki Wallhaven", "refresh-wallpaper-list": "Odśwież listę tapet", "remove-widget": "Usuń widżet", - "screen-recorder-not-installed": "Nagrywanie ekranu (niezainstalowane)", "search-close": "Zamknij wyszukiwanie", "session-menu": "Menu sesji", "show-all-devices": "Pokaż wszystkie urządzenia.", - "stop-screen-recording": "Nagrywanie ekranu", "switch-to-dark-mode": "Tryb ciemny", "switch-to-light-mode": "Tryb jasny", "unmute": "Wyłącz wyciszenie", diff --git a/Assets/Translations/pt.json b/Assets/Translations/pt.json index c2ddf926d..631f8c55c 100644 --- a/Assets/Translations/pt.json +++ b/Assets/Translations/pt.json @@ -464,9 +464,6 @@ "tooltip-action": "Perfil de energia", "tooltip-disabled": "Instale power-profiles-daemon para usar perfis de energia" }, - "screen-recorder": { - "label-stopped": "Gravar" - }, "wifi": { "label-disconnected": "Wi-Fi desconectado", "label-ethernet": "Ethernet" @@ -573,20 +570,6 @@ "quick-settings-style-modern": "Moderno" }, "frame-rates-fps": "{fps} FPS", - "screen-recording": { - "audio-sources-both": "Saída do sistema + entrada do microfone", - "audio-sources-microphone-input": "Entrada do microfone", - "audio-sources-none": "No audio", - "audio-sources-system-output": "Saída do sistema", - "color-range-full": "Completa", - "color-range-limited": "Limitada", - "quality-high": "Alta", - "quality-medium": "Média", - "quality-ultra": "Ultra", - "quality-very-high": "Muito alta", - "sources-portal": "Portal", - "sources-screen": "Tela" - }, "scrolling-modes": { "always": "Rolar sempre", "hover": "Rolar ao passar o mouse", @@ -1220,35 +1203,6 @@ "region": { "title": "Região" }, - "screen-recorder": { - "audio-audio-codec-description": "Opus é recomendado para melhor desempenho e menor tamanho de áudio.", - "audio-audio-codec-label": "Codec de áudio", - "audio-audio-source-description": "Fonte de áudio a ser capturada durante a gravação.", - "audio-audio-source-label": "Fonte de áudio", - "audio-desc": "Configure as opções de gravação de áudio.", - "audio-title": "Configurações de áudio", - "general-copy-to-clipboard-description": "Copiar o arquivo para a área de transferência após a gravação terminar.", - "general-copy-to-clipboard-label": "Copiar para a área de transferência", - "general-desc": "Gerencie a saída e o conteúdo da gravação de tela.", - "general-output-folder-description": "Pasta onde as gravações de tela serão salvas.", - "general-output-folder-label": "Pasta de saída", - "general-select-output-folder": "Selecionar pasta de saída", - "general-show-cursor-description": "Grava o cursor do mouse no vídeo.", - "general-show-cursor-label": "Mostrar cursor", - "general-title": "Configurações gerais", - "title": "Gravador de tela", - "video-color-range-description": "Limitada é recomendada para melhor compatibilidade.", - "video-color-range-label": "Gama de cores", - "video-desc": "Configure as opções de gravação de vídeo.", - "video-frame-rate-description": "Taxa de quadros alvo para gravações de tela.", - "video-title": "Configurações de vídeo", - "video-video-codec-description": "h264 é o codec mais comum.", - "video-video-codec-label": "Codec de vídeo", - "video-video-quality-description": "Qualidade mais alta resulta em arquivos maiores.", - "video-video-quality-label": "Qualidade de vídeo", - "video-video-source-description": "Portal é recomendado, se você tiver artefatos, tente Screen.", - "video-video-source-label": "Fonte de vídeo" - }, "session-menu": { "countdown-duration-description": "Definir por quanto tempo o temporizador de contagem regressiva dura antes de executar ações de energia.", "countdown-duration-label": "Duração da contagem regressiva", @@ -1609,11 +1563,9 @@ "refresh-wallhaven": "Atualizar resultados do Wallhaven", "refresh-wallpaper-list": "Atualizar lista de papéis de parede", "remove-widget": "Remover widget", - "screen-recorder-not-installed": "Gravador de tela (não instalado)", "search-close": "Fechar pesquisa", "session-menu": "Menu da Sessão", "show-all-devices": "Mostrar todos os dispositivos", - "stop-screen-recording": "Gravador de tela", "switch-to-dark-mode": "Modo escuro", "switch-to-light-mode": "Modo claro", "unmute": "Desativar o mudo", diff --git a/Assets/Translations/ru.json b/Assets/Translations/ru.json index 92b78729c..1a60b7e1a 100644 --- a/Assets/Translations/ru.json +++ b/Assets/Translations/ru.json @@ -464,9 +464,6 @@ "tooltip-action": "Профиль питания", "tooltip-disabled": "Установите power-profiles-daemon, чтобы использовать профили питания" }, - "screen-recorder": { - "label-stopped": "Записать" - }, "wifi": { "label-disconnected": "Wi-Fi отключен", "label-ethernet": "Ethernet" @@ -573,20 +570,6 @@ "quick-settings-style-modern": "Современный" }, "frame-rates-fps": "{fps} FPS", - "screen-recording": { - "audio-sources-both": "Системный вывод + ввод с микрофона", - "audio-sources-microphone-input": "Ввод с микрофона", - "audio-sources-none": "Нет звука", - "audio-sources-system-output": "Системный вывод", - "color-range-full": "Полный", - "color-range-limited": "Ограниченный", - "quality-high": "Высокое", - "quality-medium": "Среднее", - "quality-ultra": "Ультра", - "quality-very-high": "Очень высокое", - "sources-portal": "Портал", - "sources-screen": "Экран" - }, "scrolling-modes": { "always": "Всегда прокручивать", "hover": "Прокручивать при наведении", @@ -1220,35 +1203,6 @@ "region": { "title": "Регион" }, - "screen-recorder": { - "audio-audio-codec-description": "Opus рекомендуется для лучшей производительности и наименьшего размера аудио.", - "audio-audio-codec-label": "Аудиокодек", - "audio-audio-source-description": "Источник аудио для захвата во время записи.", - "audio-audio-source-label": "Источник аудио", - "audio-desc": "Настройка параметров записи аудио.", - "audio-title": "Настройки аудио", - "general-copy-to-clipboard-description": "Скопировать файл в буфер обмена после завершения записи.", - "general-copy-to-clipboard-label": "Скопировать в буфер обмена", - "general-desc": "Управление выводом и содержимым записи экрана.", - "general-output-folder-description": "Папка, в которую будут сохраняться записи экрана.", - "general-output-folder-label": "Выходная папка", - "general-select-output-folder": "Выбрать выходную папку", - "general-show-cursor-description": "Записывать курсор мыши в видео.", - "general-show-cursor-label": "Показывать курсор", - "general-title": "Общие настройки", - "title": "Запись экрана", - "video-color-range-description": "Ограниченный (Limited) рекомендуется для лучшей совместимости.", - "video-color-range-label": "Цветовой диапазон", - "video-desc": "Настройка параметров записи видео.", - "video-frame-rate-description": "Целевая частота кадров для записей экрана.", - "video-title": "Настройки видео", - "video-video-codec-description": "h264 — самый распространенный кодек.", - "video-video-codec-label": "Видеокодек", - "video-video-quality-description": "Более высокое качество приводит к большему размеру файла.", - "video-video-quality-label": "Качество видео", - "video-video-source-description": "Портал (Portal) рекомендуется, если появляются артефакты, попробуйте Экран (Screen).", - "video-video-source-label": "Источник видео" - }, "session-menu": { "countdown-duration-description": "Установить, как долго длится таймер обратного отсчета перед выполнением действий питания.", "countdown-duration-label": "Длительность обратного отсчета", @@ -1609,11 +1563,9 @@ "refresh-wallhaven": "Обновить результаты Wallhaven", "refresh-wallpaper-list": "Обновить список обоев", "remove-widget": "Удалить виджет", - "screen-recorder-not-installed": "Запись экрана (не установлена)", "search-close": "Закрыть поиск", "session-menu": "Меню сеанса", "show-all-devices": "Показать все устройства", - "stop-screen-recording": "Запись экрана", "switch-to-dark-mode": "Темный режим", "switch-to-light-mode": "Светлый режим", "unmute": "Включить звук", diff --git a/Assets/Translations/tr.json b/Assets/Translations/tr.json index 13a404121..8080e0cf8 100644 --- a/Assets/Translations/tr.json +++ b/Assets/Translations/tr.json @@ -464,9 +464,6 @@ "tooltip-action": "Güç profili", "tooltip-disabled": "Güç profillerini kullanmak için power-profiles-daemon kur" }, - "screen-recorder": { - "label-stopped": "Kaydet" - }, "wifi": { "label-disconnected": "Kablosuz Bağlantı Kesik", "label-ethernet": "Ethernet" @@ -573,20 +570,6 @@ "quick-settings-style-modern": "Modern" }, "frame-rates-fps": "{fps} FPS", - "screen-recording": { - "audio-sources-both": "Sistem çıktısı + mikrofon girişi", - "audio-sources-microphone-input": "Mikrofon girişi", - "audio-sources-none": "Ses yok.", - "audio-sources-system-output": "Sistem çıktısı", - "color-range-full": "Tam", - "color-range-limited": "Sınırlı", - "quality-high": "Yüksek", - "quality-medium": "Orta", - "quality-ultra": "Aşırı", - "quality-very-high": "Çok yüksek", - "sources-portal": "Portal", - "sources-screen": "Ekran" - }, "scrolling-modes": { "always": "Her zaman kaydır", "hover": "Üzerine gelince kaydır", @@ -1220,35 +1203,6 @@ "region": { "title": "Bölge" }, - "screen-recorder": { - "audio-audio-codec-description": "En iyi performans ve en küçük ses boyutu için Opus önerilir.", - "audio-audio-codec-label": "Ses çözücüsü", - "audio-audio-source-description": "Kayıt sırasında yakalanacak ses kaynağı.", - "audio-audio-source-label": "Ses kaynağı", - "audio-desc": "Ses kaydı seçeneklerini yapılandırın.", - "audio-title": "Ses ayarları", - "general-copy-to-clipboard-description": "Kaydı bitirdikten sonra dosyayı panoya kopyala.", - "general-copy-to-clipboard-label": "Panoya kopyala", - "general-desc": "Ekran kaydı çıktısını ve içeriğini yönetin.", - "general-output-folder-description": "Ekran kayıtlarının kaydedileceği klasör.", - "general-output-folder-label": "Çıktı klasörü", - "general-select-output-folder": "Çıktı klasörünü seç", - "general-show-cursor-description": "Görüntü fare imlecini kaydedin.", - "general-show-cursor-label": "İmleci göster", - "general-title": "Genel ayarlar", - "title": "Ekran kaydedici", - "video-color-range-description": "Daha iyi uyumluluk için Sınırlı önerilir.", - "video-color-range-label": "Renk aralığı", - "video-desc": "Görüntü kaydı seçeneklerini yapılandırın.", - "video-frame-rate-description": "Ekran kayıtları için hedef kare hızı.", - "video-title": "Görüntü ayarları", - "video-video-codec-description": "h264 en yaygın çözücüdür.", - "video-video-codec-label": "Görüntü çözücüsü", - "video-video-quality-description": "Daha yüksek kalite daha büyük dosya boyutları ile sonuçlanır.", - "video-video-quality-label": "Görüntü kalitesi", - "video-video-source-description": "Portal önerilir, eğer artefaktlar alırsanız Ekranı deneyin.", - "video-video-source-label": "Görüntü kaynağı" - }, "session-menu": { "countdown-duration-description": "Güç eylemlerini çalıştırmadan önce geri sayım zamanlayıcısının ne kadar süreceğini ayarlayın.", "countdown-duration-label": "Geri sayım süresi", @@ -1609,11 +1563,9 @@ "refresh-wallhaven": "Wallhaven sonuçlarını yenile", "refresh-wallpaper-list": "Duvar kâğıdı listesini yenile", "remove-widget": "Araç takımını kaldır", - "screen-recorder-not-installed": "Ekran kaydedici (yüklü değil)", "search-close": "Aramayı kapat", "session-menu": "Oturum Menüsü", "show-all-devices": "Tüm cihazları göster", - "stop-screen-recording": "Ekran kaydedici", "switch-to-dark-mode": "Koyu mod", "switch-to-light-mode": "Açık mod", "unmute": "Sessizliği aç", diff --git a/Assets/Translations/uk-UA.json b/Assets/Translations/uk-UA.json index 94fbc3790..40ec62d1b 100644 --- a/Assets/Translations/uk-UA.json +++ b/Assets/Translations/uk-UA.json @@ -464,9 +464,6 @@ "tooltip-action": "Профіль живлення", "tooltip-disabled": "Встановіть power-profiles-daemon для використання профілів живлення" }, - "screen-recorder": { - "label-stopped": "Запис" - }, "wifi": { "label-disconnected": "Wi-Fi відключено", "label-ethernet": "Ethernet" @@ -573,20 +570,6 @@ "quick-settings-style-modern": "Сучасний" }, "frame-rates-fps": "{fps} к/с", - "screen-recording": { - "audio-sources-both": "Системний вихід + вхід мікрофона", - "audio-sources-microphone-input": "Вхід мікрофона", - "audio-sources-none": "Немає аудіо", - "audio-sources-system-output": "Системний вихід", - "color-range-full": "Повний", - "color-range-limited": "Обмежений", - "quality-high": "Висока", - "quality-medium": "Середня", - "quality-ultra": "Ультра", - "quality-very-high": "Дуже висока", - "sources-portal": "Портал", - "sources-screen": "Екран" - }, "scrolling-modes": { "always": "Завжди прокручувати", "hover": "Прокручувати при наведенні", @@ -1220,35 +1203,6 @@ "region": { "title": "Регіон" }, - "screen-recorder": { - "audio-audio-codec-description": "Opus рекомендується для найкращої продуктивності та найменшого розміру аудіо.", - "audio-audio-codec-label": "Кодек аудіо", - "audio-audio-source-description": "Джерело аудіо для захоплення під час запису.", - "audio-audio-source-label": "Джерело аудіо", - "audio-desc": "Налаштуйте параметри запису аудіо.", - "audio-title": "Налаштування аудіо", - "general-copy-to-clipboard-description": "Скопіювати файл у буфер обміну після завершення запису.", - "general-copy-to-clipboard-label": "Скопіювати в буфер обміну", - "general-desc": "Керуйте виведенням та вмістом запису екрана.", - "general-output-folder-description": "Тека, де зберігатимуться записи екрана.", - "general-output-folder-label": "Тека виведення", - "general-select-output-folder": "Вибрати теку виведення", - "general-show-cursor-description": "Записувати курсор миші у відео.", - "general-show-cursor-label": "Показувати курсор", - "general-title": "Загальні налаштування", - "title": "Запис екрана", - "video-color-range-description": "Обмежений рекомендується для кращої сумісності.", - "video-color-range-label": "Діапазон кольорів", - "video-desc": "Налаштуйте параметри запису відео.", - "video-frame-rate-description": "Цільова частота кадрів для записів екрана.", - "video-title": "Налаштування відео", - "video-video-codec-description": "h264 є найпоширенішим кодеком.", - "video-video-codec-label": "Кодек відео", - "video-video-quality-description": "Вища якість призводить до більшого розміру файлів.", - "video-video-quality-label": "Якість відео", - "video-video-source-description": "Рекомендується Portal, якщо виникають артефакти, спробуйте Screen.", - "video-video-source-label": "Джерело відео" - }, "session-menu": { "countdown-duration-description": "Встановити, як довго триває таймер зворотного відліку перед виконанням дій живлення.", "countdown-duration-label": "Тривалість зворотного відліку", @@ -1609,11 +1563,9 @@ "refresh-wallhaven": "Оновити результати Wallhaven", "refresh-wallpaper-list": "Оновити список шпалер", "remove-widget": "Видалити віджет", - "screen-recorder-not-installed": "Запис екрана (не встановлено)", "search-close": "Закрити пошук", "session-menu": "Меню сеансу", "show-all-devices": "Показати всі пристрої", - "stop-screen-recording": "Запис екрана", "switch-to-dark-mode": "Темний режим", "switch-to-light-mode": "Світлий режим", "unmute": "Увімкнути звук", diff --git a/Assets/Translations/zh-CN.json b/Assets/Translations/zh-CN.json index 2815041ae..d6cf7d6ff 100644 --- a/Assets/Translations/zh-CN.json +++ b/Assets/Translations/zh-CN.json @@ -464,9 +464,6 @@ "tooltip-action": "电源模式", "tooltip-disabled": "安装 power-profiles-daemon 以使用电源模式" }, - "screen-recorder": { - "label-stopped": "录制" - }, "wifi": { "label-disconnected": "Wi-Fi 已断开", "label-ethernet": "以太网" @@ -573,20 +570,6 @@ "quick-settings-style-modern": "现代" }, "frame-rates-fps": "{fps} FPS", - "screen-recording": { - "audio-sources-both": "系统输出 + 麦克风输入", - "audio-sources-microphone-input": "麦克风输入", - "audio-sources-none": "无音频", - "audio-sources-system-output": "系统输出", - "color-range-full": "完全", - "color-range-limited": "有限", - "quality-high": "高", - "quality-medium": "中等", - "quality-ultra": "超高", - "quality-very-high": "很高", - "sources-portal": "Portal", - "sources-screen": "Screen" - }, "scrolling-modes": { "always": "始终滚动", "hover": "悬停时滚动", @@ -1220,35 +1203,6 @@ "region": { "title": "地区" }, - "screen-recorder": { - "audio-audio-codec-description": "推荐使用 Opus 以获得最佳性能和最小的音频大小。", - "audio-audio-codec-label": "音频编解码器", - "audio-audio-source-description": "录制期间要捕获的音频源。", - "audio-audio-source-label": "音频源", - "audio-desc": "配置音频录制选项。", - "audio-title": "音频设置", - "general-copy-to-clipboard-description": "录制完成后将文件复制到剪贴板。", - "general-copy-to-clipboard-label": "复制到剪贴板", - "general-desc": "管理屏幕录制输出和内容。", - "general-output-folder-description": "屏幕录制将保存的文件夹。", - "general-output-folder-label": "输出文件夹", - "general-select-output-folder": "选择输出文件夹", - "general-show-cursor-description": "在视频中录制鼠标光标。", - "general-show-cursor-label": "显示光标", - "general-title": "常规设置", - "title": "屏幕录制", - "video-color-range-description": "推荐使用 Limited 以获得更好的兼容性。", - "video-color-range-label": "颜色范围", - "video-desc": "配置视频录制选项。", - "video-frame-rate-description": "屏幕录制的目标帧率。", - "video-title": "视频设置", - "video-video-codec-description": "h264 是最常见的编解码器。", - "video-video-codec-label": "视频编解码器", - "video-video-quality-description": "更高的质量会导致更大的文件大小。", - "video-video-quality-label": "视频质量", - "video-video-source-description": "推荐使用 Portal,如果出现伪影请尝试 Screen。", - "video-video-source-label": "视频源" - }, "session-menu": { "countdown-duration-description": "设置倒计时计时器在执行电源操作之前持续多长时间。", "countdown-duration-label": "倒计时持续时间", @@ -1609,11 +1563,9 @@ "refresh-wallhaven": "刷新 Wallhaven 结果", "refresh-wallpaper-list": "刷新壁纸列表", "remove-widget": "移除小部件", - "screen-recorder-not-installed": "屏幕录制器(未安装)", "search-close": "关闭搜索", "session-menu": "会话菜单", "show-all-devices": "显示所有设备", - "stop-screen-recording": "屏幕录制器", "switch-to-dark-mode": "深色模式", "switch-to-light-mode": "浅色模式", "unmute": "取消静音", diff --git a/Assets/settings-default.json b/Assets/settings-default.json index 1d093d851..ba642eadb 100644 --- a/Assets/settings-default.json +++ b/Assets/settings-default.json @@ -38,9 +38,6 @@ } ], "right": [ - { - "id": "ScreenRecorder" - }, { "id": "Tray" }, @@ -135,18 +132,6 @@ } ] }, - "screenRecorder": { - "directory": "", - "frameRate": 60, - "audioCodec": "opus", - "videoCodec": "h264", - "quality": "very_high", - "colorRange": "limited", - "showCursor": true, - "copyToClipboard": false, - "audioSource": "default_output", - "videoSource": "portal" - }, "wallpaper": { "enabled": true, "overviewEnabled": false, @@ -208,9 +193,6 @@ { "id": "Bluetooth" }, - { - "id": "ScreenRecorder" - }, { "id": "WallpaperSelector" } diff --git a/Assets/settings-widgets-default.json b/Assets/settings-widgets-default.json index bfddfaed9..26ccf214b 100644 --- a/Assets/settings-widgets-default.json +++ b/Assets/settings-widgets-default.json @@ -99,6 +99,7 @@ "showVisualizer": false, "showProgressRing": true, "visualizerType": "linear", + "compactMode": false, "panelShowAlbumArt": true, "panelShowVisualizer": true, "compactShowAlbumArt": true, diff --git a/Commons/IconsTabler.qml b/Commons/IconsTabler.qml index 5fc942954..2f27fa1ad 100644 --- a/Commons/IconsTabler.qml +++ b/Commons/IconsTabler.qml @@ -119,7 +119,6 @@ Singleton { "settings-color-scheme": "palette", "settings-wallpaper": "paint", "settings-wallpaper-selector": "library-photo", - "settings-screen-recorder": "video", "settings-hooks": "link", "settings-notifications": "bell", "settings-osd": "picture-in-picture", diff --git a/Commons/Settings.qml b/Commons/Settings.qml index 74b610e63..88a7a3b41 100644 --- a/Commons/Settings.qml +++ b/Commons/Settings.qml @@ -64,7 +64,6 @@ Singleton { // Patch-in the local default, resolved to user's home adapter.general.avatarImage = defaultAvatar; - adapter.screenRecorder.directory = defaultVideosDirectory; adapter.wallpaper.directory = defaultWallpapersDirectory; adapter.ui.fontDefault = Qt.application.font.family; adapter.ui.fontFixed = "monospace"; @@ -236,9 +235,6 @@ Singleton { } ] property list right: [ - { - "id": "ScreenRecorder" - }, { "id": "Tray" }, @@ -345,20 +341,6 @@ Singleton { ] } - // screen recorder - property JsonObject screenRecorder: JsonObject { - property string directory: "" - property int frameRate: 60 - property string audioCodec: "opus" - property string videoCodec: "h264" - property string quality: "very_high" - property string colorRange: "limited" - property bool showCursor: true - property bool copyToClipboard: false - property string audioSource: "default_output" - property string videoSource: "portal" - } - // wallpaper property JsonObject wallpaper: JsonObject { property bool enabled: true @@ -431,9 +413,6 @@ Singleton { { "id": "Bluetooth" }, - { - "id": "ScreenRecorder" - }, { "id": "WallpaperSelector" } diff --git a/Modules/Bar/Widgets/ScreenRecorder.qml b/Modules/Bar/Widgets/ScreenRecorder.qml deleted file mode 100644 index 9bfe3a612..000000000 --- a/Modules/Bar/Widgets/ScreenRecorder.qml +++ /dev/null @@ -1,71 +0,0 @@ -import QtQuick -import Quickshell -import qs.Commons -import qs.Modules.Panels.Settings -import qs.Services.Media -import qs.Services.System -import qs.Services.UI -import qs.Widgets - -// Screen Recording Indicator -NIconButton { - id: root - - property ShellScreen screen - - // Widget properties passed from Bar.qml for per-instance settings - property string widgetId: "" - property string section: "" - property int sectionWidgetIndex: -1 - property int sectionWidgetsCount: 0 - - icon: ScreenRecorderService.isPending ? "" : "camera-video" - tooltipText: ScreenRecorderService.isRecording ? I18n.tr("tooltips.click-to-stop-recording") : I18n.tr("tooltips.click-to-start-recording") - tooltipDirection: BarService.getTooltipDirection() - baseSize: Style.capsuleHeight - applyUiScale: false - customRadius: Style.radiusL - colorBg: ScreenRecorderService.isRecording ? Color.mPrimary : Style.capsuleColor - colorFg: ScreenRecorderService.isRecording ? Color.mOnPrimary : Color.mOnSurface - colorBorder: "transparent" - colorBorderHover: "transparent" - border.color: Style.capsuleBorderColor - border.width: Style.capsuleBorderWidth - - function handleClick() { - if (!ScreenRecorderService.isAvailable) { - ToastService.showError(I18n.tr("toast.recording.not-installed"), I18n.tr("toast.recording.not-installed-desc")); - return; - } - ScreenRecorderService.toggleRecording(); - } - - onClicked: handleClick() - - onRightClicked: { - var settingsPanel = PanelService.getPanel("settingsPanel", screen); - settingsPanel.requestedTab = SettingsPanel.Tab.ScreenRecorder; - settingsPanel.open(); - } - - // Custom spinner shown only during pending start - NIcon { - id: pendingSpinner - icon: "loader-2" - visible: ScreenRecorderService.isPending - pointSize: Style.barFontSize - applyUiScale: false - color: root.enabled && root.hovering ? colorFgHover : colorFg - anchors.centerIn: parent - transformOrigin: Item.Center - - RotationAnimation on rotation { - running: ScreenRecorderService.isPending - from: 0 - to: 360 - duration: Style.animationSlow - loops: Animation.Infinite - onStopped: pendingSpinner.rotation = 0 - } - } -} diff --git a/Modules/Panels/ControlCenter/Widgets/ScreenRecorder.qml b/Modules/Panels/ControlCenter/Widgets/ScreenRecorder.qml deleted file mode 100644 index bec69c720..000000000 --- a/Modules/Panels/ControlCenter/Widgets/ScreenRecorder.qml +++ /dev/null @@ -1,29 +0,0 @@ -import QtQuick.Layouts -import Quickshell -import qs.Commons -import qs.Modules.Panels.Settings -import qs.Services.Media -import qs.Services.System -import qs.Services.UI -import qs.Widgets - -NIconButtonHot { - property ShellScreen screen - - enabled: ProgramCheckerService.gpuScreenRecorderAvailable - icon: "camera-video" - hot: ScreenRecorderService.isRecording - tooltipText: I18n.tr("panels.screen-recorder.title") - onClicked: { - ScreenRecorderService.toggleRecording(); - if (!ScreenRecorderService.isRecording) { - PanelService.getPanel("controlCenterPanel", screen)?.close; - } - } - - onRightClicked: { - var settingsPanel = PanelService.getPanel("settingsPanel", screen); - settingsPanel.requestedTab = SettingsPanel.Tab.ScreenRecorder; - settingsPanel.open(); - } -} diff --git a/Modules/Panels/Settings/SettingsContent.qml b/Modules/Panels/Settings/SettingsContent.qml index 2310c344b..e825bcf65 100644 --- a/Modules/Panels/Settings/SettingsContent.qml +++ b/Modules/Panels/Settings/SettingsContent.qml @@ -93,10 +93,6 @@ Item { id: wallpaperTab WallpaperTab {} } - Component { - id: screenRecorderTab - ScreenRecorderTab {} - } Component { id: aboutTab AboutTab {} @@ -246,12 +242,6 @@ Item { "icon": "settings-location", "source": regionTab }, - { - "id": SettingsPanel.Tab.ScreenRecorder, - "label": "panels.screen-recorder.title", - "icon": "settings-screen-recorder", - "source": screenRecorderTab - }, { "id": SettingsPanel.Tab.SystemMonitor, "label": "system-monitor.title", diff --git a/Modules/Panels/Settings/SettingsPanel.qml b/Modules/Panels/Settings/SettingsPanel.qml index 850ad0973..fa42268cd 100644 --- a/Modules/Panels/Settings/SettingsPanel.qml +++ b/Modules/Panels/Settings/SettingsPanel.qml @@ -87,7 +87,6 @@ SmartPanel { Network, Notifications, Plugins, - ScreenRecorder, SessionMenu, SystemMonitor, UserInterface, diff --git a/Modules/Panels/Settings/Tabs/ScreenRecorderTab.qml b/Modules/Panels/Settings/Tabs/ScreenRecorderTab.qml deleted file mode 100644 index 83cdbd650..000000000 --- a/Modules/Panels/Settings/Tabs/ScreenRecorderTab.qml +++ /dev/null @@ -1,304 +0,0 @@ -import QtQuick -import QtQuick.Controls -import QtQuick.Layouts -import Quickshell -import qs.Commons -import qs.Widgets - -ColumnLayout { - id: root - spacing: Style.marginL - - // Output Folder - NTextInputButton { - label: I18n.tr("panels.screen-recorder.general-output-folder-label") - description: I18n.tr("panels.screen-recorder.general-output-folder-description") - placeholderText: Quickshell.env("HOME") + "/Videos" - text: Settings.data.screenRecorder.directory - buttonIcon: "folder-open" - buttonTooltip: I18n.tr("panels.screen-recorder.general-output-folder-label") - onInputEditingFinished: Settings.data.screenRecorder.directory = text - onButtonClicked: folderPicker.openFilePicker() - } - - NDivider { - Layout.fillWidth: true - } - - // Show Cursor - NToggle { - label: I18n.tr("panels.screen-recorder.general-show-cursor-label") - description: I18n.tr("panels.screen-recorder.general-show-cursor-description") - checked: Settings.data.screenRecorder.showCursor - onToggled: checked => Settings.data.screenRecorder.showCursor = checked - defaultValue: Settings.getDefaultValue("screenRecorder.showCursor") - } - - // Copy to Clipboard - NToggle { - label: I18n.tr("panels.screen-recorder.general-copy-to-clipboard-label") - description: I18n.tr("panels.screen-recorder.general-copy-to-clipboard-description") - checked: Settings.data.screenRecorder.copyToClipboard - onToggled: checked => Settings.data.screenRecorder.copyToClipboard = checked - defaultValue: Settings.getDefaultValue("screenRecorder.copyToClipboard") - } - - NDivider { - Layout.fillWidth: true - } - - // Video Settings - ColumnLayout { - spacing: Style.marginL - Layout.fillWidth: true - - // Source - NComboBox { - label: I18n.tr("panels.screen-recorder.video-video-source-label") - description: I18n.tr("panels.screen-recorder.video-video-source-description") - model: [ - { - "key": "portal", - "name": I18n.tr("options.screen-recording.sources-portal") - }, - { - "key": "screen", - "name": I18n.tr("options.screen-recording.sources-screen") - } - ] - currentKey: Settings.data.screenRecorder.videoSource - onSelected: key => Settings.data.screenRecorder.videoSource = key - defaultValue: Settings.getDefaultValue("screenRecorder.videoSource") - } - - // Frame Rate - NComboBox { - label: I18n.tr("panels.audio.media-frame-rate-label") - description: I18n.tr("panels.screen-recorder.video-frame-rate-description") - model: [ - { - "key": "30", - "name": I18n.tr("options.frame-rates-fps", { - "fps": "30" - }) - }, - { - "key": "60", - "name": I18n.tr("options.frame-rates-fps", { - "fps": "60" - }) - }, - { - "key": "100", - "name": I18n.tr("options.frame-rates-fps", { - "fps": "100" - }) - }, - { - "key": "120", - "name": I18n.tr("options.frame-rates-fps", { - "fps": "120" - }) - }, - { - "key": "144", - "name": I18n.tr("options.frame-rates-fps", { - "fps": "144" - }) - }, - { - "key": "165", - "name": I18n.tr("options.frame-rates-fps", { - "fps": "165" - }) - }, - { - "key": "240", - "name": I18n.tr("options.frame-rates-fps", { - "fps": "240" - }) - } - ] - currentKey: Settings.data.screenRecorder.frameRate - onSelected: key => Settings.data.screenRecorder.frameRate = key - defaultValue: Settings.getDefaultValue("screenRecorder.frameRate") - } - - // Video Quality - NComboBox { - label: I18n.tr("panels.screen-recorder.video-video-quality-label") - description: I18n.tr("panels.screen-recorder.video-video-quality-description") - model: [ - { - "key": "medium", - "name": I18n.tr("options.screen-recording.quality-medium") - }, - { - "key": "high", - "name": I18n.tr("options.screen-recording.quality-high") - }, - { - "key": "very_high", - "name": I18n.tr("options.screen-recording.quality-very-high") - }, - { - "key": "ultra", - "name": I18n.tr("options.screen-recording.quality-ultra") - } - ] - currentKey: Settings.data.screenRecorder.quality - onSelected: key => Settings.data.screenRecorder.quality = key - defaultValue: Settings.getDefaultValue("screenRecorder.quality") - } - - // Video Codec - NComboBox { - label: I18n.tr("panels.screen-recorder.video-video-codec-label") - description: I18n.tr("panels.screen-recorder.video-video-codec-description") - model: { - let options = [ - { - "key": "h264", - "name": "H264" - }, - { - "key": "hevc", - "name": "HEVC" - }, - { - "key": "av1", - "name": "AV1" - }, - { - "key": "vp8", - "name": "VP8" - }, - { - "key": "vp9", - "name": "VP9" - } - ]; - // Only add HDR options if source is 'screen' - if (Settings.data.screenRecorder.videoSource === "screen") { - options.push({ - "key": "hevc_hdr", - "name": "HEVC HDR" - }); - options.push({ - "key": "av1_hdr", - "name": "AV1 HDR" - }); - } - return options; - } - currentKey: Settings.data.screenRecorder.videoCodec - onSelected: key => { - Settings.data.screenRecorder.videoCodec = key; - - // If an HDR codec is selected, change the colorRange to full - if (key.includes("_hdr")) { - Settings.data.screenRecorder.colorRange = "full"; - } - } - defaultValue: Settings.getDefaultValue("screenRecorder.videoCodec") - // If user switches source to portal while an HDR codec is selected, reset to h264 - Connections { - target: Settings.data.screenRecorder - function onVideoSourceChanged() { - let source = Settings.data.screenRecorder.videoSource; - let codec = Settings.data.screenRecorder.videoCodec; - if (source !== "screen" && (codec === "av1_hdr" || codec === "hevc_hdr")) { - Settings.data.screenRecorder.videoCodec = "h264"; - } - } - } - } - - // Color Range - NComboBox { - label: I18n.tr("panels.screen-recorder.video-color-range-label") - description: I18n.tr("panels.screen-recorder.video-color-range-description") - model: [ - { - "key": "limited", - "name": I18n.tr("options.screen-recording.color-range-limited") - }, - { - "key": "full", - "name": I18n.tr("options.screen-recording.color-range-full") - } - ] - currentKey: Settings.data.screenRecorder.colorRange - onSelected: key => Settings.data.screenRecorder.colorRange = key - defaultValue: Settings.getDefaultValue("screenRecorder.colorRange") - } - } - - NDivider { - Layout.fillWidth: true - } - - // Audio Settings - ColumnLayout { - spacing: Style.marginL - Layout.fillWidth: true - - // Audio Source - NComboBox { - label: I18n.tr("panels.screen-recorder.audio-audio-source-label") - description: I18n.tr("panels.screen-recorder.audio-audio-source-description") - model: [ - { - "key": "none", - "name": I18n.tr("options.screen-recording.audio-sources-none") - }, - { - "key": "default_output", - "name": I18n.tr("options.screen-recording.audio-sources-system-output") - }, - { - "key": "default_input", - "name": I18n.tr("options.screen-recording.audio-sources-microphone-input") - }, - { - "key": "both", - "name": I18n.tr("options.screen-recording.audio-sources-both") - } - ] - currentKey: Settings.data.screenRecorder.audioSource - onSelected: key => Settings.data.screenRecorder.audioSource = key - defaultValue: Settings.getDefaultValue("screenRecorder.audioSource") - } - - // Audio Codec - NComboBox { - label: I18n.tr("panels.screen-recorder.audio-audio-codec-label") - description: I18n.tr("panels.screen-recorder.audio-audio-codec-description") - model: [ - { - "key": "opus", - "name": "Opus" - }, - { - "key": "aac", - "name": "AAC" - } - ] - currentKey: Settings.data.screenRecorder.audioCodec - onSelected: key => Settings.data.screenRecorder.audioCodec = key - defaultValue: Settings.getDefaultValue("screenRecorder.audioCodec") - } - } - - NFilePicker { - id: folderPicker - selectionMode: "folders" - title: I18n.tr("panels.screen-recorder.general-select-output-folder") - initialPath: Settings.data.screenRecorder.directory || Quickshell.env("HOME") + "/Videos" - onAccepted: paths => { - if (paths.length > 0) { - Settings.data.screenRecorder.directory = paths[0]; // Use first selected file - } - } - } -} diff --git a/Services/Control/IPCService.qml b/Services/Control/IPCService.qml index a019906ff..57058d5ee 100644 --- a/Services/Control/IPCService.qml +++ b/Services/Control/IPCService.qml @@ -35,15 +35,6 @@ Item { } } - IpcHandler { - target: "screenRecorder" - function toggle() { - if (ScreenRecorderService.isAvailable) { - ScreenRecorderService.toggleRecording(); - } - } - } - IpcHandler { target: "settings" function toggle() { diff --git a/Services/Media/ScreenRecorderService.qml b/Services/Media/ScreenRecorderService.qml deleted file mode 100644 index 98f0f97a6..000000000 --- a/Services/Media/ScreenRecorderService.qml +++ /dev/null @@ -1,271 +0,0 @@ -pragma Singleton - -import QtQuick -import Quickshell -import Quickshell.Io -import qs.Commons -import qs.Services.System -import qs.Services.UI - -Singleton { - id: root - - readonly property var settings: Settings.data.screenRecorder - property bool isRecording: false - property bool isPending: false - // True only if the recorder actually started capturing at least once - property bool hasActiveRecording: false - property string outputPath: "" - property bool isAvailable: ProgramCheckerService.gpuScreenRecorderAvailable - - // Update availability when ProgramCheckerService completes its checks - Connections { - target: ProgramCheckerService - function onChecksCompleted() {// Availability is now automatically updated via property binding - } - } - - // Start or Stop recording - function toggleRecording() { - (isRecording || isPending) ? stopRecording() : startRecording(); - } - - // Copy file to clipboard as file reference - function copyFileToClipboard(filePath) { - if (!filePath) { - return; - } - // Convert path to file:// URI format for copying as file reference - // Escape special characters in URI (space -> %20, etc.) - const fileUri = "file://" + filePath.replace(/ /g, "%20").replace(/'/g, "%27").replace(/"/g, "%22"); - // Escape single quotes in URI for shell safety - const escapedUri = fileUri.replace(/'/g, "'\\''"); - const command = "printf '%s' '" + escapedUri + "' | wl-copy --type text/uri-list"; - copyToClipboardProcess.exec({ - "command": ["sh", "-c", command] - }); - } - - // Start screen recording using Quickshell.execDetached - function startRecording() { - if (!isAvailable) { - return; - } - if (isRecording || isPending) { - return; - } - isPending = true; - hasActiveRecording = false; - - // Close any opened panel - if ((PanelService.openedPanel !== null) && !PanelService.openedPanel.isClosing) { - PanelService.openedPanel.close(); - } - - // First, ensure xdg-desktop-portal and a compositor portal are running - portalCheckProcess.exec({ - "command": ["sh", "-c" // require core portal AND one of the backends - , "pidof xdg-desktop-portal >/dev/null 2>&1 && (pidof xdg-desktop-portal-wlr >/dev/null 2>&1 || pidof xdg-desktop-portal-hyprland >/dev/null 2>&1 || pidof xdg-desktop-portal-gnome >/dev/null 2>&1 || pidof xdg-desktop-portal-kde >/dev/null 2>&1)"] - }); - } - - function launchRecorder() { - var filename = Time.getFormattedTimestamp() + ".mp4"; - var videoDir = Settings.preprocessPath(settings.directory); - if (videoDir && !videoDir.endsWith("/")) { - videoDir += "/"; - } - outputPath = videoDir + filename; - - const audioFlags = (() => { - if (settings.audioSource === "none") { - return ""; - } - if (settings.audioSource === "both") { - return `-ac ${settings.audioCodec} -a "default_output|default_input"`; - } - return `-ac ${settings.audioCodec} -a ${settings.audioSource}`; - })(); - - var flags = `-w ${settings.videoSource} -f ${settings.frameRate} -k ${settings.videoCodec} ${audioFlags} -q ${settings.quality} -cursor ${settings.showCursor ? "yes" : "no"} -cr ${settings.colorRange} -o "${outputPath}"`; - var command = ` - _gpuscreenrecorder_flatpak_installed() { - flatpak list --app | grep -q "com.dec05eba.gpu_screen_recorder" - } - if command -v gpu-screen-recorder >/dev/null 2>&1; then - gpu-screen-recorder ${flags} - elif command -v flatpak >/dev/null 2>&1 && _gpuscreenrecorder_flatpak_installed; then - flatpak run --command=gpu-screen-recorder --file-forwarding com.dec05eba.gpu_screen_recorder ${flags} - else - echo "GPU_SCREEN_RECORDER_NOT_INSTALLED" - fi`; - - // Use Process instead of execDetached so we can monitor it and read stderr - recorderProcess.exec({ - "command": ["sh", "-c", command] - }); - - // Start monitoring - if process ends quickly, it was likely cancelled - pendingTimer.running = true; - } - - // Stop recording using Quickshell.execDetached - function stopRecording() { - if (!isRecording && !isPending) { - return; - } - - ToastService.showNotice(I18n.tr("toast.recording.stopping"), outputPath, "settings-screen-recorder"); - - Quickshell.execDetached(["sh", "-c", "pkill -SIGINT -f 'gpu-screen-recorder' || pkill -SIGINT -f 'com.dec05eba.gpu_screen_recorder'"]); - - isRecording = false; - isPending = false; - pendingTimer.running = false; - monitorTimer.running = false; - hasActiveRecording = false; - - // Just in case, force kill after 3 seconds - killTimer.running = true; - } - - // Helper function to check if output indicates user cancellation - function isCancelledByUser(stdoutText, stderrText) { - const stdout = String(stdoutText || "").toLowerCase(); - const stderr = String(stderrText || "").toLowerCase(); - const combined = stdout + " " + stderr; - // Check for various forms of cancellation messages (case-insensitive) - return combined.includes("canceled by") || combined.includes("cancelled by") || combined.includes("canceled by user") || combined.includes("cancelled by user") || combined.includes("canceled by the user") || combined.includes("cancelled by the user"); - } - - // Process to run and monitor gpu-screen-recorder - Process { - id: recorderProcess - stdout: StdioCollector {} - stderr: StdioCollector {} - onExited: function (exitCode, exitStatus) { - const stdout = String(recorderProcess.stdout.text || "").trim(); - const stderr = String(recorderProcess.stderr.text || "").trim(); - const wasCancelled = isCancelledByUser(stdout, stderr); - - if (isPending) { - // Process ended while we were pending - likely cancelled or error - isPending = false; - pendingTimer.running = false; - - // Check if gpu-screen-recorder is not installed - if (stdout === "GPU_SCREEN_RECORDER_NOT_INSTALLED") { - ToastService.showError(I18n.tr("toast.recording.not-installed"), I18n.tr("toast.recording.not-installed-desc")); - return; - } - - // If it failed to start, show a clear error toast with stderr - // But don't show error if user intentionally cancelled via portal - if (exitCode !== 0) { - if (stderr.length > 0 && !wasCancelled) { - ToastService.showError(I18n.tr("toast.recording.failed-start"), stderr); - Logger.e(stderr); - } - // If user cancelled, silently return without error toast - } - } else if (isRecording || hasActiveRecording) { - // Process ended normally while recording (check both flags to handle race condition) - isRecording = false; - monitorTimer.running = false; - if (exitCode === 0) { - ToastService.showNotice(I18n.tr("toast.recording.saved"), outputPath, "settings-screen-recorder"); - if (settings.copyToClipboard) { - copyFileToClipboard(outputPath); - } - } else { - // Don't show error if user intentionally cancelled - if (!wasCancelled) { - if (stderr.length > 0) { - ToastService.showError(I18n.tr("toast.recording.failed-start"), stderr); - Logger.e(stderr); - } else { - ToastService.showError(I18n.tr("toast.recording.failed-start"), I18n.tr("toast.recording.failed-general")); - } - } - } - hasActiveRecording = false; - } else if (!isPending && exitCode === 0 && outputPath) { - // Fallback: if process exited successfully with an outputPath, handle it - // (handles case where flags were cleared before onExited fired) - ToastService.showNotice(I18n.tr("toast.recording.saved"), outputPath, "settings-screen-recorder"); - if (settings.copyToClipboard) { - copyFileToClipboard(outputPath); - } - } - } - } - - // Pre-flight check for xdg-desktop-portal - Process { - id: portalCheckProcess - onExited: function (exitCode, exitStatus) { - if (exitCode === 0) { - // Portals available, proceed to launch - launchRecorder(); - } else { - isPending = false; - hasActiveRecording = false; - ToastService.showError(I18n.tr("toast.recording.no-portals"), I18n.tr("toast.recording.no-portals-desc")); - } - } - } - - // Process to copy file to clipboard - Process { - id: copyToClipboardProcess - onExited: function (exitCode, exitStatus) { - if (exitCode !== 0) { - Logger.e("ScreenRecorderService", "Failed to copy file to clipboard, exit code:", exitCode); - } - } - } - - Timer { - id: pendingTimer - interval: 2000 // Wait 2 seconds to see if process stays alive - running: false - repeat: false - onTriggered: { - if (isPending && recorderProcess.running) { - // Process is still running after 2 seconds - assume recording started successfully - isPending = false; - isRecording = true; - hasActiveRecording = true; - monitorTimer.running = true; - // Don't show a toast when recording starts to avoid having the toast in every video. - } else if (isPending) { - // Process not running anymore - was cancelled or failed - isPending = false; - } - } - } - - // Monitor timer to periodically check if we're still recording - Timer { - id: monitorTimer - interval: 2000 - running: false - repeat: true - onTriggered: { - if (!recorderProcess.running && isRecording) { - isRecording = false; - running = false; - } - } - } - - Timer { - id: killTimer - interval: 3000 - running: false - repeat: false - onTriggered: { - Quickshell.execDetached(["sh", "-c", "pkill -9 -f 'gpu-screen-recorder' 2>/dev/null || pkill -9 -f 'com.dec05eba.gpu_screen_recorder' 2>/dev/null || true"]); - } - } -} diff --git a/Services/System/ProgramCheckerService.qml b/Services/System/ProgramCheckerService.qml index ba8ed3bcc..57c819350 100644 --- a/Services/System/ProgramCheckerService.qml +++ b/Services/System/ProgramCheckerService.qml @@ -11,7 +11,6 @@ Singleton { id: root // Program availability properties - property bool gpuScreenRecorderAvailable: false property bool matugenAvailable: false property bool nmcliAvailable: false property bool wlsunsetAvailable: false @@ -21,7 +20,6 @@ Singleton { // Programs to check - maps property names to commands readonly property var programsToCheck: ({ - "gpuScreenRecorderAvailable": ["sh", "-c", "command -v gpu-screen-recorder >/dev/null 2>&1 || (command -v flatpak >/dev/null 2>&1 && flatpak list --app | grep -q 'com.dec05eba.gpu_screen_recorder')"], "matugenAvailable": ["sh", "-c", "command -v matugen"], "nmcliAvailable": ["sh", "-c", "command -v nmcli"], "wlsunsetAvailable": ["sh", "-c", "command -v wlsunset"], diff --git a/Services/UI/BarWidgetRegistry.qml b/Services/UI/BarWidgetRegistry.qml index 64f771d32..3c3017b0d 100644 --- a/Services/UI/BarWidgetRegistry.qml +++ b/Services/UI/BarWidgetRegistry.qml @@ -32,7 +32,6 @@ Singleton { "NoctaliaPerformance": noctaliaPerformanceComponent, "NotificationHistory": notificationHistoryComponent, "PowerProfile": powerProfileComponent, - "ScreenRecorder": screenRecorderComponent, "SessionMenu": sessionMenuComponent, "Spacer": spacerComponent, "SystemMonitor": systemMonitorComponent, @@ -309,9 +308,6 @@ Singleton { property Component sessionMenuComponent: Component { SessionMenu {} } - property Component screenRecorderComponent: Component { - ScreenRecorder {} - } property Component controlCenterComponent: Component { ControlCenter {} } diff --git a/Services/UI/ControlCenterWidgetRegistry.qml b/Services/UI/ControlCenterWidgetRegistry.qml index 6abb9b090..07ddef96f 100644 --- a/Services/UI/ControlCenterWidgetRegistry.qml +++ b/Services/UI/ControlCenterWidgetRegistry.qml @@ -17,7 +17,6 @@ Singleton { "NightLight": nightLightComponent, "Notifications": notificationsComponent, "PowerProfile": powerProfileComponent, - "ScreenRecorder": screenRecorderComponent, "WiFi": networkComponent, "Network": networkComponent, "WallpaperSelector": wallpaperSelectorComponent @@ -57,9 +56,6 @@ Singleton { property Component powerProfileComponent: Component { PowerProfile {} } - property Component screenRecorderComponent: Component { - ScreenRecorder {} - } property Component networkComponent: Component { Network {} }