Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
tuner-displays
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ximper Linux
tuner-displays
Commits
ff5911c8
Verified
Commit
ff5911c8
authored
Jun 15, 2026
by
Kirill Unitsaev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
hyprland: add virtual output controls
parent
ba26fb3d
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
580 additions
and
375 deletions
+580
-375
displays-page.blp
data/ui/pages/displays-page.blp
+23
-1
POTFILES
po/POTFILES
+1
-0
ru.po
po/ru.po
+250
-207
tuner-displays.pot
po/tuner-displays.pot
+188
-167
display-backend.vala
src/backends/display-backend.vala
+13
-0
hyprland-backend.vala
src/backends/hyprland-backend.vala
+25
-0
meson.build
src/meson.build
+1
-0
plugin.vala
src/plugin.vala
+11
-0
displays-visibility.vala
src/ui/common/displays-visibility.vala
+2
-0
monitor-list-widget.vala
src/ui/widgets/monitor-list-widget.vala
+4
-0
monitor-row.vala
src/ui/widgets/monitor-row.vala
+19
-0
virtual-outputs-widget.vala
src/ui/widgets/virtual-outputs-widget.vala
+43
-0
No files found.
data/ui/pages/displays-page.blp
View file @
ff5911c8
...
@@ -56,7 +56,7 @@ Tuner.Page displays_page {
...
@@ -56,7 +56,7 @@ Tuner.Page displays_page {
}
}
Tuner.Group {
Tuner.Group {
title: _("D
etail
s");
title: _("D
isplay
s");
id: "monitors";
id: "monitors";
$TunerDisplaysPrimaryDisplayWidget primary_display_widget {}
$TunerDisplaysPrimaryDisplayWidget primary_display_widget {}
...
@@ -70,6 +70,28 @@ Tuner.Page displays_page {
...
@@ -70,6 +70,28 @@ Tuner.Page displays_page {
}
}
Tuner.Group {
Tuner.Group {
title: _("Virtual Displays");
id: "virtual-outputs";
show-empty: true;
header-suffix: Button add_virtual_output_button {
icon-name: "list-add-symbolic";
tooltip-text: _("Add Virtual Display");
has-frame: false;
styles ["flat"]
};
$TunerDisplaysVirtualOutputsWidget virtual_outputs_widget {
binding: $TunerDisplaysDisplaysVisibilityBinding {
mode: "virtual-outputs";
validator: $TunerDisplaysDisplaysVisibilityValidator {
group-mode: "virtual-outputs";
};
};
}
}
Tuner.Group {
id: "single-monitor";
id: "single-monitor";
$TunerDisplaysSingleMonitorWidget single_monitor_widget {
$TunerDisplaysSingleMonitorWidget single_monitor_widget {
...
...
po/POTFILES
View file @
ff5911c8
...
@@ -17,3 +17,4 @@ src/ui/widgets/mirror-settings-widget.vala
...
@@ -17,3 +17,4 @@ src/ui/widgets/mirror-settings-widget.vala
src/ui/widgets/monitor-row.vala
src/ui/widgets/monitor-row.vala
src/ui/widgets/primary-display-widget.vala
src/ui/widgets/primary-display-widget.vala
src/ui/widgets/status-widget.vala
src/ui/widgets/status-widget.vala
src/ui/widgets/virtual-outputs-widget.vala
po/ru.po
View file @
ff5911c8
...
@@ -2,7 +2,7 @@ msgid ""
...
@@ -2,7 +2,7 @@ msgid ""
msgstr ""
msgstr ""
"Project-Id-Version: tuner-displays\n"
"Project-Id-Version: tuner-displays\n"
"Report-Msgid-Bugs-To: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-06-15 1
1:58
+0300\n"
"POT-Creation-Date: 2026-06-15 1
9:13
+0300\n"
"PO-Revision-Date: 2026-05-28 00:00+0000\n"
"PO-Revision-Date: 2026-05-28 00:00+0000\n"
"Last-Translator: Automatically generated\n"
"Last-Translator: Automatically generated\n"
"Language-Team: Russian\n"
"Language-Team: Russian\n"
...
@@ -11,51 +11,173 @@ msgstr ""
...
@@ -11,51 +11,173 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Transfer-Encoding: 8bit\n"
#: data/ui/
displays-view.blp:7 src/plugin.vala:15
#: data/ui/
pages/displays-page.blp:7 data/ui/pages/displays-page.blp:59
msgid "Displays"
msgid "Displays"
msgstr "Мониторы"
msgstr "Мониторы"
#: data/ui/displays-view.blp:13 src/backends/hyprland-backend.vala:40
#: data/ui/pages/displays-page.blp:32
#: src/backends/hyprland-backend.vala:55 src/backends/niri-backend.vala:46
msgid "Mirror Displays"
#: src/backends/niri-backend.vala:61
msgstr "Зеркалировать мониторы"
msgid "Monitor configuration is not connected"
msgstr "Конфигурация мониторов не подключена"
#: data/ui/
displays-view.blp:18
#: data/ui/
pages/displays-page.blp:73
msgid "
Connect
"
msgid "
Virtual Displays
"
msgstr "
Подключить
"
msgstr "
Виртуальные мониторы
"
#: data/ui/displays-view.blp:28
#: data/ui/pages/displays-page.blp:79
msgid "Details"
msgid "Add Virtual Display"
msgstr "Параметры"
msgstr "Добавить виртуальный монитор"
#: data/ui/pages/displays-page.blp:108
msgid "Refresh"
msgstr "Обновить"
#: data/ui/pages/displays-page.blp:112 data/ui/pages/displays-page.blp:113
#: data/ui/pages/displays-page.blp:133 data/ui/pages/displays-page.blp:134
msgid "Apply"
msgstr "Применить"
#: data/ui/pages/displays-page.blp:118 data/ui/pages/displays-page.blp:128
#: data/ui/pages/monitor-settings-content.blp:7
msgid "Monitor"
msgstr "Монитор"
#: data/ui/
monitor-settings-content.blp:8
#: data/ui/
pages/monitor-settings-content.blp:11
msgid "Display"
msgid "Display"
msgstr "Дисплей"
msgstr "Дисплей"
#: data/ui/
monitor-settings-content.blp:11
#: data/ui/
pages/monitor-settings-content.blp:15
msgid "Enabled"
msgid "Enabled"
msgstr "Включён"
msgstr "Включён"
#: data/ui/monitor-settings-content.blp:16
#: data/ui/pages/monitor-settings-content.blp:23
#: data/ui/pages/monitor-settings-content.blp:32
#: src/ui/widgets/mirror-settings-widget.vala:45
msgid "Resolution"
msgstr "Разрешение"
#: data/ui/pages/monitor-settings-content.blp:41
#: data/ui/pages/monitor-settings-content.blp:48
msgid "Refresh Rate"
msgstr "Частота обновления"
#: data/ui/pages/monitor-settings-content.blp:57
#: data/ui/pages/monitor-settings-content.blp:102
msgid "Variable Refresh Rate"
msgstr "Переменная частота обновления"
#: data/ui/pages/monitor-settings-content.blp:66
#: data/ui/pages/monitor-settings-content.blp:75
#: src/ui/widgets/mirror-settings-widget.vala:76
msgid "Scale"
msgstr "Масштаб"
#: data/ui/pages/monitor-settings-content.blp:87
#: src/ui/widgets/mirror-settings-widget.vala:98
msgid "Rotation"
msgstr "Поворот"
#: data/ui/pages/monitor-settings-content.blp:93
msgid "Mirror"
msgstr "Зеркалирование"
#: data/ui/pages/monitor-settings-content.blp:111
msgid "Focus at startup"
msgstr "Фокус при запуске"
#: data/ui/pages/monitor-settings-content.blp:126
msgid "Hot corners"
msgstr "Активные углы"
#: data/ui/pages/monitor-settings-content.blp:135
msgid "Adjust for TV"
msgstr "Отрегулировать для ТВ"
#: data/ui/pages/monitor-settings-content.blp:143
msgid "HDR"
msgstr "HDR"
#: data/ui/pages/monitor-settings-content.blp:152
msgid "Hyprland"
msgid "Hyprland"
msgstr "Hyprland"
msgstr "Hyprland"
#: data/ui/monitor-settings-content.blp:20
#: data/ui/pages/monitor-settings-content.blp:156
msgid "Use description"
msgstr "Использовать описание"
#: data/ui/pages/monitor-settings-content.blp:164
msgid "Bit depth"
msgstr "Глубина цвета"
#: data/ui/pages/monitor-settings-content.blp:173
msgid "VRR"
msgstr "VRR"
#: data/ui/pages/monitor-settings-content.blp:182
msgid "Color management"
msgstr "Управление цветом"
#: data/ui/pages/monitor-settings-content.blp:191
msgid "SDR EOTF"
msgstr "SDR EOTF"
#: data/ui/pages/monitor-settings-content.blp:200
msgid "SDR brightness"
msgstr "Яркость SDR"
#: data/ui/pages/monitor-settings-content.blp:212
msgid "SDR saturation"
msgstr "Насыщенность SDR"
#: data/ui/pages/monitor-settings-content.blp:225
msgid "HDR / EDID overrides"
msgid "HDR / EDID overrides"
msgstr "Переопределения HDR / EDID"
msgstr "Переопределения HDR / EDID"
#:
src/plugin.vala:24
#:
data/ui/pages/monitor-settings-content.blp:229
msgid "
Refresh
"
msgid "
Force wide color
"
msgstr "
Обновить
"
msgstr "
Принудительно широкий цветовой охват
"
#:
src/plugin.vala:29 src/plugin.vala:30 src/plugin.vala:53 src/plugin.vala:54
#:
data/ui/pages/monitor-settings-content.blp:238
msgid "
Apply
"
msgid "
Force HDR
"
msgstr "При
менить
"
msgstr "При
нудительно HDR
"
#: src/plugin.vala:41 src/plugin.vala:47
#: data/ui/pages/monitor-settings-content.blp:247
msgid "Monitor"
msgid "SDR min luminance"
msgstr "Монитор"
msgstr "Мин. яркость SDR"
#: data/ui/pages/monitor-settings-content.blp:259
msgid "SDR max luminance"
msgstr "Макс. яркость SDR"
#: data/ui/pages/monitor-settings-content.blp:270
msgid "Min luminance"
msgstr "Мин. яркость"
#: data/ui/pages/monitor-settings-content.blp:282
msgid "Max luminance"
msgstr "Макс. яркость"
#: data/ui/pages/monitor-settings-content.blp:293
msgid "Max average luminance"
msgstr "Макс. средняя яркость"
#: data/ui/pages/monitor-settings-content.blp:304
msgid "ICC profile"
msgstr "Профиль ICC"
#: data/ui/widgets/backdrop-color-widget.blp:7
#: data/ui/widgets/backdrop-color-widget.blp:13
msgid "Backdrop color"
msgstr "Цвет фона"
#: data/ui/widgets/config-include-widget.blp:8
#: src/backends/hyprland-backend.vala:38 src/backends/hyprland-backend.vala:53
#: src/backends/niri-backend.vala:43 src/backends/niri-backend.vala:58
msgid "Monitor configuration is not connected"
msgstr "Конфигурация мониторов не подключена"
#: data/ui/widgets/config-include-widget.blp:13
msgid "Connect"
msgstr "Подключить"
#: src/backends/gnome-backend.vala:72 src/backends/gnome-backend.vala:516
#: src/backends/gnome-backend.vala:72 src/backends/gnome-backend.vala:516
msgid "No enabled monitors to mirror"
msgid "No enabled monitors to mirror"
...
@@ -65,27 +187,31 @@ msgstr "Нет включённых мониторов для зеркалиро
...
@@ -65,27 +187,31 @@ msgstr "Нет включённых мониторов для зеркалиро
msgid "No common mirror mode is available"
msgid "No common mirror mode is available"
msgstr "Нет общего режима для зеркалирования"
msgstr "Нет общего режима для зеркалирования"
#: src/backends/hyprland-backend.vala:
41
#: src/backends/hyprland-backend.vala:
39
msgid "Hyprland configuration file was not found."
msgid "Hyprland configuration file was not found."
msgstr "Файл конфигурации Hyprland не найден."
msgstr "Файл конфигурации Hyprland не найден."
#: src/backends/hyprland-backend.vala:5
6
#: src/backends/hyprland-backend.vala:5
4
msgid "Add monitors.conf to the Hyprland configuration."
msgid "Add monitors.conf to the Hyprland configuration."
msgstr "Добавьте monitors.conf в конфигурацию Hyprland."
msgstr "Добавьте monitors.conf в конфигурацию Hyprland."
#: src/backends/hyprland-backend.vala:
80
#: src/backends/hyprland-backend.vala:
75
msgid "hyprctl monitors all returned non-array JSON"
msgid "hyprctl monitors all returned non-array JSON"
msgstr "hyprctl monitors all вернул JSON не в виде массива"
msgstr "hyprctl monitors all вернул JSON не в виде массива"
#: src/backends/niri-backend.vala:47
#: src/backends/hyprland-backend.vala:213
msgid "Unsupported virtual output backend"
msgstr "Неподдерживаемый бэкенд виртуального монитора"
#: src/backends/niri-backend.vala:44
msgid "niri configuration file was not found."
msgid "niri configuration file was not found."
msgstr "Файл конфигурации niri не найден."
msgstr "Файл конфигурации niri не найден."
#: src/backends/niri-backend.vala:
62
#: src/backends/niri-backend.vala:
59
msgid "Add monitor.kdl to the niri configuration."
msgid "Add monitor.kdl to the niri configuration."
msgstr "Добавьте monitor.kdl в конфигурацию niri."
msgstr "Добавьте monitor.kdl в конфигурацию niri."
#: src/backends/niri-backend.vala:
85
#: src/backends/niri-backend.vala:
79
msgid "niri msg outputs returned non-object JSON"
msgid "niri msg outputs returned non-object JSON"
msgstr "niri msg outputs вернул JSON не в виде объекта"
msgstr "niri msg outputs вернул JSON не в виде объекта"
...
@@ -93,253 +219,170 @@ msgstr "niri msg outputs вернул JSON не в виде объекта"
...
@@ -93,253 +219,170 @@ msgstr "niri msg outputs вернул JSON не в виде объекта"
msgid "Built-in Display"
msgid "Built-in Display"
msgstr "Встроенный дисплей"
msgstr "Встроенный дисплей"
#: src/ui/
displays-view.vala:72
#: src/ui/
common/displays-controller.vala:39
msgid "Failed to load monitors"
msgid "Failed to load monitors"
msgstr "Не удалось загрузить мониторы"
msgstr "Не удалось загрузить мониторы"
#: src/ui/
displays-view.vala:81
#: src/ui/
common/displays-controller.vala:49
msgid "Monitor settings applied"
msgid "Monitor settings applied"
msgstr "Настройки мониторов применены"
msgstr "Настройки мониторов применены"
#: src/ui/displays-view.vala:165
#: src/ui/common/ui-utils.vala:236
msgid "Read-only backend"
#, c-format
msgstr "Режим только для чтения"
msgid "%.2f Hz"
msgstr "%.2f Гц"
#: src/ui/displays-view.vala:166
msgid "Applying monitor layouts is not supported by this backend."
msgstr "Применение раскладок мониторов не поддерживается этим бэкендом."
#: src/ui/displays-view.vala:189
msgid "Monitor configuration connected"
msgstr "Конфигурация мониторов подключена"
#: src/ui/displays-view.vala:201
msgid "Mirror Displays"
msgstr "Зеркалировать мониторы"
#: src/ui/displays-view.vala:261 src/ui/monitor-settings-content.vala:88
#: src/ui/monitor-settings-content.vala:127
msgid "Resolution"
msgstr "Разрешение"
#: src/ui/displays-view.vala:307 src/ui/monitor-settings-content.vala:265
#: src/ui/monitor-settings-content.vala:291
msgid "Scale"
msgstr "Масштаб"
#: src/ui/displays-view.vala:325 src/ui/monitor-settings-content.vala:308
#: src/ui/settings/monitor-choice-loader.vala:21
#: src/ui/widgets/mirror-settings-widget.vala:91
msgid "Normal"
msgid "Normal"
msgstr "Обычный"
msgstr "Обычный"
#: src/ui/displays-view.vala:325 src/ui/monitor-settings-content.vala:308
#: src/ui/settings/monitor-choice-loader.vala:22
#: src/ui/widgets/mirror-settings-widget.vala:91
msgid "90 degrees"
msgid "90 degrees"
msgstr "90 градусов"
msgstr "90 градусов"
#: src/ui/displays-view.vala:325 src/ui/monitor-settings-content.vala:308
#: src/ui/settings/monitor-choice-loader.vala:23
#: src/ui/widgets/mirror-settings-widget.vala:91
msgid "180 degrees"
msgid "180 degrees"
msgstr "180 градусов"
msgstr "180 градусов"
#: src/ui/displays-view.vala:325 src/ui/monitor-settings-content.vala:308
#: src/ui/settings/monitor-choice-loader.vala:24
#: src/ui/widgets/mirror-settings-widget.vala:91
msgid "270 degrees"
msgid "270 degrees"
msgstr "270 градусов"
msgstr "270 градусов"
#: src/ui/displays-view.vala:326 src/ui/monitor-settings-content.vala:309
#: src/ui/settings/monitor-choice-loader.vala:25
#: src/ui/widgets/mirror-settings-widget.vala:92
msgid "Flipped"
msgid "Flipped"
msgstr "Отражённый"
msgstr "Отражённый"
#: src/ui/displays-view.vala:326 src/ui/monitor-settings-content.vala:309
#: src/ui/settings/monitor-choice-loader.vala:26
#: src/ui/widgets/mirror-settings-widget.vala:92
msgid "Flipped 90 degrees"
msgid "Flipped 90 degrees"
msgstr "Отражённый 90 градусов"
msgstr "Отражённый 90 градусов"
#: src/ui/displays-view.vala:326 src/ui/monitor-settings-content.vala:309
#: src/ui/settings/monitor-choice-loader.vala:27
#: src/ui/widgets/mirror-settings-widget.vala:92
msgid "Flipped 180 degrees"
msgid "Flipped 180 degrees"
msgstr "Отражённый 180 градусов"
msgstr "Отражённый 180 градусов"
#: src/ui/displays-view.vala:326 src/ui/monitor-settings-content.vala:309
#: src/ui/settings/monitor-choice-loader.vala:28
#: src/ui/widgets/mirror-settings-widget.vala:92
msgid "Flipped 270 degrees"
msgid "Flipped 270 degrees"
msgstr "Отражённый 270 градусов"
msgstr "Отражённый 270 градусов"
#: src/ui/displays-view.vala:332 src/ui/monitor-settings-content.vala:315
#: src/ui/settings/monitor-choice-loader.vala:38
msgid "Rotation"
#: src/ui/settings/monitor-choice-loader.vala:44
msgstr "Поворот"
#: src/ui/settings/monitor-choice-loader.vala:58
#: src/ui/settings/monitor-choice-loader.vala:63
#: src/ui/displays-view.vala:365
msgid "Primary Display"
msgstr "Основной дисплей"
#: src/ui/monitor-row.vala:62
#, c-format
msgid "%dx%d@%.2f scale %.2f %dx%d"
msgstr "%dx%d@%.2f масштаб %.2f %dx%d"
#: src/ui/monitor-settings-content.vala:156
#: src/ui/monitor-settings-content.vala:164
msgid "Refresh Rate"
msgstr "Частота обновления"
#: src/ui/monitor-settings-content.vala:186
#: src/ui/monitor-settings-content.vala:411
msgid "Variable Refresh Rate"
msgstr "Переменная частота обновления"
#: src/ui/monitor-settings-content.vala:335
msgid "None"
msgstr "Нет"
#: src/ui/monitor-settings-content.vala:350
msgid "Mirror"
msgstr "Зеркалирование"
#: src/ui/monitor-settings-content.vala:367
msgid "Use description"
msgstr "Использовать описание"
#: src/ui/monitor-settings-content.vala:378
msgid "Bit depth"
msgstr "Глубина цвета"
#: src/ui/monitor-settings-content.vala:380
msgid "VRR"
msgstr "VRR"
#: src/ui/monitor-settings-content.vala:380
#: src/ui/monitor-settings-content.vala:389
#: src/ui/monitor-settings-content.vala:390
#: src/ui/monitor-settings-content.vala:412
#: src/ui/monitor-settings-content.vala:433
msgid "Off"
msgid "Off"
msgstr "Отключено"
msgstr "Отключено"
#: src/ui/monitor-settings-content.vala:380
#: src/ui/settings/monitor-choice-loader.vala:39
#: src/ui/monitor-settings-content.vala:389
#: src/ui/settings/monitor-choice-loader.vala:45
#: src/ui/monitor-settings-content.vala:390
#: src/ui/settings/monitor-choice-loader.vala:59
#: src/ui/monitor-settings-content.vala:412
msgid "On"
msgid "On"
msgstr "Включено"
msgstr "Включено"
#: src/ui/
monitor-settings-content.vala:38
0
#: src/ui/
settings/monitor-choice-loader.vala:4
0
msgid "Fullscreen"
msgid "Fullscreen"
msgstr "Полный экран"
msgstr "Полный экран"
#: src/ui/
monitor-settings-content.vala:380
#: src/ui/
settings/monitor-choice-loader.vala:41
msgid "Fullscreen video/game"
msgid "Fullscreen video/game"
msgstr "Полноэкранное видео/игра"
msgstr "Полноэкранное видео/игра"
#: src/ui/monitor-settings-content.vala:382
#: src/ui/settings/monitor-choice-loader.vala:46
msgid "Color management"
msgstr "Управление цветом"
#: src/ui/monitor-settings-content.vala:383
msgid "SDR EOTF"
msgstr "SDR EOTF"
#: src/ui/monitor-settings-content.vala:384
msgid "SDR brightness"
msgstr "Яркость SDR"
#: src/ui/monitor-settings-content.vala:385
msgid "SDR saturation"
msgstr "Насыщенность SDR"
#: src/ui/monitor-settings-content.vala:389
msgid "Force wide color"
msgstr "Принудительно широкий цветовой охват"
#: src/ui/monitor-settings-content.vala:389
#: src/ui/monitor-settings-content.vala:390
msgid "Auto"
msgstr "Авто"
#: src/ui/monitor-settings-content.vala:390
msgid "Force HDR"
msgstr "Принудительно HDR"
#: src/ui/monitor-settings-content.vala:391
msgid "SDR min luminance"
msgstr "Мин. яркость SDR"
#: src/ui/monitor-settings-content.vala:392
msgid "SDR max luminance"
msgstr "Макс. яркость SDR"
#: src/ui/monitor-settings-content.vala:393
msgid "Min luminance"
msgstr "Мин. яркость"
#: src/ui/monitor-settings-content.vala:394
msgid "Max luminance"
msgstr "Макс. яркость"
#: src/ui/monitor-settings-content.vala:395
msgid "Max average luminance"
msgstr "Макс. средняя яркость"
#: src/ui/monitor-settings-content.vala:398
msgid "ICC profile"
msgstr "Профиль ICC"
#: src/ui/monitor-settings-content.vala:412
msgid "On demand"
msgid "On demand"
msgstr "По требованию"
msgstr "По требованию"
#: src/ui/monitor-settings-content.vala:418
#: src/ui/settings/monitor-choice-loader.vala:57
msgid "Focus at startup"
msgid "Auto"
msgstr "Фокус при запуске"
msgstr "Авто"
#: src/ui/monitor-settings-content.vala:432
msgid "Hot corners"
msgstr "Активные углы"
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:62
msgid "Default"
msgid "Default"
msgstr "По умолчанию"
msgstr "По умолчанию"
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:64
msgid "All"
msgid "All"
msgstr "Все"
msgstr "Все"
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:65
msgid "Top left"
msgid "Top left"
msgstr "Сверху слева"
msgstr "Сверху слева"
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:66
msgid "Top right"
msgid "Top right"
msgstr "Сверху справа"
msgstr "Сверху справа"
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:67
msgid "Bottom left"
msgid "Bottom left"
msgstr "Снизу слева"
msgstr "Снизу слева"
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:68
msgid "Bottom right"
msgid "Bottom right"
msgstr "Снизу справа"
msgstr "Снизу справа"
#: src/ui/monitor-settings-content.vala:442
#: src/ui/settings/monitor-choice-loader.vala:117
#: src/ui/monitor-settings-content.vala:456
msgid "None"
msgid "Backdrop color"
msgstr "Нет"
msgstr "Цвет фона"
#: src/ui/
monitor-settings-content.vala:486
#: src/ui/
widgets/config-include-widget.vala:63
msgid "
Adjust for TV
"
msgid "
Monitor configuration connected
"
msgstr "
Отрегулировать для ТВ
"
msgstr "
Конфигурация мониторов подключена
"
#: src/ui/
monitor-settings-content.vala:498
#: src/ui/
widgets/monitor-row.vala:35
msgid "
HDR
"
msgid "
Remove
"
msgstr "
HDR
"
msgstr "
Удалить
"
#: src/ui/
monitor-settings-content.vala:679
#: src/ui/
widgets/monitor-row.vala:81
#, c-format
#, c-format
msgid "Variable (up to %.2f Hz)"
msgid "%dx%d@%.2f scale %.2f %dx%d"
msgstr "Переменная (до %.2f Гц)"
msgstr "%dx%d@%.2f масштаб %.2f %dx%d"
#: src/ui/widgets/primary-display-widget.vala:37
msgid "Primary Display"
msgstr "Основной дисплей"
#: src/ui/widgets/status-widget.vala:27
msgid "Read-only backend"
msgstr "Режим только для чтения"
#: src/ui/widgets/status-widget.vala:28
msgid "Applying monitor layouts is not supported by this backend."
msgstr "Применение раскладок мониторов не поддерживается этим бэкендом."
#: src/ui/widgets/virtual-outputs-widget.vala:35
msgid "No Virtual Displays"
msgstr "Виртуальных мониторов нет"
#: src/ui/widgets/virtual-outputs-widget.vala:36
msgid "Use the add button to create one."
msgstr "Используйте кнопку добавления, чтобы создать виртуальный монитор."
#: src/ui/monitor-settings-content.vala:680
#~ msgid "Details"
msgid "Variable"
#~ msgstr "Параметры"
msgstr "Переменная"
#~ msgid "Create a temporary Hyprland output."
#~ msgstr "Создать временный выход Hyprland."
#~ msgid "Add"
#~ msgstr "Добавить"
#~ msgid "Backend"
#~ msgstr "Бэкенд"
#~ msgid "Virtual display"
#~ msgstr "Виртуальный монитор"
#: src/ui/monitor-settings-content.vala:683 src/ui/ui-helpers.vala:35
#, c-format
#, c-format
msgid "%.2f Hz"
#~ msgid "Variable (up to %.2f Hz)"
msgstr "%.2f Гц"
#~ msgstr "Переменная (до %.2f Гц)"
#~ msgid "Variable"
#~ msgstr "Переменная"
#~ msgid "Underscanning"
#~ msgid "Underscanning"
#~ msgstr "Уменьшение области вывода"
#~ msgstr "Уменьшение области вывода"
...
...
po/tuner-displays.pot
View file @
ff5911c8
...
@@ -8,7 +8,7 @@ msgid ""
...
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
msgstr ""
"Project-Id-Version: tuner-displays\n"
"Project-Id-Version: tuner-displays\n"
"Report-Msgid-Bugs-To: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-06-15 1
1:58
+0300\n"
"POT-Creation-Date: 2026-06-15 1
9:13
+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
...
@@ -17,332 +17,353 @@ msgstr ""
...
@@ -17,332 +17,353 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Transfer-Encoding: 8bit\n"
#: data/ui/
displays-view.blp:7 src/plugin.vala:15
#: data/ui/
pages/displays-page.blp:7 data/ui/pages/displays-page.blp:59
msgid "Displays"
msgid "Displays"
msgstr ""
msgstr ""
#: data/ui/displays-view.blp:13 src/backends/hyprland-backend.vala:40
#: data/ui/pages/displays-page.blp:32
#: src/backends/hyprland-backend.vala:55 src/backends/niri-backend.vala:46
msgid "Mirror Displays"
#: src/backends/niri-backend.vala:61
msgid "Monitor configuration is not connected"
msgstr ""
msgstr ""
#: data/ui/
displays-view.blp:18
#: data/ui/
pages/displays-page.blp:73
msgid "
Connect
"
msgid "
Virtual Displays
"
msgstr ""
msgstr ""
#: data/ui/
displays-view.blp:28
#: data/ui/
pages/displays-page.blp:79
msgid "
Details
"
msgid "
Add Virtual Display
"
msgstr ""
msgstr ""
#: data/ui/
monitor-settings-content.blp:
8
#: data/ui/
pages/displays-page.blp:10
8
msgid "
Display
"
msgid "
Refresh
"
msgstr ""
msgstr ""
#: data/ui/monitor-settings-content.blp:11
#: data/ui/pages/displays-page.blp:112 data/ui/pages/displays-page.blp:113
msgid "Enabled"
#: data/ui/pages/displays-page.blp:133 data/ui/pages/displays-page.blp:134
msgid "Apply"
msgstr ""
msgstr ""
#: data/ui/monitor-settings-content.blp:16
#: data/ui/pages/displays-page.blp:118 data/ui/pages/displays-page.blp:128
msgid "Hyprland"
#: data/ui/pages/monitor-settings-content.blp:7
msgid "Monitor"
msgstr ""
msgstr ""
#: data/ui/
monitor-settings-content.blp:20
#: data/ui/
pages/monitor-settings-content.blp:11
msgid "
HDR / EDID overrides
"
msgid "
Display
"
msgstr ""
msgstr ""
#:
src/plugin.vala:24
#:
data/ui/pages/monitor-settings-content.blp:15
msgid "
Refresh
"
msgid "
Enabled
"
msgstr ""
msgstr ""
#: src/plugin.vala:29 src/plugin.vala:30 src/plugin.vala:53 src/plugin.vala:54
#: data/ui/pages/monitor-settings-content.blp:23
msgid "Apply"
#: data/ui/pages/monitor-settings-content.blp:32
#: src/ui/widgets/mirror-settings-widget.vala:45
msgid "Resolution"
msgstr ""
msgstr ""
#: src/plugin.vala:41 src/plugin.vala:47
#: data/ui/pages/monitor-settings-content.blp:41
msgid "Monitor"
#: data/ui/pages/monitor-settings-content.blp:48
msgid "Refresh Rate"
msgstr ""
msgstr ""
#: src/backends/gnome-backend.vala:72 src/backends/gnome-backend.vala:516
#: data/ui/pages/monitor-settings-content.blp:57
msgid "No enabled monitors to mirror"
#: data/ui/pages/monitor-settings-content.blp:102
msgid "Variable Refresh Rate"
msgstr ""
msgstr ""
#: src/backends/gnome-backend.vala:520 src/backends/gnome-backend.vala:532
#: data/ui/pages/monitor-settings-content.blp:66
msgid "No common mirror mode is available"
#: data/ui/pages/monitor-settings-content.blp:75
#: src/ui/widgets/mirror-settings-widget.vala:76
msgid "Scale"
msgstr ""
msgstr ""
#: src/backends/hyprland-backend.vala:41
#: data/ui/pages/monitor-settings-content.blp:87
msgid "Hyprland configuration file was not found."
#: src/ui/widgets/mirror-settings-widget.vala:98
msgid "Rotation"
msgstr ""
msgstr ""
#:
src/backends/hyprland-backend.vala:56
#:
data/ui/pages/monitor-settings-content.blp:93
msgid "
Add monitors.conf to the Hyprland configuration.
"
msgid "
Mirror
"
msgstr ""
msgstr ""
#:
src/backends/hyprland-backend.vala:80
#:
data/ui/pages/monitor-settings-content.blp:111
msgid "
hyprctl monitors all returned non-array JSON
"
msgid "
Focus at startup
"
msgstr ""
msgstr ""
#:
src/backends/niri-backend.vala:47
#:
data/ui/pages/monitor-settings-content.blp:126
msgid "
niri configuration file was not found.
"
msgid "
Hot corners
"
msgstr ""
msgstr ""
#:
src/backends/niri-backend.vala:62
#:
data/ui/pages/monitor-settings-content.blp:135
msgid "Ad
d monitor.kdl to the niri configuration.
"
msgid "Ad
just for TV
"
msgstr ""
msgstr ""
#:
src/backends/niri-backend.vala:85
#:
data/ui/pages/monitor-settings-content.blp:143
msgid "
niri msg outputs returned non-object JSON
"
msgid "
HDR
"
msgstr ""
msgstr ""
#:
src/core/display-model.vala:75
#:
data/ui/pages/monitor-settings-content.blp:152
msgid "
Built-in Display
"
msgid "
Hyprland
"
msgstr ""
msgstr ""
#:
src/ui/displays-view.vala:72
#:
data/ui/pages/monitor-settings-content.blp:156
msgid "
Failed to load monitors
"
msgid "
Use description
"
msgstr ""
msgstr ""
#:
src/ui/displays-view.vala:81
#:
data/ui/pages/monitor-settings-content.blp:164
msgid "
Monitor settings applied
"
msgid "
Bit depth
"
msgstr ""
msgstr ""
#:
src/ui/displays-view.vala:165
#:
data/ui/pages/monitor-settings-content.blp:173
msgid "
Read-only backend
"
msgid "
VRR
"
msgstr ""
msgstr ""
#:
src/ui/displays-view.vala:166
#:
data/ui/pages/monitor-settings-content.blp:182
msgid "
Applying monitor layouts is not supported by this backend.
"
msgid "
Color management
"
msgstr ""
msgstr ""
#:
src/ui/displays-view.vala:189
#:
data/ui/pages/monitor-settings-content.blp:191
msgid "
Monitor configuration connected
"
msgid "
SDR EOTF
"
msgstr ""
msgstr ""
#:
src/ui/displays-view.vala:201
#:
data/ui/pages/monitor-settings-content.blp:200
msgid "
Mirror Display
s"
msgid "
SDR brightnes
s"
msgstr ""
msgstr ""
#: src/ui/displays-view.vala:261 src/ui/monitor-settings-content.vala:88
#: data/ui/pages/monitor-settings-content.blp:212
#: src/ui/monitor-settings-content.vala:127
msgid "SDR saturation"
msgid "Resolution"
msgstr ""
msgstr ""
#: src/ui/displays-view.vala:307 src/ui/monitor-settings-content.vala:265
#: data/ui/pages/monitor-settings-content.blp:225
#: src/ui/monitor-settings-content.vala:291
msgid "HDR / EDID overrides"
msgid "Scale"
msgstr ""
msgstr ""
#:
src/ui/displays-view.vala:325 src/ui/monitor-settings-content.vala:308
#:
data/ui/pages/monitor-settings-content.blp:229
msgid "
Normal
"
msgid "
Force wide color
"
msgstr ""
msgstr ""
#:
src/ui/displays-view.vala:325 src/ui/monitor-settings-content.vala:30
8
#:
data/ui/pages/monitor-settings-content.blp:23
8
msgid "
90 degrees
"
msgid "
Force HDR
"
msgstr ""
msgstr ""
#:
src/ui/displays-view.vala:325 src/ui/monitor-settings-content.vala:308
#:
data/ui/pages/monitor-settings-content.blp:247
msgid "
180 degrees
"
msgid "
SDR min luminance
"
msgstr ""
msgstr ""
#:
src/ui/displays-view.vala:325 src/ui/monitor-settings-content.vala:308
#:
data/ui/pages/monitor-settings-content.blp:259
msgid "
270 degrees
"
msgid "
SDR max luminance
"
msgstr ""
msgstr ""
#:
src/ui/displays-view.vala:326 src/ui/monitor-settings-content.vala:309
#:
data/ui/pages/monitor-settings-content.blp:270
msgid "
Flipped
"
msgid "
Min luminance
"
msgstr ""
msgstr ""
#:
src/ui/displays-view.vala:326 src/ui/monitor-settings-content.vala:309
#:
data/ui/pages/monitor-settings-content.blp:282
msgid "
Flipped 90 degrees
"
msgid "
Max luminance
"
msgstr ""
msgstr ""
#:
src/ui/displays-view.vala:326 src/ui/monitor-settings-content.vala:309
#:
data/ui/pages/monitor-settings-content.blp:293
msgid "
Flipped 180 degrees
"
msgid "
Max average luminance
"
msgstr ""
msgstr ""
#:
src/ui/displays-view.vala:326 src/ui/monitor-settings-content.vala:309
#:
data/ui/pages/monitor-settings-content.blp:304
msgid "
Flipped 270 degrees
"
msgid "
ICC profile
"
msgstr ""
msgstr ""
#: src/ui/displays-view.vala:332 src/ui/monitor-settings-content.vala:315
#: data/ui/widgets/backdrop-color-widget.blp:7
msgid "Rotation"
#: data/ui/widgets/backdrop-color-widget.blp:13
msgid "Backdrop color"
msgstr ""
msgstr ""
#: src/ui/displays-view.vala:365
#: data/ui/widgets/config-include-widget.blp:8
msgid "Primary Display"
#: src/backends/hyprland-backend.vala:38 src/backends/hyprland-backend.vala:53
#: src/backends/niri-backend.vala:43 src/backends/niri-backend.vala:58
msgid "Monitor configuration is not connected"
msgstr ""
msgstr ""
#: src/ui/monitor-row.vala:62
#: data/ui/widgets/config-include-widget.blp:13
#, c-format
msgid "Connect"
msgid "%dx%d@%.2f scale %.2f %dx%d"
msgstr ""
msgstr ""
#: src/ui/monitor-settings-content.vala:156
#: src/backends/gnome-backend.vala:72 src/backends/gnome-backend.vala:516
#: src/ui/monitor-settings-content.vala:164
msgid "No enabled monitors to mirror"
msgid "Refresh Rate"
msgstr ""
msgstr ""
#: src/ui/monitor-settings-content.vala:186
#: src/backends/gnome-backend.vala:520 src/backends/gnome-backend.vala:532
#: src/ui/monitor-settings-content.vala:411
msgid "No common mirror mode is available"
msgid "Variable Refresh Rate"
msgstr ""
msgstr ""
#: src/
ui/monitor-settings-content.vala:335
#: src/
backends/hyprland-backend.vala:39
msgid "
None
"
msgid "
Hyprland configuration file was not found.
"
msgstr ""
msgstr ""
#: src/
ui/monitor-settings-content.vala:350
#: src/
backends/hyprland-backend.vala:54
msgid "
Mirror
"
msgid "
Add monitors.conf to the Hyprland configuration.
"
msgstr ""
msgstr ""
#: src/
ui/monitor-settings-content.vala:367
#: src/
backends/hyprland-backend.vala:75
msgid "
Use description
"
msgid "
hyprctl monitors all returned non-array JSON
"
msgstr ""
msgstr ""
#: src/
ui/monitor-settings-content.vala:378
#: src/
backends/hyprland-backend.vala:213
msgid "
Bit depth
"
msgid "
Unsupported virtual output backend
"
msgstr ""
msgstr ""
#: src/
ui/monitor-settings-content.vala:380
#: src/
backends/niri-backend.vala:44
msgid "
VRR
"
msgid "
niri configuration file was not found.
"
msgstr ""
msgstr ""
#: src/ui/monitor-settings-content.vala:380
#: src/backends/niri-backend.vala:59
#: src/ui/monitor-settings-content.vala:389
msgid "Add monitor.kdl to the niri configuration."
#: src/ui/monitor-settings-content.vala:390
#: src/ui/monitor-settings-content.vala:412
#: src/ui/monitor-settings-content.vala:433
msgid "Off"
msgstr ""
msgstr ""
#: src/ui/monitor-settings-content.vala:380
#: src/backends/niri-backend.vala:79
#: src/ui/monitor-settings-content.vala:389
msgid "niri msg outputs returned non-object JSON"
#: src/ui/monitor-settings-content.vala:390
#: src/ui/monitor-settings-content.vala:412
msgid "On"
msgstr ""
msgstr ""
#: src/
ui/monitor-settings-content.vala:380
#: src/
core/display-model.vala:75
msgid "
Fullscreen
"
msgid "
Built-in Display
"
msgstr ""
msgstr ""
#: src/ui/
monitor-settings-content.vala:380
#: src/ui/
common/displays-controller.vala:39
msgid "F
ullscreen video/game
"
msgid "F
ailed to load monitors
"
msgstr ""
msgstr ""
#: src/ui/
monitor-settings-content.vala:382
#: src/ui/
common/displays-controller.vala:49
msgid "
Color management
"
msgid "
Monitor settings applied
"
msgstr ""
msgstr ""
#: src/ui/monitor-settings-content.vala:383
#: src/ui/common/ui-utils.vala:236
msgid "SDR EOTF"
#, c-format
msgid "%.2f Hz"
msgstr ""
msgstr ""
#: src/ui/monitor-settings-content.vala:384
#: src/ui/settings/monitor-choice-loader.vala:21
msgid "SDR brightness"
#: src/ui/widgets/mirror-settings-widget.vala:91
msgid "Normal"
msgstr ""
msgstr ""
#: src/ui/monitor-settings-content.vala:385
#: src/ui/settings/monitor-choice-loader.vala:22
msgid "SDR saturation"
#: src/ui/widgets/mirror-settings-widget.vala:91
msgid "90 degrees"
msgstr ""
msgstr ""
#: src/ui/monitor-settings-content.vala:389
#: src/ui/settings/monitor-choice-loader.vala:23
msgid "Force wide color"
#: src/ui/widgets/mirror-settings-widget.vala:91
msgid "180 degrees"
msgstr ""
msgstr ""
#: src/ui/
monitor-settings-content.vala:389
#: src/ui/
settings/monitor-choice-loader.vala:24
#: src/ui/
monitor-settings-content.vala:390
#: src/ui/
widgets/mirror-settings-widget.vala:91
msgid "
Auto
"
msgid "
270 degrees
"
msgstr ""
msgstr ""
#: src/ui/monitor-settings-content.vala:390
#: src/ui/settings/monitor-choice-loader.vala:25
msgid "Force HDR"
#: src/ui/widgets/mirror-settings-widget.vala:92
msgid "Flipped"
msgstr ""
msgstr ""
#: src/ui/monitor-settings-content.vala:391
#: src/ui/settings/monitor-choice-loader.vala:26
msgid "SDR min luminance"
#: src/ui/widgets/mirror-settings-widget.vala:92
msgid "Flipped 90 degrees"
msgstr ""
msgstr ""
#: src/ui/monitor-settings-content.vala:392
#: src/ui/settings/monitor-choice-loader.vala:27
msgid "SDR max luminance"
#: src/ui/widgets/mirror-settings-widget.vala:92
msgid "Flipped 180 degrees"
msgstr ""
msgstr ""
#: src/ui/monitor-settings-content.vala:393
#: src/ui/settings/monitor-choice-loader.vala:28
msgid "Min luminance"
#: src/ui/widgets/mirror-settings-widget.vala:92
msgid "Flipped 270 degrees"
msgstr ""
msgstr ""
#: src/ui/monitor-settings-content.vala:394
#: src/ui/settings/monitor-choice-loader.vala:38
msgid "Max luminance"
#: src/ui/settings/monitor-choice-loader.vala:44
#: src/ui/settings/monitor-choice-loader.vala:58
#: src/ui/settings/monitor-choice-loader.vala:63
msgid "Off"
msgstr ""
msgstr ""
#: src/ui/monitor-settings-content.vala:395
#: src/ui/settings/monitor-choice-loader.vala:39
msgid "Max average luminance"
#: src/ui/settings/monitor-choice-loader.vala:45
#: src/ui/settings/monitor-choice-loader.vala:59
msgid "On"
msgstr ""
msgstr ""
#: src/ui/
monitor-settings-content.vala:398
#: src/ui/
settings/monitor-choice-loader.vala:40
msgid "
ICC profile
"
msgid "
Fullscreen
"
msgstr ""
msgstr ""
#: src/ui/
monitor-settings-content.vala:412
#: src/ui/
settings/monitor-choice-loader.vala:41
msgid "
On demand
"
msgid "
Fullscreen video/game
"
msgstr ""
msgstr ""
#: src/ui/
monitor-settings-content.vala:418
#: src/ui/
settings/monitor-choice-loader.vala:46
msgid "
Focus at startup
"
msgid "
On demand
"
msgstr ""
msgstr ""
#: src/ui/
monitor-settings-content.vala:432
#: src/ui/
settings/monitor-choice-loader.vala:57
msgid "
Hot corners
"
msgid "
Auto
"
msgstr ""
msgstr ""
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:62
msgid "Default"
msgid "Default"
msgstr ""
msgstr ""
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:64
msgid "All"
msgid "All"
msgstr ""
msgstr ""
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:65
msgid "Top left"
msgid "Top left"
msgstr ""
msgstr ""
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:66
msgid "Top right"
msgid "Top right"
msgstr ""
msgstr ""
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:67
msgid "Bottom left"
msgid "Bottom left"
msgstr ""
msgstr ""
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:68
msgid "Bottom right"
msgid "Bottom right"
msgstr ""
msgstr ""
#: src/ui/monitor-settings-content.vala:442
#: src/ui/settings/monitor-choice-loader.vala:117
#: src/ui/monitor-settings-content.vala:456
msgid "None"
msgid "Backdrop color"
msgstr ""
msgstr ""
#: src/ui/
monitor-settings-content.vala:486
#: src/ui/
widgets/config-include-widget.vala:63
msgid "
Adjust for TV
"
msgid "
Monitor configuration connected
"
msgstr ""
msgstr ""
#: src/ui/
monitor-settings-content.vala:498
#: src/ui/
widgets/monitor-row.vala:35
msgid "
HDR
"
msgid "
Remove
"
msgstr ""
msgstr ""
#: src/ui/
monitor-settings-content.vala:679
#: src/ui/
widgets/monitor-row.vala:81
#, c-format
#, c-format
msgid "
Variable (up to %.2f Hz)
"
msgid "
%dx%d@%.2f scale %.2f %dx%d
"
msgstr ""
msgstr ""
#: src/ui/
monitor-settings-content.vala:680
#: src/ui/
widgets/primary-display-widget.vala:37
msgid "
Variable
"
msgid "
Primary Display
"
msgstr ""
msgstr ""
#: src/ui/monitor-settings-content.vala:683 src/ui/ui-helpers.vala:35
#: src/ui/widgets/status-widget.vala:27
#, c-format
msgid "Read-only backend"
msgid "%.2f Hz"
msgstr ""
#: src/ui/widgets/status-widget.vala:28
msgid "Applying monitor layouts is not supported by this backend."
msgstr ""
#: src/ui/widgets/virtual-outputs-widget.vala:35
msgid "No Virtual Displays"
msgstr ""
#: src/ui/widgets/virtual-outputs-widget.vala:36
msgid "Use the add button to create one."
msgstr ""
msgstr ""
src/backends/display-backend.vala
View file @
ff5911c8
...
@@ -45,6 +45,7 @@ namespace TunerDisplays {
...
@@ -45,6 +45,7 @@ namespace TunerDisplays {
public
virtual
bool
supports_hot_corners
{
get
{
return
false
;
}
}
public
virtual
bool
supports_hot_corners
{
get
{
return
false
;
}
}
public
virtual
bool
supports_underscanning
{
get
{
return
false
;
}
}
public
virtual
bool
supports_underscanning
{
get
{
return
false
;
}
}
public
virtual
bool
supports_hdr_toggle
{
get
{
return
false
;
}
}
public
virtual
bool
supports_hdr_toggle
{
get
{
return
false
;
}
}
public
virtual
bool
supports_virtual_outputs
{
get
{
return
false
;
}
}
public
abstract
Gee
.
ArrayList
<
MonitorConfig
>
load
()
throws
Error
;
public
abstract
Gee
.
ArrayList
<
MonitorConfig
>
load
()
throws
Error
;
public
abstract
void
apply
(
Gee
.
ArrayList
<
MonitorConfig
>
monitors
)
throws
Error
;
public
abstract
void
apply
(
Gee
.
ArrayList
<
MonitorConfig
>
monitors
)
throws
Error
;
...
@@ -57,6 +58,18 @@ namespace TunerDisplays {
...
@@ -57,6 +58,18 @@ namespace TunerDisplays {
throw
new
BackendError
.
UNSUPPORTED
(
"Including monitor config is not supported by this backend"
);
throw
new
BackendError
.
UNSUPPORTED
(
"Including monitor config is not supported by this backend"
);
}
}
public
virtual
void
create_virtual_output
(
string
backend
)
throws
Error
{
throw
new
BackendError
.
UNSUPPORTED
(
"Virtual outputs are not supported by this backend"
);
}
public
virtual
void
remove_virtual_output
(
string
name
)
throws
Error
{
throw
new
BackendError
.
UNSUPPORTED
(
"Virtual outputs are not supported by this backend"
);
}
public
virtual
bool
is_virtual_output
(
MonitorConfig
monitor
)
{
return
false
;
}
protected
static
Json
.
Node
backend_parse_json
(
string
text
)
throws
Error
{
protected
static
Json
.
Node
backend_parse_json
(
string
text
)
throws
Error
{
var
parser
=
new
Json
.
Parser
();
var
parser
=
new
Json
.
Parser
();
parser
.
load_from_data
(
text
);
parser
.
load_from_data
(
text
);
...
...
src/backends/hyprland-backend.vala
View file @
ff5911c8
...
@@ -28,6 +28,7 @@ namespace TunerDisplays {
...
@@ -28,6 +28,7 @@ namespace TunerDisplays {
public
override
bool
supports_vrr_modes
{
get
{
return
true
;
}
}
public
override
bool
supports_vrr_modes
{
get
{
return
true
;
}
}
public
override
bool
supports_color_management
{
get
{
return
true
;
}
}
public
override
bool
supports_color_management
{
get
{
return
true
;
}
}
public
override
bool
supports_hdr_metadata
{
get
{
return
true
;
}
}
public
override
bool
supports_hdr_metadata
{
get
{
return
true
;
}
}
public
override
bool
supports_virtual_outputs
{
get
{
return
true
;
}
}
public
override
ConfigIncludeInfo
config_include_info
()
{
public
override
ConfigIncludeInfo
config_include_info
()
{
var
main_path
=
main_config_path
();
var
main_path
=
main_config_path
();
...
@@ -207,6 +208,23 @@ namespace TunerDisplays {
...
@@ -207,6 +208,23 @@ namespace TunerDisplays {
}
}
}
}
public
override
void
create_virtual_output
(
string
backend
)
throws
Error
{
if
(!
valid_virtual_backend
(
backend
))
throw
new
BackendError
.
APPLY_FAILED
(
_
(
"Unsupported virtual output backend"
));
ShellCommand
.
run
(
"hyprctl output create %s"
.
printf
(
backend
));
}
public
override
void
remove_virtual_output
(
string
name
)
throws
Error
{
ShellCommand
.
run
(
"hyprctl output remove %s"
.
printf
(
ShellCommand
.
quote
(
name
)));
}
public
override
bool
is_virtual_output
(
MonitorConfig
monitor
)
{
return
monitor
.
name
.
has_prefix
(
"HEADLESS-"
)
||
monitor
.
name
.
has_prefix
(
"WAYLAND-"
)
||
monitor
.
name
.
has_prefix
(
"X11-"
);
}
private
static
Gee
.
HashSet
<
string
>
read_active_names
()
throws
Error
{
private
static
Gee
.
HashSet
<
string
>
read_active_names
()
throws
Error
{
var
names
=
new
Gee
.
HashSet
<
string
>();
var
names
=
new
Gee
.
HashSet
<
string
>();
var
root
=
backend_parse_json
(
ShellCommand
.
run
(
"hyprctl -j monitors"
));
var
root
=
backend_parse_json
(
ShellCommand
.
run
(
"hyprctl -j monitors"
));
...
@@ -410,6 +428,13 @@ namespace TunerDisplays {
...
@@ -410,6 +428,13 @@ namespace TunerDisplays {
return
format
==
"XRGB2101010"
||
format
==
"XBGR2101010"
;
return
format
==
"XRGB2101010"
||
format
==
"XBGR2101010"
;
}
}
private
static
bool
valid_virtual_backend
(
string
backend
)
{
return
backend
==
"auto"
||
backend
==
"headless"
||
backend
==
"wayland"
||
backend
==
"x11"
;
}
private
static
string
output_identifier
(
MonitorConfig
monitor
)
{
private
static
string
output_identifier
(
MonitorConfig
monitor
)
{
if
(!
monitor
.
use_description
)
if
(!
monitor
.
use_description
)
return
monitor
.
name
;
return
monitor
.
name
;
...
...
src/meson.build
View file @
ff5911c8
...
@@ -25,6 +25,7 @@ sources = files(
...
@@ -25,6 +25,7 @@ sources = files(
'ui/widgets/primary-display-widget.vala',
'ui/widgets/primary-display-widget.vala',
'ui/widgets/single-monitor-widget.vala',
'ui/widgets/single-monitor-widget.vala',
'ui/widgets/status-widget.vala',
'ui/widgets/status-widget.vala',
'ui/widgets/virtual-outputs-widget.vala',
'ui/pages/monitor-settings-content.vala',
'ui/pages/monitor-settings-content.vala',
'ui/settings/monitor-choice-loader.vala',
'ui/settings/monitor-choice-loader.vala',
'ui/settings/monitor-setting-binding.vala',
'ui/settings/monitor-setting-binding.vala',
...
...
src/plugin.vala
View file @
ff5911c8
...
@@ -25,6 +25,7 @@ namespace TunerDisplays {
...
@@ -25,6 +25,7 @@ namespace TunerDisplays {
typeof
(
PrimaryDisplayWidget
).
ensure
();
typeof
(
PrimaryDisplayWidget
).
ensure
();
typeof
(
MonitorListWidget
).
ensure
();
typeof
(
MonitorListWidget
).
ensure
();
typeof
(
SingleMonitorWidget
).
ensure
();
typeof
(
SingleMonitorWidget
).
ensure
();
typeof
(
VirtualOutputsWidget
).
ensure
();
typeof
(
MonitorSettingBinding
).
ensure
();
typeof
(
MonitorSettingBinding
).
ensure
();
typeof
(
MonitorSettingValidator
).
ensure
();
typeof
(
MonitorSettingValidator
).
ensure
();
typeof
(
MonitorChoiceLoader
).
ensure
();
typeof
(
MonitorChoiceLoader
).
ensure
();
...
@@ -43,6 +44,16 @@ namespace TunerDisplays {
...
@@ -43,6 +44,16 @@ namespace TunerDisplays {
apply
.
clicked
.
connect
(
DisplaysContext
.
controller
.
apply_changes
);
apply
.
clicked
.
connect
(
DisplaysContext
.
controller
.
apply_changes
);
page
.
pack_end
(
apply
);
page
.
pack_end
(
apply
);
var
add_virtual_output
=
builder
.
get_object
(
"add_virtual_output_button"
)
as
Gtk
.
Button
;
add_virtual_output
.
clicked
.
connect
(()
=>
{
try
{
DisplaysContext
.
controller
.
backend
.
create_virtual_output
(
"auto"
);
DisplaysContext
.
controller
.
reload
();
}
catch
(
Error
err
)
{
Tuner
.
toast
(
err
.
message
);
}
});
monitor_page
=
builder
.
get_object
(
"monitor_settings_page"
)
as
Tuner
.
Page
;
monitor_page
=
builder
.
get_object
(
"monitor_settings_page"
)
as
Tuner
.
Page
;
monitor_page_content
=
builder
.
get_object
(
"monitor_page_content"
)
as
Gtk
.
Box
;
monitor_page_content
=
builder
.
get_object
(
"monitor_page_content"
)
as
Gtk
.
Box
;
monitor_page_title
=
builder
.
get_object
(
"monitor_page_title"
)
as
Gtk
.
Label
;
monitor_page_title
=
builder
.
get_object
(
"monitor_page_title"
)
as
Gtk
.
Label
;
...
...
src/ui/common/displays-visibility.vala
View file @
ff5911c8
...
@@ -81,6 +81,8 @@ namespace TunerDisplays {
...
@@ -81,6 +81,8 @@ namespace TunerDisplays {
return
!
controller
.
mirror_enabled
()
&&
!
controller
.
single_monitor_mode
();
return
!
controller
.
mirror_enabled
()
&&
!
controller
.
single_monitor_mode
();
case
"single-monitor"
:
case
"single-monitor"
:
return
controller
.
single_monitor_mode
();
return
controller
.
single_monitor_mode
();
case
"virtual-outputs"
:
return
controller
.
backend
.
supports_virtual_outputs
;
default
:
default
:
return
true
;
return
true
;
}
}
...
...
src/ui/widgets/monitor-list-widget.vala
View file @
ff5911c8
...
@@ -19,11 +19,15 @@ namespace TunerDisplays {
...
@@ -19,11 +19,15 @@ namespace TunerDisplays {
}
}
foreach
(
var
monitor
in
controller
.
monitors
)
{
foreach
(
var
monitor
in
controller
.
monitors
)
{
if
(
controller
.
backend
.
is_virtual_output
(
monitor
))
continue
;
var
row
=
new
MonitorRow
(
monitor
,
monitor_settings_page_id
(),
controller
.
monitors
,
controller
.
backend
);
var
row
=
new
MonitorRow
(
monitor
,
monitor_settings_page_id
(),
controller
.
monitors
,
controller
.
backend
);
row
.
monitor_selected
.
connect
(
controller
.
open_monitor_settings
);
row
.
monitor_selected
.
connect
(
controller
.
open_monitor_settings
);
row
.
monitor_changed
.
connect
(
controller
.
refresh_from_monitors
);
row
.
monitor_changed
.
connect
(
controller
.
refresh_from_monitors
);
list
.
append
(
row
);
list
.
append
(
row
);
}
}
list
.
visible
=
list_has_children
(
list
);
list
.
visible
=
list_has_children
(
list
);
}
}
}
}
...
...
src/ui/widgets/monitor-row.vala
View file @
ff5911c8
...
@@ -30,6 +30,25 @@ namespace TunerDisplays {
...
@@ -30,6 +30,25 @@ namespace TunerDisplays {
activate_action
(
"navigation.push"
,
"s"
,
page_id
);
activate_action
(
"navigation.push"
,
"s"
,
page_id
);
});
});
if
(
backend
.
is_virtual_output
(
monitor
))
{
var
remove_button
=
new
Gtk
.
Button
.
from_icon_name
(
"user-trash-symbolic"
)
{
tooltip_text
=
_
(
"Remove"
),
valign
=
Gtk
.
Align
.
CENTER
};
remove_button
.
has_frame
=
false
;
remove_button
.
add_css_class
(
"flat"
);
remove_button
.
add_css_class
(
"destructive-action"
);
remove_button
.
clicked
.
connect
(()
=>
{
try
{
backend
.
remove_virtual_output
(
monitor
.
name
);
DisplaysContext
.
controller
.
reload
();
}
catch
(
Error
err
)
{
Tuner
.
toast
(
err
.
message
);
}
});
add_suffix
(
remove_button
);
}
enabled_switch
=
new
Gtk
.
Switch
()
{
enabled_switch
=
new
Gtk
.
Switch
()
{
valign
=
Gtk
.
Align
.
CENTER
,
valign
=
Gtk
.
Align
.
CENTER
,
active
=
monitor
.
enabled
,
active
=
monitor
.
enabled
,
...
...
src/ui/widgets/virtual-outputs-widget.vala
0 → 100644
View file @
ff5911c8
namespace
TunerDisplays
{
public
class
VirtualOutputsWidget
:
Tuner
.
Widget
{
private
Gtk
.
ListBox
list
;
public
override
Gtk
.
Widget
?
create
()
{
var
box
=
new
Gtk
.
Box
(
Gtk
.
Orientation
.
VERTICAL
,
0
);
list
=
create_boxed_list
();
box
.
append
(
list
);
DisplaysContext
.
controller
.
changed
.
connect
(
rebuild
);
rebuild
();
if
(
binding
!=
null
&&
binding
.
validator
!=
null
)
binding
.
validator
.
apply
(
binding
,
box
);
return
box
;
}
private
void
rebuild
()
{
clear_list
(
list
);
var
controller
=
DisplaysContext
.
controller
;
var
has_virtual_outputs
=
false
;
foreach
(
var
monitor
in
controller
.
monitors
)
{
if
(
controller
.
backend
.
is_virtual_output
(
monitor
))
{
var
row
=
new
MonitorRow
(
monitor
,
monitor_settings_page_id
(),
controller
.
monitors
,
controller
.
backend
);
row
.
monitor_selected
.
connect
(
controller
.
open_monitor_settings
);
row
.
monitor_changed
.
connect
(
controller
.
refresh_from_monitors
);
list
.
append
(
row
);
has_virtual_outputs
=
true
;
}
}
if
(!
has_virtual_outputs
)
{
list
.
append
(
new
Adw
.
ActionRow
()
{
title
=
_
(
"No Virtual Displays"
),
subtitle
=
_
(
"Use the add button to create one."
)
});
}
list
.
visible
=
true
;
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment