From acd5ecee5a4b4c72cf5e0f135b519d289cb4c5b5 Mon Sep 17 00:00:00 2001 From: PrimeBuild-pc Date: Wed, 14 Oct 2026 17:33:02 +0200 Subject: [PATCH 01/12] feat: clearer navigation, process page and rules editor - Navigation pane open with short labels instead of seven bare icons. - Processes: one toolbar row (search with placeholder, Filters and Columns menus, sort, refresh); details split into Process, Priority, CPU cores and Rule cards; pickers start from the process's current values and stay empty when a value cannot be read; help paragraphs moved into tooltips; core picker always visible. - Rules: process rules first, clearer tab names, localized choices in the saved-rule editor instead of internal enum names. - Shorter page titles and subtitles in all seven languages; removed the strings this made unused. No data format changes. --- Locales/de-DE.xaml | 60 +- Locales/en-US.xaml | 64 +- Locales/es-ES.xaml | 60 +- Locales/fr-FR.xaml | 62 +- Locales/it-IT.xaml | 62 +- Locales/ru-RU.xaml | 62 +- Locales/zh-CN.xaml | 64 +- MainWindow.xaml | 4 +- .../MasksViewModelTests.cs | 2 +- .../ProcessViewModelContextMenuTests.cs | 21 + .../ProcessViewXamlBindingTests.cs | 9 +- .../ProcessPowerPlanAssociationViewModel.cs | 67 +- ViewModels/ProcessViewModel.PriorityEditor.cs | 44 +- ViewModels/ProcessViewModel.cs | 1 + ViewModels/SelectedProcessSummaryViewModel.cs | 12 +- ViewModels/SettingsViewModel.cs | 1 - Views/ProcessPowerPlanAssociationView.xaml | 352 +++++----- Views/ProcessView.xaml | 640 +++++++++--------- Views/ProcessView.xaml.cs | 5 +- docs/UX_REDESIGN_PLAN.md | 31 + 20 files changed, 881 insertions(+), 742 deletions(-) create mode 100644 docs/UX_REDESIGN_PLAN.md diff --git a/Locales/de-DE.xaml b/Locales/de-DE.xaml index 0f46f79..ae1e060 100644 --- a/Locales/de-DE.xaml +++ b/Locales/de-DE.xaml @@ -15,12 +15,12 @@ Höhe anfordern - Prozessmanagement + Prozesse CPU-Masken Energiepläne Regeln Diagnose - ThreadPilot-Aktivität + Aktivität Optimierungen Einstellungen @@ -42,8 +42,8 @@ Overlay zum Laden der Anwendung beim Start - ThreadPilot Aktivität - Zeigt von ThreadPilot ausgeführte Aktionen an, einschließlich angewendeter Regeln, Affinitätsänderungen, Prioritätsänderungen, Energieplanänderungen, Einstellungsänderungen, Optimierungen, Optimierungen und Meldungen zu sicheren Fehlern. + Aktivität + Was ThreadPilot geändert hat und was fehlgeschlagen ist. Suche: Kategorie: Ebene: @@ -85,7 +85,7 @@ CPU-Masken - Erstellen Sie wiederverwendbare CPU-Affinitätsvoreinstellungen für die Verwendung pro Prozess. + Wiederverwendbare Kernauswahl für Prozesse und Regeln. Wenn Sie hier eine Maske auswählen, wird nur die Voreinstellung bearbeitet. Die Affinität von CPU wird erst geändert, wenn Sie sie auf einen Prozess anwenden oder in einer Prozessregel speichern. Neu Löschen @@ -163,7 +163,7 @@ Energiepläne - Verwalten Sie den aktiven Windows-Energieplan und importieren Sie benutzerdefinierte .pow-Profile + Aktiven Windows-Plan wechseln oder .pow-Dateien importieren. Windows Energiepläne Wählen Sie den Windows-Plan aus, den Sie aktivieren möchten. Als aktiven Windows-Plan festlegen @@ -182,7 +182,7 @@ Aktiv - Regeln und Automatisierung + Regeln Die Automatisierungsüberwachung überwacht Start-/Stopp-Ereignisse und wendet konfigurierte Energiesparpläne, CPU-Masken und Prioritätsregeln an. Regeleditor Erstellen Sie eine Regel aus einer ausführbaren Datei oder einem laufenden Prozess, um den Energieplan, die CPU-Maske und das Prioritätsverhalten zu automatisieren. @@ -212,7 +212,7 @@ Löschen Sie die ausgewählte ausführbare Datei Aktuelle Regeln - Definieren Sie Regeln pro Prozess. Energiepläne sind global; Masken und Prioritäten gelten für Matching-Prozesse. + Was ThreadPilot beim Start eines Prozesses automatisch anwendet. Entfernen Entfernen Sie die ausgewählte Zuordnung Standard-Energieplan (Fallback, wenn keine Regel übereinstimmt) @@ -228,7 +228,7 @@ Konfiguration speichern Noch keine Automatisierungsregeln Status: - Automatisierungsüberwachung + Überwachung Starten Sie die Automatisierungsüberwachung Stoppen Sie die Automatisierungsüberwachung @@ -237,9 +237,9 @@ Ausgewählte ausführbare Datei: Beschreibung: Automatisierungsdienst - Regeln - Gespeicherte Prozessregeln - Regeln, die auf der Registerkarte Prozesse gespeichert wurden. ThreadPilot wendet sie bei jedem Start des Prozesses erneut an, solange die Automatisierungsüberwachung aktiv ist. Sie sind getrennt von den Energieplanregeln oben, die den globalen Windows-Energieplan umschalten. + Energieplan-Wechsel + Prozessregeln + Auf der Seite „Prozesse“ gespeichert. Werden bei jedem Prozessstart angewendet, solange die Überwachung läuft. Prozess Wendet an Modus @@ -252,7 +252,7 @@ E/A-Priorität CPU-Zuweisungsmodus System wach halten, solange dieser Prozess läuft - Wählen Sie eine gespeicherte CPU-Maske, um die Kerne dieser Regel festzulegen. Die Auswahl einzelner Kerne finden Sie auf der Registerkarte Prozesse. + Wählen Sie eine gespeicherte CPU-Maske für die Kerne dieser Regel. Masken werden auf der Seite „CPU-Masken“ bearbeitet. Änderungen speichern Noch keine gespeicherten Prozessregeln. Klicken Sie auf der Registerkarte Prozesse mit der rechten Maustaste auf einen Prozess und wählen Sie Regeln. Ausführbar @@ -263,8 +263,7 @@ Prozesspriorität: - Prozessmanagement - Suchen, filtern und steuern Sie aktive Prozesskonfigurationen + Prozesse Suchen Sie Prozesse nach Namen Prozesssuche Windows-Systemprozesse ausblenden @@ -288,7 +287,7 @@ Ausstehende Kernmaske Wählen Sie eine Maske zum Vormerken. Erst CPU-Zuweisung anwenden ändert den Zustand. - CPU-Zuweisung anwenden + Kerne anwenden Wendet die CPU-Auswahl im gewählten Modus an und überprüft den Windows-Status CPU-Zuweisung anwenden und als Regel speichern Aktuelle Prozesseinstellungen grundsätzlich speichern. Diese Einstellungen werden automatisch angewendet, wenn dieser Prozess in Zukunft startet. @@ -310,13 +309,12 @@ Speichern Sie die aktuelle Affinität und Priorität von CPU als wiederverwendbares Profil Profil laden Laden Sie ein zuvor gespeichertes Profil - Aktuelle Einstellungen als Regel speichern + Als Regel speichern Speichert eine prozessbezogene Regel, die ThreadPilot beim nächsten Start dieses Prozesses automatisch erneut anwendet, solange die Automatisierungsüberwachung aktiviert ist. Diese Regeln sind unabhängig von der Registerkarte „Regeln“, der Zuordnungen von Prozessen zu Energiesparplänen verwaltet. Gespeicherte Regel löschen Entfernt die gespeicherte Regel für diesen Prozess, damit ThreadPilot sie beim Start des Prozesses nicht mehr anwendet. Letzte ThreadPilot-Aktion: - Aktualisieren Aktualisieren Sie die Prozessliste Mehr laden Laden Sie weitere Prozesse @@ -324,8 +322,6 @@ Laden Sie weitere Prozesse Liste der laufenden Prozesse Virtualisierte Prozesstabelle mit Sortierung und Auswahl - Die Automatisierungsüberwachung ist deaktiviert. - Aktivieren Sie die Automatisierungsüberwachung unter Regeln und Automatisierung oder im Infobereich, um die Prozessliste anzuzeigen und zu aktualisieren. Prozessname Fenstertitel @@ -347,9 +343,6 @@ CPU-Sätze löschen Ausstehende Einstellungen anwenden Wenden Sie die ausstehende Affinität und den ausgewählten Energieplan auf den ausgewählten Prozess an - Regeln und Änderungen werden von ThreadPilot nur angewendet, wenn sie konfiguriert sind. - Aktueller Prozessstatus - Erweiterte Affinitätsauswahl Wählen Sie die ausstehende Maske für Affinitätsaktionen im Zeilenkontextmenü aus Ausgewählter Energieplan Als Regel speichern @@ -404,7 +397,7 @@ Anwendungseinstellungen - Konfigurieren Sie Benachrichtigungen, die Taskleiste und das Anwendungsverhalten + Benachrichtigungen, Infobereich, Autostart und Sprache. Benachrichtigungen Benachrichtigungen aktivieren Benachrichtigungsebene @@ -565,8 +558,8 @@ Speichern - Systemoptimierungen und -optimierungen - Konfigurieren Sie Windows Systemoptimierungen und Leistungsoptimierungen + Optimierungen + Windows-Einstellungen, die die Leistung beeinflussen. Alle aktualisieren Alle Optimierungsstatus aktualisieren Schalten Sie diese Windows-Optimierung um @@ -772,7 +765,7 @@ Anwenden Automatisierung pausiert. Manuelle Änderungen funktionieren weiterhin; gespeicherte Regeln werden erst nach Fortsetzen der Überwachung angewendet. - Letzte Prioritätsänderung rückgängig machen + Letzte Änderung rückgängig Prozesse angezeigt Nicht gespeicherte Änderungen Vorherige Priorität wiederhergestellt. @@ -787,4 +780,17 @@ Effizienzmodus: {0} Effizienzmodus nicht verfügbar Effizienzmodus: {0} (ohne Wirkung: Energiedrosselung ist in den Optimierungen deaktiviert) + + + Filter + Spalten + Priorität + CPU-Kerne + Regel + CPU + Speicher + E/A + Effizienz + Wählen Sie einen Prozess, um Priorität, Kerne und Regel zu sehen und zu ändern. + Nicht festgelegt diff --git a/Locales/en-US.xaml b/Locales/en-US.xaml index 7058e89..2487cc3 100644 --- a/Locales/en-US.xaml +++ b/Locales/en-US.xaml @@ -15,12 +15,12 @@ Request Elevation - Process Management - CPU Masks - Power Plans + Processes + CPU masks + Power plans Rules Diagnostics - ThreadPilot Activity + Activity Tweaks Settings @@ -42,8 +42,8 @@ Application startup loading overlay - ThreadPilot Activity - Shows actions performed by ThreadPilot, including applied rules, affinity changes, priority changes, power plan changes, settings changes, tweaks, optimizations, and safe failure messages. + Activity + What ThreadPilot changed, and what failed. Search: Category: Level: @@ -85,7 +85,7 @@ CPU Masks - Create reusable CPU affinity presets for per-process use. + Reusable core selections for processes and rules. Selecting a mask here only edits the preset. It does not change CPU affinity until you apply it to a process or save it in a process rule. New Delete @@ -163,7 +163,7 @@ Power Plans - Manage the active Windows power plan and import custom .pow profiles + Switch the active Windows plan or import .pow files. Windows Power Plans Select the Windows plan to make active. Set as Active Windows Plan @@ -182,7 +182,7 @@ Active - Rules & Automation + Rules Automation monitoring watches process start/stop events and applies configured power plan, CPU mask, and priority rules. Rule Editor Create a rule from an executable or running process to automate power plan, CPU mask, and priority behavior. @@ -212,7 +212,7 @@ Clear the selected executable Current Rules - Define per-process rules. Power plans are global; masks and priorities apply to matching processes. + What ThreadPilot applies automatically when a process starts. Remove Remove the selected association Default Power Plan (fallback when no rule matches) @@ -228,7 +228,7 @@ Save Configuration No automation rules yet Status: - Automation Monitoring + Monitoring Start Automation Monitoring Stop Automation Monitoring @@ -237,9 +237,9 @@ Selected Executable: Description: Automation Service - Rules - Saved process rules - Rules saved from the Process tab. ThreadPilot re-applies them to that process every time it starts, while automation monitoring is on. These are separate from the power plan rules above, which switch the global Windows power plan. + Power plan switching + Process rules + Saved from the Processes page. Applied every time the process starts, while monitoring is on. Process Applies Mode @@ -252,7 +252,7 @@ I/O priority CPU assignment mode Keep the system awake while this process runs - Pick a saved CPU mask to set which cores this rule pins to. The per-core picker lives in the Process tab. + Pick a saved CPU mask for this rule's cores. Masks are edited on the CPU masks page. Save changes No saved process rules yet. Right-click a process in the Process tab and choose Rules to save one. Executable @@ -263,8 +263,7 @@ Process Priority: - Process Management - Search, filter, and control active process configurations + Processes Search processes by name Process search Hide Windows system processes @@ -288,7 +287,7 @@ Pending core mask Select a mask to stage it. Nothing changes until Apply CPU Assignment is clicked. - Apply CPU Assignment + Apply cores Apply the pending CPU selection with the selected mode and verify the Windows state Apply CPU Assignment and Save as Rule Save current process settings as a rule. These settings will be automatically applied when this process starts in the future. @@ -310,13 +309,12 @@ Save current CPU affinity and priority as a reusable profile Load Profile Load a previously saved profile - Save Current Settings as Rule + Save as rule Saves a per-process rule that ThreadPilot re-applies automatically the next time this process starts, while automation monitoring is enabled. These rules are separate from the Rules tab, which manages process-to-power-plan associations. Delete Saved Rule Removes the saved rule for this process, so ThreadPilot stops re-applying it when the process starts. Last ThreadPilot action: - Refresh Refresh the process list Load More Load more processes @@ -324,8 +322,6 @@ Load more processes Running process list Virtualized process table with sorting and selection - Automation monitoring is disabled. - Enable Automation Monitoring from Rules & Automation or the system tray to show and refresh the process list. Process Name Window Title @@ -347,9 +343,6 @@ Clear CPU Sets Apply Pending Settings Apply the pending affinity and selected power plan to the selected process - Rules and changes are applied by ThreadPilot only when configured. - Current process status - Advanced affinity picker Select the pending mask for row context-menu affinity actions Selected power plan Save as Rule @@ -404,7 +397,7 @@ Application Settings - Configure notifications, system tray, and application behavior + Notifications, tray, startup and language. Notifications Enable notifications Notification Level @@ -565,8 +558,8 @@ Save - System Tweaks & Optimizations - Configure Windows system optimizations and performance tweaks + Tweaks + Windows settings that affect performance. Refresh All Refresh all tweak states Toggle this Windows tweak @@ -772,7 +765,7 @@ Apply Automation is paused. Manual changes still work; saved rules are not applied until monitoring resumes. - Undo last priority change + Undo last change processes shown Unsaved changes Previous priority restored. @@ -787,4 +780,17 @@ Efficiency mode: {0} Efficiency mode unavailable Efficiency mode: {0} (no effect: power throttling is disabled in Tweaks) + + + Filters + Columns + Priority + CPU cores + Rule + CPU + Memory + I/O + Efficiency + Select a process to see and change its priority, cores and rule. + Not set diff --git a/Locales/es-ES.xaml b/Locales/es-ES.xaml index 85330ae..8677d66 100644 --- a/Locales/es-ES.xaml +++ b/Locales/es-ES.xaml @@ -15,12 +15,12 @@ Solicitar elevación - Gestión de procesos + Procesos Máscaras de CPU Planes de energía Reglas Diagnóstico - Actividad de ThreadPilot + Actividad Ajustes Configuración @@ -42,8 +42,8 @@ Superposición de carga de inicio de la aplicación - ThreadPilot Actividad - Muestra las acciones realizadas por ThreadPilot, incluidas reglas aplicadas, cambios de afinidad, cambios de prioridad, cambios de plan de energía, cambios de configuración, ajustes, optimizaciones y mensajes de falla segura. + Actividad + Lo que ThreadPilot ha cambiado y lo que ha fallado. Buscar: Categoría: Nivel: @@ -85,7 +85,7 @@ Máscaras de CPU - Cree ajustes preestablecidos de afinidad CPU reutilizables para uso por proceso. + Selecciones de núcleos reutilizables para procesos y reglas. Al seleccionar una máscara aquí solo se edita el ajuste preestablecido. No cambia la afinidad de CPU hasta que la aplica a un proceso o la guarda en una regla de proceso. Nuevo Eliminar @@ -163,7 +163,7 @@ Planes de energía - Administre el plan de energía activo Windows e importe perfiles .pow personalizados + Cambia el plan activo de Windows o importa archivos .pow. Windows Planes de energía Seleccione el plan Windows para activarlo. Establecer como plan activo Windows @@ -182,7 +182,7 @@ Activo - Reglas y automatización + Reglas El monitoreo de automatización observa los eventos de inicio/detención del proceso y aplica el plan de energía configurado, la máscara CPU y las reglas de prioridad. Editor de reglas Cree una regla a partir de un proceso ejecutable o en ejecución para automatizar el plan de energía, la máscara CPU y el comportamiento prioritario. @@ -212,7 +212,7 @@ Borrar el ejecutable seleccionado Reglas actuales - Definir reglas por proceso. Los planes de energía son globales; Las máscaras y prioridades se aplican a los procesos de emparejamiento. + Lo que ThreadPilot aplica automáticamente cuando se inicia un proceso. Quitar Eliminar la asociación seleccionada Plan de energía predeterminado (alternativo cuando ninguna regla coincide) @@ -228,7 +228,7 @@ Guardar configuración Aún no hay reglas de automatización Estado: - Monitoreo de automatización + Supervisión Iniciar monitoreo de automatización Detener el monitoreo de automatización @@ -237,9 +237,9 @@ Ejecutable seleccionado: Descripción: Servicio de automatización - Reglas - Reglas de proceso guardadas - Reglas guardadas desde la pestaña Procesos. ThreadPilot las vuelve a aplicar a ese proceso cada vez que se inicia, si la supervisión automática está activada. Son distintas de las reglas de plan de energía de arriba, que cambian el plan de energía global de Windows. + Cambio de plan de energía + Reglas de procesos + Guardadas desde la página Procesos. Se aplican cada vez que el proceso se inicia, con la supervisión activa. Proceso Aplica Modo @@ -252,7 +252,7 @@ Prioridad de E/S Modo de asignación de CPU Impedir la suspensión mientras este proceso se ejecuta - Elige una máscara de CPU guardada para fijar los núcleos de esta regla. El selector núcleo por núcleo está en la pestaña Procesos. + Elige una máscara de CPU guardada para los núcleos de esta regla. Las máscaras se editan en la página Máscaras de CPU. Guardar cambios Aún no hay reglas de proceso guardadas. Haz clic derecho en un proceso en la pestaña Procesos y elige Reglas para guardar una. ejecutable @@ -263,8 +263,7 @@ Prioridad del proceso: - Gestión de procesos - Buscar, filtrar y controlar configuraciones de procesos activos + Procesos Buscar procesos por nombre Búsqueda de procesos Ocultar procesos del sistema Windows @@ -288,7 +287,7 @@ Máscara de núcleos pendiente Selecciona una máscara pendiente. Nada cambia hasta pulsar Aplicar asignación de CPU. - Aplicar asignación de CPU + Aplicar núcleos Aplica la selección de CPU con el modo elegido y verifica el estado de Windows Aplicar asignación de CPU y guardar como regla Guarde la configuración del proceso actual como regla. Esta configuración se aplicará automáticamente cuando este proceso comience en el futuro. @@ -310,13 +309,12 @@ Guarde la afinidad y prioridad CPU actuales como un perfil reutilizable Perfil de carga Cargar un perfil previamente guardado - Guardar la configuración actual como regla + Guardar como regla Guarda una regla por proceso que ThreadPilot vuelve a aplicar automáticamente la próxima vez que se inicie este proceso, mientras la supervisión de automatización esté activada. Estas reglas son independientes de la pestaña Reglas, que gestiona las asociaciones entre procesos y planes de energía. Eliminar la regla guardada Elimina la regla guardada para este proceso, para que ThreadPilot deje de aplicarla cuando el proceso se inicia. Última acción ThreadPilot: - Actualizar Actualizar la lista de procesos Cargar más Cargar más procesos @@ -324,8 +322,6 @@ Cargar más procesos Lista de procesos en ejecución Mesa de proceso virtualizada con clasificación y selección. - La supervisión de automatización está desactivada. - Active la supervisión de automatización desde Reglas y automatización o desde la bandeja del sistema para mostrar y actualizar la lista de procesos. Nombre del proceso Título de la ventana @@ -347,9 +343,6 @@ Borrar conjuntos CPU Aplicar configuraciones pendientes Aplicar la afinidad pendiente y el plan de energía seleccionado al proceso seleccionado - ThreadPilot aplica las reglas y los cambios solo cuando están configurados. - Estado actual del proceso - Selector de afinidad avanzado Seleccione la máscara pendiente para las acciones de afinidad del menú contextual de fila Plan de energía seleccionado Guardar como regla @@ -404,7 +397,7 @@ Configuración de la aplicación - Configurar notificaciones, bandeja del sistema y comportamiento de las aplicaciones + Notificaciones, bandeja, inicio e idioma. Notificaciones Habilitar notificaciones Nivel de notificación @@ -565,8 +558,8 @@ Guardar - Ajustes y optimizaciones del sistema - Configurar Windows optimizaciones del sistema y ajustes de rendimiento + Ajustes + Ajustes de Windows que afectan al rendimiento. Actualizar todo Actualizar todos los estados de ajuste Alternar este ajuste Windows @@ -772,7 +765,7 @@ Aplicar Automatización en pausa. Los cambios manuales siguen funcionando; las reglas guardadas no se aplican hasta reanudar la supervisión. - Deshacer el último cambio de prioridad + Deshacer el último cambio procesos mostrados Cambios sin guardar Prioridad anterior restaurada. @@ -787,4 +780,17 @@ Modo de eficiencia: {0} Modo de eficiencia no disponible Modo de eficiencia: {0} (sin efecto: la limitación de energía está desactivada en Ajustes) + + + Filtros + Columnas + Prioridad + Núcleos de CPU + Regla + CPU + Memoria + E/S + Eficiencia + Selecciona un proceso para ver y cambiar su prioridad, núcleos y regla. + Sin definir diff --git a/Locales/fr-FR.xaml b/Locales/fr-FR.xaml index c00e597..6f79379 100644 --- a/Locales/fr-FR.xaml +++ b/Locales/fr-FR.xaml @@ -15,12 +15,12 @@ Demander une élévation - Gestion des processus + Processus Masques CPU - Plans d'alimentation + Modes d'alimentation Règles Diagnostic - Activité de ThreadPilot + Activité Optimisations Paramètres @@ -42,8 +42,8 @@ Superposition de chargement au démarrage de l'application - ThreadPilot Activité - Affiche les actions effectuées par ThreadPilot, y compris les règles appliquées, les changements d'affinité, les changements de priorité, les changements de plan d'alimentation, les changements de paramètres, les ajustements, les optimisations et les messages d'échec sûrs. + Activité + Ce que ThreadPilot a modifié et ce qui a échoué. Rechercher : Catégorie : Niveau : @@ -85,7 +85,7 @@ Masques CPU - Créez des préréglages d'affinité CPU réutilisables pour une utilisation par processus. + Sélections de cœurs réutilisables pour les processus et les règles. La sélection d'un masque ici modifie uniquement le préréglage. Cela ne modifie pas l'affinité CPU jusqu'à ce que vous l'appliquiez à un processus ou que vous l'enregistriez dans une règle de processus. Nouveau Supprimer @@ -163,7 +163,7 @@ Plans d'alimentation - Gérez le plan d'alimentation Windows actif et importez des profils .pow personnalisés + Changez le mode Windows actif ou importez des fichiers .pow. Windows Plans d'alimentation Sélectionnez le plan Windows à rendre actif. Définir comme plan Windows actif @@ -182,7 +182,7 @@ Actif - Règles et automatisation + Règles La surveillance de l'automatisation surveille les événements de démarrage/arrêt du processus et applique le plan d'alimentation configuré, le masque CPU et les règles de priorité. Éditeur de règles Créez une règle à partir d'un processus exécutable ou en cours d'exécution pour automatiser le plan d'alimentation, le masque CPU et le comportement de priorité. @@ -212,7 +212,7 @@ Effacer l'exécutable sélectionné Règles actuelles - Définissez des règles par processus. Les plans d’alimentation sont mondiaux ; les masques et les priorités s'appliquent aux processus de correspondance. + Ce que ThreadPilot applique automatiquement au démarrage d'un processus. Supprimer Supprimer l'association sélectionnée Plan d'alimentation par défaut (repli lorsqu'aucune règle ne correspond) @@ -228,7 +228,7 @@ Enregistrer la configuration Aucune règle d'automatisation pour l'instant Statut : - Surveillance de l'automatisation + Surveillance Démarrer la surveillance de l'automatisation Arrêter la surveillance de l'automatisation @@ -237,9 +237,9 @@ Exécutable sélectionné : Descriptif : Service d'automatisation - Règles - Règles de processus enregistrées - Règles enregistrées depuis l'onglet Processus. ThreadPilot les réapplique à ce processus à chaque démarrage, tant que la surveillance automatique est active. Elles sont distinctes des règles de mode d'alimentation ci-dessus, qui changent le mode d'alimentation global de Windows. + Changement de mode d'alimentation + Règles de processus + Enregistrées depuis la page Processus. Appliquées à chaque démarrage du processus, quand la surveillance est active. Processus Applique Mode @@ -252,7 +252,7 @@ Priorité E/S Mode d'affectation CPU Empêcher la mise en veille pendant l'exécution de ce processus - Choisissez un masque CPU enregistré pour définir les cœurs de cette règle. Le sélecteur cœur par cœur se trouve dans l'onglet Processus. + Choisissez un masque CPU enregistré pour les cœurs de cette règle. Les masques se modifient dans la page Masques CPU. Enregistrer les modifications Aucune règle de processus enregistrée. Faites un clic droit sur un processus dans l'onglet Processus et choisissez Règles pour en enregistrer une. Exécutable @@ -263,8 +263,7 @@ Priorité du processus : - Gestion des processus - Rechercher, filtrer et contrôler les configurations de processus actifs + Processus Rechercher des processus par nom Recherche de processus Masquer les processus système Windows @@ -288,7 +287,7 @@ Masque de cœurs en attente Sélectionnez un masque à préparer. Rien ne change avant Appliquer l’affectation CPU. - Appliquer l’affectation CPU + Appliquer les cœurs Applique la sélection CPU avec le mode choisi et vérifie l’état Windows Appliquer l’affectation CPU et enregistrer la règle En règle générale, enregistrez les paramètres de processus actuels. Ces paramètres seront automatiquement appliqués lorsque ce processus démarrera à l’avenir. @@ -310,13 +309,12 @@ Enregistrer l'affinité et la priorité CPU actuelles en tant que profil réutilisable Charger le profil Charger un profil précédemment enregistré - Enregistrer les paramètres actuels en tant que règle + Enregistrer comme règle Enregistre une règle propre au processus que ThreadPilot réapplique automatiquement au prochain démarrage de ce processus, tant que la surveillance de l'automatisation est activée. Ces règles sont distinctes de l'onglet Règles, qui gère les associations entre processus et modes d'alimentation. Supprimer la règle enregistrée Supprime la règle enregistrée pour ce processus, afin que ThreadPilot cesse de l'appliquer au démarrage du processus. Dernière action ThreadPilot : - Actualiser Actualiser la liste des processus Charger plus Charger plus de processus @@ -324,8 +322,6 @@ Charger plus de processus Liste des processus en cours d'exécution Table de processus virtualisée avec tri et sélection - La surveillance de l'automatisation est désactivée. - Activez la surveillance de l'automatisation depuis Règles et automatisation ou la zone de notification pour afficher et actualiser la liste des processus. Nom du processus Titre de la fenêtre @@ -347,9 +343,6 @@ Effacer les ensembles CPU Appliquer les paramètres en attente Appliquer l'affinité en attente et le plan d'alimentation sélectionné au processus sélectionné - Les règles et les modifications sont appliquées par ThreadPilot uniquement lorsqu'elles sont configurées. - Statut actuel du processus - Sélecteur d'affinité avancé Sélectionnez le masque en attente pour les actions d'affinité du menu contextuel des lignes Plan d'alimentation sélectionné Enregistrer comme règle @@ -404,7 +397,7 @@ Paramètres des applications - Configurer les notifications, la barre d'état système et le comportement des applications + Notifications, zone de notification, démarrage et langue. Notifications Activer les notifications Niveau de notification @@ -565,8 +558,8 @@ Enregistrer - Ajustements et optimisations du système - Configurer les optimisations du système Windows et les ajustements de performances + Optimisations + Paramètres Windows qui influent sur les performances. Actualiser tout Actualiser tous les états de réglage Activez ce réglage Windows @@ -772,7 +765,7 @@ Appliquer Automatisation en pause. Les modifications manuelles fonctionnent toujours ; les règles enregistrées ne s'appliquent qu'à la reprise de la surveillance. - Annuler la dernière modification de priorité + Annuler la dernière modification processus affichés Modifications non enregistrées Priorité précédente restaurée. @@ -787,4 +780,17 @@ Mode efficacité : {0} Mode efficacité indisponible Mode efficacité : {0} (sans effet : la limitation d'alimentation est désactivée dans les Optimisations) + + + Filtres + Colonnes + Priorité + Cœurs CPU + Règle + CPU + Mémoire + E/S + Efficacité + Sélectionnez un processus pour voir et modifier sa priorité, ses cœurs et sa règle. + Non défini diff --git a/Locales/it-IT.xaml b/Locales/it-IT.xaml index 095b2ae..02392ac 100644 --- a/Locales/it-IT.xaml +++ b/Locales/it-IT.xaml @@ -15,12 +15,12 @@ Richiedi elevazione - Gestione dei processi + Processi Maschere CPU - Piani di alimentazione + Piani energetici Regole Diagnostica - Attività di ThreadPilot + Attività Ottimizzazioni Impostazioni @@ -42,8 +42,8 @@ Overlay di caricamento all'avvio dell'applicazione - ThreadPilot Attività - Mostra le azioni eseguite da ThreadPilot, incluse regole applicate, modifiche di affinità, modifiche di priorità, modifiche del piano di alimentazione, modifiche delle impostazioni, modifiche, ottimizzazioni e messaggi di errore sicuro. + Attività + Cosa ha cambiato ThreadPilot e cosa non è riuscito. Cerca: Categoria: Livello: @@ -85,7 +85,7 @@ Maschere CPU - Crea preimpostazioni di affinità CPU riutilizzabili per l'utilizzo in ciascun processo. + Selezioni di core riutilizzabili per processi e regole. Selezionando una maschera qui si modifica solo la preimpostazione. Non modifica l'affinità CPU finché non lo applichi a un processo o lo salvi in ​​una regola di processo. Nuovo Elimina @@ -163,7 +163,7 @@ Piani di alimentazione - Gestisci il piano di alimentazione Windows attivo e importa profili .pow personalizzati + Cambia il piano Windows attivo o importa file .pow. Windows Piani di alimentazione Seleziona il piano Windows da rendere attivo. Imposta come piano Windows attivo @@ -182,7 +182,7 @@ Attivo - Regole e automazione + Regole Il monitoraggio dell'automazione controlla gli eventi di avvio/arresto del processo e applica il piano di risparmio energia configurato, la maschera CPU e le regole di priorità. Editor delle regole Crea una regola da un processo eseguibile o in esecuzione per automatizzare il piano di risparmio energia, la maschera CPU e il comportamento prioritario. @@ -212,7 +212,7 @@ Cancella l'eseguibile selezionato Regole attuali - Definisci regole per processo. I piani di alimentazione sono globali; maschere e priorità si applicano ai processi corrispondenti. + Cosa applica ThreadPilot in automatico all'avvio di un processo. Rimuovi Rimuovi l'associazione selezionata Piano di alimentazione predefinito (fallback quando nessuna regola corrisponde) @@ -228,7 +228,7 @@ Salva configurazione Nessuna regola di automazione ancora Stato: - Monitoraggio dell'automazione + Monitoraggio Avvia il monitoraggio dell'automazione Arresta il monitoraggio dell'automazione @@ -237,9 +237,9 @@ Eseguibile selezionato: Descrizione: Servizio di automazione - Regole - Regole di processo salvate - Regole salvate dalla scheda Processi. ThreadPilot le riapplica a quel processo a ogni avvio, se il monitoraggio automatico è attivo. Sono separate dalle regole dei profili energetici qui sopra, che cambiano il piano di alimentazione globale di Windows. + Cambio piano energetico + Regole dei processi + Salvate dalla pagina Processi. Applicate a ogni avvio del processo, con il monitoraggio attivo. Processo Applica Modalità @@ -252,7 +252,7 @@ Priorità I/O Modalità di assegnazione CPU Impedisci la sospensione mentre il processo è in esecuzione - Scegli una maschera CPU salvata per impostare i core a cui questa regola vincola il processo. Il selettore core per core è nella scheda Processi. + Scegli una maschera CPU salvata per i core di questa regola. Le maschere si modificano nella pagina Maschere CPU. Salva modifiche Nessuna regola di processo salvata. Fai clic destro su un processo nella scheda Processi e scegli Regole per salvarne una. Eseguibile @@ -263,8 +263,7 @@ Priorità del processo: - Gestione dei processi - Cerca, filtra e controlla le configurazioni dei processi attivi + Processi Cerca processi per nome Ricerca di processi Nascondi i processi di sistema Windows @@ -288,7 +287,7 @@ Maschera core in sospeso Seleziona una maschera da preparare. Nulla cambia finché non fai clic su Applica assegnazione CPU. - Applica assegnazione CPU + Applica core Applica la selezione CPU con la modalità scelta e verifica lo stato di Windows Applica assegnazione CPU e salva come regola Salva le impostazioni del processo corrente come regola. Queste impostazioni verranno applicate automaticamente all'avvio di questo processo in futuro. @@ -310,13 +309,12 @@ Salva l'affinità e la priorità CPU correnti come profilo riutilizzabile Carica profilo Carica un profilo salvato in precedenza - Salva le impostazioni correnti come regola + Salva come regola Salva una regola per processo che ThreadPilot riapplica automaticamente al successivo avvio di questo processo, finché il monitoraggio dell'automazione è attivo. Queste regole sono separate dalla scheda Regole, che gestisce le associazioni tra processi e combinazioni di risparmio energia. Elimina la regola salvata Rimuove la regola salvata per questo processo, così ThreadPilot smette di riapplicarla all'avvio del processo. Ultima azione ThreadPilot: - Aggiorna Aggiorna l'elenco dei processi Carica altro Carica più processi @@ -324,8 +322,6 @@ Carica più processi Elenco dei processi in esecuzione Tabella dei processi virtualizzata con ordinamento e selezione - Il monitoraggio dell'automazione è disabilitato. - Abilita il monitoraggio dell'automazione da Regole e automazione o dall'area di notifica per visualizzare e aggiornare l'elenco dei processi. Nome del processo Titolo della finestra @@ -347,9 +343,6 @@ Cancella CPU Imposta Applica le impostazioni in sospeso Applica l'affinità in sospeso e la combinazione per il risparmio di energia selezionata al processo selezionato - Le regole e le modifiche vengono applicate da ThreadPilot solo se configurate. - Stato attuale del processo - Selettore di affinità avanzato Seleziona la maschera in sospeso per le azioni di affinità del menu contestuale delle righe Piano di alimentazione selezionato Salva come regola @@ -404,7 +397,7 @@ Impostazioni dell'applicazione - Configura notifiche, barra delle applicazioni e comportamento dell'applicazione + Notifiche, area di notifica, avvio e lingua. Notifiche Abilita notifiche Livello di notifica @@ -565,8 +558,8 @@ Salva - Modifiche e ottimizzazioni del sistema - Configura Windows ottimizzazioni del sistema e modifiche alle prestazioni + Ottimizzazioni + Impostazioni di Windows che influiscono sulle prestazioni. Aggiorna tutto Aggiorna tutti gli stati delle modifiche Attiva/disattiva questo tweak Windows @@ -772,7 +765,7 @@ Applica Automazione in pausa. Le modifiche manuali funzionano; le regole salvate non vengono applicate finché il monitoraggio non riprende. - Annulla ultima modifica di priorità + Annulla ultima modifica processi visibili Modifiche non salvate Priorità precedente ripristinata. @@ -787,4 +780,17 @@ Modalità efficienza: {0} Modalità efficienza non disponibile Modalità efficienza: {0} (nessun effetto: il power throttling è disattivato nelle Ottimizzazioni) + + + Filtri + Colonne + Priorità + Core CPU + Regola + CPU + Memoria + I/O + Efficienza + Seleziona un processo per vedere e cambiare priorità, core e regola. + Non impostata diff --git a/Locales/ru-RU.xaml b/Locales/ru-RU.xaml index 1727c2e..52b54be 100644 --- a/Locales/ru-RU.xaml +++ b/Locales/ru-RU.xaml @@ -15,12 +15,12 @@ Запросить повышение - Управление процессами + Процессы Маски CPU - Планы электропитания + Электропитание Правила Диагностика - Активность ThreadPilot + Активность Тонкая настройка Настройки @@ -42,8 +42,8 @@ Оверлей загрузки приложения при запуске - ThreadPilot Активность - Показывает действия, выполняемые ThreadPilot, включая примененные правила, изменения привязки, изменения приоритета, изменения плана электропитания, изменения настроек, настройки, оптимизации и сообщения о безопасных сбоях. + Активность + Что изменил ThreadPilot и что не удалось. Поиск: Категория: Уровень: @@ -85,7 +85,7 @@ Маски CPU - Создавайте повторно используемые наборы привязки к CPU для отдельных процессов. + Наборы ядер для процессов и правил. Выбор маски здесь редактирует только предустановку. Привязка CPU не изменяется до тех пор, пока вы не примените ее к процессу или не сохраните в правиле процесса. Новый Удалить @@ -163,7 +163,7 @@ Планы электропитания - Управляйте активным планом электропитания Windows и импортируйте пользовательские профили .pow. + Смена активной схемы Windows или импорт файлов .pow. Windows Планы электропитания Выберите план Windows, чтобы активировать его. Установить как активный план Windows @@ -182,7 +182,7 @@ Активный - Правила и автоматизация + Правила Мониторинг автоматизации отслеживает события запуска и остановки процесса и применяет настроенный план электропитания, маску CPU и правила приоритета. Редактор правил Создайте правило из исполняемого или запущенного процесса для автоматизации плана электропитания, маски CPU и приоритетного поведения. @@ -212,7 +212,7 @@ Очистить выбранный исполняемый файл Текущие правила - Определите правила для каждого процесса. Планы электропитания являются глобальными; маски и приоритеты применяются к процессам сопоставления. + Что ThreadPilot применяет автоматически при запуске процесса. Удалить Удалить выбранную ассоциацию План электропитания по умолчанию (резервный вариант, если ни одно правило не соответствует) @@ -228,7 +228,7 @@ Сохранить конфигурацию Правил автоматизации пока нет Статус: - Автоматизация мониторинга + Мониторинг Начать мониторинг автоматизации Остановить мониторинг автоматизации @@ -237,9 +237,9 @@ Выбранный исполняемый файл: Описание: Служба автоматизации - Правила - Сохранённые правила процессов - Правила, сохранённые на вкладке «Процессы». ThreadPilot применяет их к процессу при каждом запуске, пока включён автоматический мониторинг. Они отличаются от правил схем питания выше, которые переключают глобальную схему питания Windows. + Смена схемы питания + Правила процессов + Сохраняются на странице «Процессы». Применяются при каждом запуске процесса, пока включён мониторинг. Процесс Применяет Режим @@ -252,7 +252,7 @@ Приоритет ввода-вывода Режим назначения ЦП Не давать системе засыпать, пока процесс работает - Выберите сохранённую маску ЦП, чтобы задать ядра для этого правила. Выбор отдельных ядер — на вкладке «Процессы». + Выберите сохранённую маску CPU для ядер этого правила. Маски редактируются на странице «Маски CPU». Сохранить изменения Сохранённых правил процессов пока нет. Щёлкните процесс правой кнопкой на вкладке «Процессы» и выберите «Правила». Исполняемый файл @@ -263,8 +263,7 @@ Приоритет процесса: - Управление процессами - Поиск, фильтрация и контроль активных конфигураций процессов + Процессы Поиск процессов по названию Процесс поиска Скрыть системные процессы Windows @@ -288,7 +287,7 @@ Ожидающая маска ядер Подготовьте маску. Изменения вступят в силу только после нажатия «Применить назначение ЦП». - Применить назначение ЦП + Применить ядра Применяет выбор ЦП в выбранном режиме и проверяет состояние Windows. Применить назначение ЦП и сохранить правило Сохраните текущие настройки процесса как правило. Эти настройки будут автоматически применены при запуске этого процесса в будущем. @@ -310,13 +309,12 @@ Сохранить текущие настройки привязки к CPU и приоритета как повторно используемый профиль. Загрузить профиль Загрузите ранее сохраненный профиль - Сохранить текущие настройки как правило + Сохранить как правило Сохраняет правило для этого процесса, которое ThreadPilot автоматически применяет снова при следующем запуске процесса, пока включён мониторинг автоматизации. Эти правила не связаны с вкладкой Правила, где настраиваются сопоставления процессов и схем электропитания. Удалить сохранённое правило Удаляет сохранённое правило для этого процесса, чтобы ThreadPilot больше не применял его при запуске процесса. Последнее действие ThreadPilot: - Обновить Обновить список процессов Загрузить больше Загрузить больше процессов @@ -324,8 +322,6 @@ Загрузить больше процессов Список запущенных процессов Виртуализированная таблица процессов с сортировкой и выбором - Мониторинг автоматизации отключен. - Включите мониторинг автоматизации в разделе «Правила и автоматизация» или в системном трее, чтобы показать и обновлять список процессов. Имя процесса Название окна @@ -347,9 +343,6 @@ Очистить наборы CPU Применить ожидающие настройки Примените ожидающее соответствие и выбранный план электропитания к выбранному процессу. - Правила и изменения применяются ThreadPilot только после настройки. - Текущий статус процесса - Расширенный выбор привязки Выберите ожидающую маску для действий привязки контекстного меню строки. Выбранный план электропитания Сохранить как правило @@ -404,7 +397,7 @@ Настройки приложения - Настройка уведомлений, панели задач и поведения приложений + Уведомления, трей, автозапуск и язык. Уведомления Включить уведомления Уровень уведомления @@ -565,8 +558,8 @@ Сохранить - Системные настройки и оптимизации - Настройте оптимизацию системы Windows и настройки производительности. + Тонкая настройка + Параметры Windows, влияющие на производительность. Обновить все Обновить все состояния настройки Переключить эту настройку Windows @@ -772,7 +765,7 @@ Применить Автоматизация приостановлена. Ручные изменения работают; сохранённые правила не применяются до возобновления мониторинга. - Отменить последнее изменение приоритета + Отменить последнее изменение процессов показано Несохранённые изменения Предыдущий приоритет восстановлен. @@ -787,4 +780,17 @@ Режим эффективности: {0} Режим эффективности недоступен Режим эффективности: {0} (не действует: регулирование мощности отключено в оптимизациях) + + + Фильтры + Столбцы + Приоритет + Ядра CPU + Правило + CPU + Память + Ввод-вывод + Эффективность + Выберите процесс, чтобы увидеть и изменить приоритет, ядра и правило. + Не задано diff --git a/Locales/zh-CN.xaml b/Locales/zh-CN.xaml index 73de758..06920dc 100644 --- a/Locales/zh-CN.xaml +++ b/Locales/zh-CN.xaml @@ -15,14 +15,14 @@ 请求权限提升 - 进程管理 + 进程 CPU 掩码 电源计划 - 自动化规则 + 规则 性能诊断 - 活动日志 + 活动 系统微调 - 应用设置 + 设置 启动时最小化 @@ -42,8 +42,8 @@ 应用启动加载覆盖层 - ThreadPilot 活动日志 - 显示 ThreadPilot 执行的操作,包括已应用规则、关联性更改、优先级更改、电源计划更改、设置更改、调整、优化以及安全故障消息。 + 活动 + ThreadPilot 所做的更改及失败记录。 搜索: 类别: 级别: @@ -85,7 +85,7 @@ CPU 掩码 - 创建可复用的 CPU 关联性预设以供每个进程使用。 + 可复用于进程和规则的核心选择。 在此处选择掩码仅编辑预设。在将其应用于进程或保存在进程规则中之前,它不会更改 CPU 关联性。 新建 删除 @@ -163,7 +163,7 @@ 电源计划管理 - 管理活动的 Windows 电源计划并导入自定义 .pow 配置文件 + 切换当前 Windows 电源计划或导入 .pow 文件。 Windows 电源计划 选择要激活的 Windows 电源计划。 设为活动 Windows 电源计划 @@ -182,7 +182,7 @@ 活动 - 规则与自动化 + 规则 自动化监控监视进程的启动/停止事件,并应用配置的电源计划、CPU 掩码和优先级规则。 规则编辑器 从可执行文件或运行中的进程创建规则,以实现电源计划、CPU 掩码和优先级行为的自动化。 @@ -212,7 +212,7 @@ 清除选定的可执行文件 当前规则 - 定义针对每个进程的规则。电源计划是全局的;掩码和优先级适用于匹配的进程。 + 进程启动时 ThreadPilot 自动应用的设置。 删除 删除所选关联 默认电源计划 (当无规则匹配时的后备方案) @@ -228,7 +228,7 @@ 保存配置 尚无自动化规则 状态: - 自动化监控 + 监控 启动自动化监控 停止自动化监控 @@ -237,9 +237,9 @@ 选定的可执行文件: 描述: 自动化服务 - 规则 - 已保存的进程规则 - 在“进程”选项卡中保存的规则。只要自动化监控处于开启状态,ThreadPilot 会在该进程每次启动时重新应用它们。它们与上方的电源计划规则不同,后者切换的是 Windows 全局电源计划。 + 电源计划切换 + 进程规则 + 从“进程”页面保存。监控开启时,每次进程启动都会应用。 进程 应用 模式 @@ -252,7 +252,7 @@ I/O 优先级 CPU 分配模式 该进程运行时阻止系统休眠 - 选择一个已保存的 CPU 掩码来设置此规则绑定的核心。逐核选择器在“进程”选项卡中。 + 为此规则的核心选择已保存的 CPU 掩码。掩码在“CPU 掩码”页面中编辑。 保存更改 尚无已保存的进程规则。在“进程”选项卡中右键点击某个进程并选择“规则”即可保存。 可执行文件 @@ -263,8 +263,7 @@ 进程优先级: - 系统进程管理 - 搜索、过滤和控制活动的进程配置 + 进程 按名称搜索进程 进程搜索 隐藏 Windows 系统进程 @@ -288,7 +287,7 @@ 待处理的核心掩码 选择并暂存掩码。点击“应用 CPU 分配”前不会发生更改。 - 应用 CPU 分配 + 应用核心 使用所选模式应用待处理 CPU 选择,并验证 Windows 状态 应用 CPU 分配并保存为规则 将当前进程设置保存为规则。以后此进程启动时将自动应用这些设置。 @@ -310,13 +309,12 @@ 将当前 CPU 关联性和优先级保存为可复用的配置文件 加载配置文件 加载以前保存的配置文件 - 保存当前设置为规则 + 保存为规则 保存针对该进程的规则;只要启用了自动化监视,ThreadPilot 会在此进程下次启动时自动重新应用它。这些规则与“自动化规则”选项卡相互独立,后者管理进程与电源计划的关联。 删除已保存的规则 删除此进程的已保存规则,ThreadPilot 将不再在该进程启动时应用它。 最后一次 ThreadPilot 操作: - 刷新 刷新进程列表 加载更多 加载更多进程 @@ -324,8 +322,6 @@ 加载更多进程 运行中进程列表 支持排序和选择的虚拟化进程表 - 自动化监控已禁用。 - 请从“规则和自动化”或系统托盘启用自动化监控,以显示和刷新进程列表。 进程名称 窗口标题 @@ -347,9 +343,6 @@ 清除 CPU 集 应用待处理设置 将待处理的关联性和选定的电源计划应用于选定的进程 - ThreadPilot 仅在配置后才应用规则和更改。 - 当前进程状态 - 高级关联性选择器 为行上下文菜单关联性操作选择待处理掩码 所选电源计划 保存为规则 @@ -404,7 +397,7 @@ ThreadPilot 系统设置 - 配置通知、系统托盘和应用程序行为 + 通知、托盘、启动和语言。 系统通知 启用应用通知 通知级别 @@ -565,8 +558,8 @@ 保存 - 系统微调与优化 - 配置 Windows 系统级优化项和性能微调选项 + 系统微调 + 影响性能的 Windows 设置。 刷新状态 刷新所有微调选项的状态 切换此 Windows 系统微调项 @@ -772,7 +765,7 @@ 应用 自动化已暂停。手动更改仍然有效;恢复监控之前不会应用已保存的规则。 - 撤销上次优先级更改 + 撤销上次更改 个进程已显示 未保存的更改 已恢复之前的优先级。 @@ -787,4 +780,17 @@ 效率模式:{0} 效率模式不可用 效率模式:{0}(无效:已在优化中禁用电源限制) + + + 筛选 + 列 + 优先级 + CPU 核心 + 规则 + CPU + 内存 + I/O + 效率 + 选择一个进程以查看和更改其优先级、核心和规则。 + 未设置 diff --git a/MainWindow.xaml b/MainWindow.xaml index 459e34f..69ba5cc 100644 --- a/MainWindow.xaml +++ b/MainWindow.xaml @@ -83,8 +83,8 @@ diff --git a/Tests/ThreadPilot.Core.Tests/MasksViewModelTests.cs b/Tests/ThreadPilot.Core.Tests/MasksViewModelTests.cs index 5f0ea58..fa2e64d 100644 --- a/Tests/ThreadPilot.Core.Tests/MasksViewModelTests.cs +++ b/Tests/ThreadPilot.Core.Tests/MasksViewModelTests.cs @@ -17,7 +17,7 @@ public void MasksView_SubtitleClarifiesPerProcessUse() var locale = LoadEnglishLocale(); Assert.Contains("MasksView_Subtitle", serialized, StringComparison.Ordinal); - Assert.Contains("per-process use", locale, StringComparison.Ordinal); + Assert.Contains("for processes and rules", locale, StringComparison.Ordinal); } [Fact] diff --git a/Tests/ThreadPilot.Core.Tests/ProcessViewModelContextMenuTests.cs b/Tests/ThreadPilot.Core.Tests/ProcessViewModelContextMenuTests.cs index 0bfb9ac..56a4ca6 100644 --- a/Tests/ThreadPilot.Core.Tests/ProcessViewModelContextMenuTests.cs +++ b/Tests/ThreadPilot.Core.Tests/ProcessViewModelContextMenuTests.cs @@ -264,6 +264,27 @@ public async Task ContextMemoryPriorityCommand_WhenSuccessful_UpdatesSelectedPro Assert.Equal("Memory priority: BelowNormal", viewModel.SelectedProcessSummary.MemoryPriorityText); } + [Fact] + public async Task PriorityPickers_StartFromTheSelectedProcessCurrentValues() + { + var memoryPriorityService = new Mock(); + memoryPriorityService + .Setup(service => service.GetMemoryPriorityAsync(It.IsAny())) + .ReturnsAsync(ProcessMemoryPriority.Low); + memoryPriorityService + .Setup(service => service.GetIoPriorityAsync(It.IsAny())) + .ReturnsAsync((ProcessIoPriority?)null); + var viewModel = CreateViewModel(CreateProcessService().Object, memoryPriorityService: memoryPriorityService.Object); + var process = CreateProcess(); + process.Priority = ProcessPriorityClass.High; + + await viewModel.SelectedProcessSummary.UpdateAsync(process); + + Assert.Equal(ProcessPriorityClass.High, viewModel.PendingCpuPriority); + Assert.Equal(ProcessMemoryPriority.Low, viewModel.PendingMemoryPriority); + Assert.Null(viewModel.PendingIoPriority); // unreadable: the picker stays empty instead of guessing + } + [Fact] public async Task CopyContextProcessInfo_IncludesNamePidAndPath() { diff --git a/Tests/ThreadPilot.Core.Tests/ProcessViewXamlBindingTests.cs b/Tests/ThreadPilot.Core.Tests/ProcessViewXamlBindingTests.cs index a2373fe..90c08db 100644 --- a/Tests/ThreadPilot.Core.Tests/ProcessViewXamlBindingTests.cs +++ b/Tests/ThreadPilot.Core.Tests/ProcessViewXamlBindingTests.cs @@ -301,15 +301,14 @@ public void LegacyActionSidePanel_IsGoneAndItsControlsLiveInTheVisiblePicker() var document = XDocument.Load(ProcessViewPath, LoadOptions.PreserveWhitespace); var serialized = document.ToString(SaveOptions.DisableFormatting); + // The core picker holds the primary apply action, so it is a plain card, never collapsed. var picker = Assert.Single( document.Descendants(), - element => element.Name.LocalName == "Expander" && - element.Attributes().Any(attribute => - attribute.Value.Contains("ProcessView_AdvancedAffinityPicker", StringComparison.Ordinal))); + element => element.Attributes().Any(attribute => + attribute.Name.LocalName == "Name" && attribute.Value == "CpuCoresCard")); var pickerXml = picker.ToString(SaveOptions.DisableFormatting); - // The picker now holds the primary apply action, so it must start open. - Assert.Equal("True", picker.Attribute("IsExpanded")?.Value); + Assert.DoesNotContain(picker.AncestorsAndSelf(), element => element.Name.LocalName == "Expander"); Assert.Contains("SelectedCpuAssignmentMode", pickerXml, StringComparison.Ordinal); Assert.Contains("SetAffinityCommand", pickerXml, StringComparison.Ordinal); Assert.Contains("ProcessView_CpuCoresReadOnlyHint", pickerXml, StringComparison.Ordinal); diff --git a/ViewModels/ProcessPowerPlanAssociationViewModel.cs b/ViewModels/ProcessPowerPlanAssociationViewModel.cs index 1de8e09..ba3590e 100644 --- a/ViewModels/ProcessPowerPlanAssociationViewModel.cs +++ b/ViewModels/ProcessPowerPlanAssociationViewModel.cs @@ -127,6 +127,18 @@ public ProcessPowerPlanAssociationViewModel( this.persistentRuleStore = persistentRuleStore; this.ruleCreationService = ruleCreationService; + if (localizationService != null) + { + localizationService.LanguageChanged += (_, _) => + { + this.OnPropertyChanged(nameof(this.SavedRulePriorityOptions)); + this.OnPropertyChanged(nameof(this.SavedRuleMemoryPriorityOptions)); + this.OnPropertyChanged(nameof(this.SavedRuleIoPriorityOptions)); + this.OnPropertyChanged(nameof(this.SavedRuleEfficiencyModeOptions)); + this.OnPropertyChanged(nameof(this.SavedRuleCpuAssignmentModeOptions)); + }; + } + // Subscribe to events this.associationService.ConfigurationChanged += this.OnConfigurationChanged; this.monitorManagerService.ServiceStatusChanged += this.OnServiceStatusChanged; @@ -227,27 +239,40 @@ private async Task DeleteSavedProcessRuleAsync(SavedProcessRule? rule) // Realtime is deliberately absent: the service refuses it, so offering it would only // produce an error the user cannot resolve. - public IReadOnlyList SavedRulePriorityOptions { get; } = - [ - NoneOption, - nameof(System.Diagnostics.ProcessPriorityClass.Idle), - nameof(System.Diagnostics.ProcessPriorityClass.BelowNormal), - nameof(System.Diagnostics.ProcessPriorityClass.Normal), - nameof(System.Diagnostics.ProcessPriorityClass.AboveNormal), - nameof(System.Diagnostics.ProcessPriorityClass.High), - ]; - - public IReadOnlyList SavedRuleMemoryPriorityOptions { get; } = - [NoneOption, .. Enum.GetNames()]; - - public IReadOnlyList SavedRuleIoPriorityOptions { get; } = - [NoneOption, .. Enum.GetNames()]; - - public IReadOnlyList SavedRuleEfficiencyModeOptions { get; } = - [NoneOption, .. Enum.GetNames()]; - - public IReadOnlyList SavedRuleCpuAssignmentModeOptions { get; } = - [.. Enum.GetNames()]; + // Values stay the enum names the editor already stores; only the labels are localized. + public IReadOnlyList SavedRulePriorityOptions => this.Options( + "ProcessView_Priority", + [ + NoneOption, + nameof(System.Diagnostics.ProcessPriorityClass.Idle), + nameof(System.Diagnostics.ProcessPriorityClass.BelowNormal), + nameof(System.Diagnostics.ProcessPriorityClass.Normal), + nameof(System.Diagnostics.ProcessPriorityClass.AboveNormal), + nameof(System.Diagnostics.ProcessPriorityClass.High), + ]); + + public IReadOnlyList SavedRuleMemoryPriorityOptions => + this.Options("ProcessView_Priority", [NoneOption, .. Enum.GetNames()]); + + public IReadOnlyList SavedRuleIoPriorityOptions => + this.Options("ProcessView_Priority", [NoneOption, .. Enum.GetNames()]); + + public IReadOnlyList SavedRuleEfficiencyModeOptions => + this.Options("EfficiencyMode_", [NoneOption, .. Enum.GetNames()]); + + public IReadOnlyList SavedRuleCpuAssignmentModeOptions => + this.Options("CpuAssignmentMode_", [.. Enum.GetNames()]); + + private RuleOption[] Options(string labelPrefix, IReadOnlyList values) => + values.Select(value => new RuleOption( + value, + value == NoneOption ? this.Localize("Rules_NotSet", "Not set") + // Windows calls the Idle class "Low", as Task Manager does. + : value == nameof(System.Diagnostics.ProcessPriorityClass.Idle) ? this.Localize("ProcessView_PriorityLow", "Low") + : this.Localize(labelPrefix + value, value))) + .ToArray(); + + public sealed record RuleOption(string Value, string Label); partial void OnSelectedSavedProcessRuleChanged(SavedProcessRule? value) { diff --git a/ViewModels/ProcessViewModel.PriorityEditor.cs b/ViewModels/ProcessViewModel.PriorityEditor.cs index e85e760..7a4caaf 100644 --- a/ViewModels/ProcessViewModel.PriorityEditor.cs +++ b/ViewModels/ProcessViewModel.PriorityEditor.cs @@ -1,5 +1,6 @@ namespace ThreadPilot.ViewModels { + using System.ComponentModel; using System.Diagnostics; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; @@ -8,31 +9,58 @@ namespace ThreadPilot.ViewModels public partial class ProcessViewModel { + // Null shows an empty picker: the value could not be read for this process. [ObservableProperty] - private ProcessPriorityClass pendingCpuPriority = ProcessPriorityClass.Normal; + private ProcessPriorityClass? pendingCpuPriority; [ObservableProperty] - private ProcessMemoryPriority pendingMemoryPriority = ProcessMemoryPriority.Normal; + private ProcessMemoryPriority? pendingMemoryPriority; [ObservableProperty] - private ProcessIoPriority pendingIoPriority = ProcessIoPriority.Normal; + private ProcessIoPriority? pendingIoPriority; [ObservableProperty] - private ProcessEfficiencyMode pendingEfficiencyMode = ProcessEfficiencyMode.SystemManaged; + private ProcessEfficiencyMode? pendingEfficiencyMode; private PriorityUndoSnapshot? priorityUndo; [RelayCommand] - private Task ApplySelectedCpuPriority() => this.SetContextCpuPriorityAsync(this.SelectedProcess, this.PendingCpuPriority); + private Task ApplySelectedCpuPriority() => + this.PendingCpuPriority is { } value ? this.SetContextCpuPriorityAsync(this.SelectedProcess, value) : Task.CompletedTask; [RelayCommand] - private Task ApplySelectedMemoryPriority() => this.SetContextMemoryPriorityAsync(this.SelectedProcess, this.PendingMemoryPriority); + private Task ApplySelectedMemoryPriority() => + this.PendingMemoryPriority is { } value ? this.SetContextMemoryPriorityAsync(this.SelectedProcess, value) : Task.CompletedTask; [RelayCommand] - private Task ApplySelectedIoPriority() => this.SetContextIoPriorityAsync(this.SelectedProcess, this.PendingIoPriority); + private Task ApplySelectedIoPriority() => + this.PendingIoPriority is { } value ? this.SetContextIoPriorityAsync(this.SelectedProcess, value) : Task.CompletedTask; [RelayCommand] - private Task ApplySelectedEfficiencyMode() => this.SetContextEfficiencyModeAsync(this.SelectedProcess, this.PendingEfficiencyMode); + private Task ApplySelectedEfficiencyMode() => + this.PendingEfficiencyMode is { } value ? this.SetContextEfficiencyModeAsync(this.SelectedProcess, value) : Task.CompletedTask; + + // The summary is re-read on selection and after every change, so the pickers start from what the process has now. + private void OnSelectedProcessSummaryChanged(object? sender, PropertyChangedEventArgs e) + { + var summary = this.SelectedProcessSummary; + switch (e.PropertyName) + { + case nameof(SelectedProcessSummaryViewModel.CpuPriority): + case nameof(SelectedProcessSummaryViewModel.HasSelection): + this.PendingCpuPriority = summary.HasSelection ? summary.CpuPriority : null; + break; + case nameof(SelectedProcessSummaryViewModel.MemoryPriority): + this.PendingMemoryPriority = summary.MemoryPriority; + break; + case nameof(SelectedProcessSummaryViewModel.IoPriority): + this.PendingIoPriority = summary.IoPriority; + break; + case nameof(SelectedProcessSummaryViewModel.EfficiencyMode): + this.PendingEfficiencyMode = summary.EfficiencyMode; + break; + } + } [RelayCommand] private Task SetContextEfficiencyOn(ProcessModel? process) => this.SetContextEfficiencyModeAsync(process, ProcessEfficiencyMode.On); diff --git a/ViewModels/ProcessViewModel.cs b/ViewModels/ProcessViewModel.cs index 4284250..df40f9a 100644 --- a/ViewModels/ProcessViewModel.cs +++ b/ViewModels/ProcessViewModel.cs @@ -250,6 +250,7 @@ public ProcessViewModel( persistentRuleMatcher, localizationService, SystemTweaksService.IsPowerThrottlingOff); + this.SelectedProcessSummary.PropertyChanged += this.OnSelectedProcessSummaryChanged; // Subscribe to topology detection events this.cpuTopologyService.TopologyDetected += this.OnTopologyDetected; diff --git a/ViewModels/SelectedProcessSummaryViewModel.cs b/ViewModels/SelectedProcessSummaryViewModel.cs index 3244b00..958a2e8 100644 --- a/ViewModels/SelectedProcessSummaryViewModel.cs +++ b/ViewModels/SelectedProcessSummaryViewModel.cs @@ -28,6 +28,7 @@ public sealed class SelectedProcessSummaryViewModel : ObservableObject private ProcessIoPriority? ioPriority; private ProcessEfficiencyMode? efficiencyMode; private string efficiencyModeText = "Efficiency mode unavailable"; + private bool isEfficiencyModeVoided; private string processTitle = "No process selected"; private string currentProcessStatusText = "No process selected"; private string cpuUsageText = "CPU: unavailable"; @@ -130,6 +131,12 @@ public string EfficiencyModeText private set => this.SetProperty(ref this.efficiencyModeText, value); } + public bool IsEfficiencyModeVoided + { + get => this.isEfficiencyModeVoided; + private set => this.SetProperty(ref this.isEfficiencyModeVoided, value); + } + public string ProcessTitle { get => this.processTitle; @@ -289,6 +296,7 @@ private void Clear(int version, string? lastOperationMessage, bool lastOperation this.MemoryPriority = null; this.IoPriority = null; this.EfficiencyMode = null; + this.IsEfficiencyModeVoided = false; this.IsProtectedOrAccessDenied = false; this.HasThreadPilotRule = false; this.ProcessTitle = this.L("ProcessView_NoProcessSelected", "No process selected"); @@ -371,6 +379,7 @@ private async Task UpdateIoPriorityAsync(ProcessModel process, int version) private async Task UpdateEfficiencyModeAsync(ProcessModel process, int version) { this.EfficiencyMode = null; + this.IsEfficiencyModeVoided = false; this.EfficiencyModeText = this.L("ProcessSummary_EfficiencyUnavailable", "Efficiency mode unavailable"); if (this.memoryPriorityService == null) { @@ -387,7 +396,8 @@ private async Task UpdateEfficiencyModeAsync(ProcessModel process, int version) this.EfficiencyMode = mode.Value; var label = this.L($"EfficiencyMode_{mode.Value}", mode.Value.ToString()); - this.EfficiencyModeText = mode == ProcessEfficiencyMode.On && this.isPowerThrottlingOff() + this.IsEfficiencyModeVoided = mode == ProcessEfficiencyMode.On && this.isPowerThrottlingOff(); + this.EfficiencyModeText = this.IsEfficiencyModeVoided ? this.L("ProcessSummary_EfficiencyVoidedFormat", "Efficiency mode: {0} (no effect: power throttling is disabled in Tweaks)", label) : this.L("ProcessSummary_EfficiencyFormat", "Efficiency mode: {0}", label); } diff --git a/ViewModels/SettingsViewModel.cs b/ViewModels/SettingsViewModel.cs index cdd1c7d..7c765e5 100644 --- a/ViewModels/SettingsViewModel.cs +++ b/ViewModels/SettingsViewModel.cs @@ -908,6 +908,5 @@ private void SetSavedSettingsSnapshot(ApplicationSettingsModel settingsSnapshot) this.savedSettingsSnapshot = (ApplicationSettingsModel)settingsSnapshot.Clone(); this.HasUnsavedChanges = false; } - } } diff --git a/Views/ProcessPowerPlanAssociationView.xaml b/Views/ProcessPowerPlanAssociationView.xaml index 097e5fd..e3e3912 100644 --- a/Views/ProcessPowerPlanAssociationView.xaml +++ b/Views/ProcessPowerPlanAssociationView.xaml @@ -61,6 +61,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ToolTip="{DynamicResource ProcessView_CpuAssignmentModeTooltip}" + AutomationProperties.Name="{DynamicResource ProcessView_CpuAssignmentMode}" + AutomationProperties.HelpText="{DynamicResource ProcessView_CpuAssignmentModeTooltip}"> + + + + - - - - - - + + + + + + + + + + + - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/UX_REDESIGN_PLAN.md b/docs/UX_REDESIGN_PLAN.md index f3fea03..5c75e93 100644 --- a/docs/UX_REDESIGN_PLAN.md +++ b/docs/UX_REDESIGN_PLAN.md @@ -23,8 +23,10 @@ Branch `feat/ux-clarity`, impilato su #69 (EcoQoS). Nessuna modifica al formato - [x] Processi: ricerca con testo guida; filtri e colonne in due menu a tendina; dettagli in tre riquadri (Processo, Priorità, Core CPU) più la riga della regola; selettori allineati allo stato attuale; testi di aiuto nei tooltip. - [x] Regole: scheda "Regole dei processi" per prima, nomi delle schede più chiari, etichette localizzate nell'editor. - [x] Sottotitoli accorciati in tutte le lingue. -- [ ] Impostazioni e Ottimizzazioni con righe in stile Impostazioni di Windows 11 (`CardControl`): prossimo passo, richiede una riscrittura più ampia delle due viste. -- [ ] Area unica per gli avvisi della finestra principale: da valutare dopo la verifica sul campo. +- [x] Impostazioni e Ottimizzazioni in una colonna di righe in stile Impostazioni di Windows 11 (titolo e descrizione a sinistra, interruttore a destra); sezioni più usate in alto. +- [x] Avvisi della finestra principale: già mostrati uno alla volta (coda elevazione → avvio ridotto → modalità CPU in `MainWindow.Behaviors.partial.cs`); nessuna modifica necessaria. +- [x] Elenco regole: colonne "Applica" e "Modalità" localizzate. +- [x] Rimosse 76 stringhe non più usate da tutte le lingue. ## Verifica From 20abf7006c0fd2bc67859817f3ec1dc0a6cc236b Mon Sep 17 00:00:00 2001 From: PrimeBuild-pc Date: Wed, 14 Oct 2026 18:42:05 +0200 Subject: [PATCH 03/12] fix: issues found testing the beta in a clean Windows 11 VM - Process counter could show more visible processes than the total ('157 / 151'): the batch total was a snapshot from the first load. - Narrow windows (or 150% scaling): toolbar buttons move under the search box instead of squeezing it to a few letters. - Rules list keeps the 'Applies' column readable when narrow. - Settings status message gets its own line instead of being cut. Tested in a Hyper-V Windows 11 VM: clean install, upgrade, uninstall, light and dark theme, 100% and 150% scaling. --- .../ProcessViewModelContextMenuTests.cs | 19 +++ .../ProcessViewModel.Behaviors.partial.cs | 7 ++ Views/ProcessPowerPlanAssociationView.xaml | 3 +- Views/ProcessView.xaml | 108 +++++++++--------- Views/ProcessView.xaml.cs | 6 + Views/SettingsView.xaml | 20 ++-- 6 files changed, 99 insertions(+), 64 deletions(-) diff --git a/Tests/ThreadPilot.Core.Tests/ProcessViewModelContextMenuTests.cs b/Tests/ThreadPilot.Core.Tests/ProcessViewModelContextMenuTests.cs index 56a4ca6..0b026a7 100644 --- a/Tests/ThreadPilot.Core.Tests/ProcessViewModelContextMenuTests.cs +++ b/Tests/ThreadPilot.Core.Tests/ProcessViewModelContextMenuTests.cs @@ -285,6 +285,25 @@ public async Task PriorityPickers_StartFromTheSelectedProcessCurrentValues() Assert.Null(viewModel.PendingIoPriority); // unreadable: the picker stays empty instead of guessing } + [Fact] + public void ProcessCounter_NeverShowsMoreVisibleThanTotal() + { + var viewModel = CreateViewModel(CreateProcessService().Object); + viewModel.TotalProcessCount = 1; // stale snapshot from an earlier batch load + foreach (var pid in new[] { 101, 102, 103 }) + { + viewModel.Processes.Add(new ProcessModel { ProcessId = pid, Name = $"p{pid}" }); + } + + // Filtering is debounced through the dispatcher in the app; call the filter step directly. + typeof(ProcessViewModel) + .GetMethod("FilterProcesses", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)! + .Invoke(viewModel, null); + + Assert.Equal(3, viewModel.FilteredProcesses.Count); + Assert.Equal(3, viewModel.TotalProcessCount); + } + [Fact] public async Task CopyContextProcessInfo_IncludesNamePidAndPath() { diff --git a/ViewModels/ProcessViewModel.Behaviors.partial.cs b/ViewModels/ProcessViewModel.Behaviors.partial.cs index 9171fec..b1ad7ba 100644 --- a/ViewModels/ProcessViewModel.Behaviors.partial.cs +++ b/ViewModels/ProcessViewModel.Behaviors.partial.cs @@ -2219,6 +2219,13 @@ private void FilterProcesses() var filteredResults = this.processFilterService.FilterAndSort(this.Processes, criteria); this.FilteredProcesses = new ObservableCollection(filteredResults); + + // The batch total is a snapshot from the first load; refreshes add processes, so the + // counter showed "157 / 151". Once everything is loaded the list itself is the total. + if (!this.HasMoreBatches || this.Processes.Count > this.TotalProcessCount) + { + this.TotalProcessCount = this.Processes.Count; + } } while (this.filterRefreshPending); } diff --git a/Views/ProcessPowerPlanAssociationView.xaml b/Views/ProcessPowerPlanAssociationView.xaml index e3e3912..f9305fe 100644 --- a/Views/ProcessPowerPlanAssociationView.xaml +++ b/Views/ProcessPowerPlanAssociationView.xaml @@ -120,7 +120,8 @@ Width="150"/> + Width="*" + MinWidth="160"/> diff --git a/Views/ProcessView.xaml b/Views/ProcessView.xaml index 007abb1..c29baac 100644 --- a/Views/ProcessView.xaml +++ b/Views/ProcessView.xaml @@ -194,66 +194,68 @@ - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - -