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
Show 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 {
}
Tuner.Group {
title: _("D
etail
s");
title: _("D
isplay
s");
id: "monitors";
$TunerDisplaysPrimaryDisplayWidget primary_display_widget {}
...
...
@@ -70,6 +70,28 @@ Tuner.Page displays_page {
}
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";
$TunerDisplaysSingleMonitorWidget single_monitor_widget {
...
...
po/POTFILES
View file @
ff5911c8
...
...
@@ -17,3 +17,4 @@ src/ui/widgets/mirror-settings-widget.vala
src/ui/widgets/monitor-row.vala
src/ui/widgets/primary-display-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 ""
msgstr ""
"Project-Id-Version: tuner-displays\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"
"Last-Translator: Automatically generated\n"
"Language-Team: Russian\n"
...
...
@@ -11,51 +11,173 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\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"
msgstr "Мониторы"
#: data/ui/displays-view.blp:13 src/backends/hyprland-backend.vala:40
#: src/backends/hyprland-backend.vala:55 src/backends/niri-backend.vala:46
#: src/backends/niri-backend.vala:61
msgid "Monitor configuration is not connected"
msgstr "Конфигурация мониторов не подключена"
#: data/ui/pages/displays-page.blp:32
msgid "Mirror Displays"
msgstr "Зеркалировать мониторы"
#: data/ui/
displays-view.blp:18
msgid "
Connect
"
msgstr "
Подключить
"
#: data/ui/
pages/displays-page.blp:73
msgid "
Virtual Displays
"
msgstr "
Виртуальные мониторы
"
#: data/ui/displays-view.blp:28
msgid "Details"
msgstr "Параметры"
#: data/ui/pages/displays-page.blp:79
msgid "Add Virtual Display"
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"
msgstr "Дисплей"
#: data/ui/
monitor-settings-content.blp:11
#: data/ui/
pages/monitor-settings-content.blp:15
msgid "Enabled"
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"
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"
msgstr "Переопределения HDR / EDID"
#:
src/plugin.vala:24
msgid "
Refresh
"
msgstr "
Обновить
"
#:
data/ui/pages/monitor-settings-content.blp:229
msgid "
Force wide color
"
msgstr "
Принудительно широкий цветовой охват
"
#:
src/plugin.vala:29 src/plugin.vala:30 src/plugin.vala:53 src/plugin.vala:54
msgid "
Apply
"
msgstr "При
менить
"
#:
data/ui/pages/monitor-settings-content.blp:238
msgid "
Force HDR
"
msgstr "При
нудительно HDR
"
#: src/plugin.vala:41 src/plugin.vala:47
msgid "Monitor"
msgstr "Монитор"
#: data/ui/pages/monitor-settings-content.blp:247
msgid "SDR min luminance"
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
msgid "No enabled monitors to mirror"
...
...
@@ -65,27 +187,31 @@ msgstr "Нет включённых мониторов для зеркалиро
msgid "No common mirror mode is available"
msgstr "Нет общего режима для зеркалирования"
#: src/backends/hyprland-backend.vala:
41
#: src/backends/hyprland-backend.vala:
39
msgid "Hyprland configuration file was not found."
msgstr "Файл конфигурации Hyprland не найден."
#: src/backends/hyprland-backend.vala:5
6
#: src/backends/hyprland-backend.vala:5
4
msgid "Add monitors.conf to the Hyprland configuration."
msgstr "Добавьте monitors.conf в конфигурацию Hyprland."
#: src/backends/hyprland-backend.vala:
80
#: src/backends/hyprland-backend.vala:
75
msgid "hyprctl monitors all returned non-array 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."
msgstr "Файл конфигурации niri не найден."
#: src/backends/niri-backend.vala:
62
#: src/backends/niri-backend.vala:
59
msgid "Add monitor.kdl to the niri configuration."
msgstr "Добавьте monitor.kdl в конфигурацию niri."
#: src/backends/niri-backend.vala:
85
#: src/backends/niri-backend.vala:
79
msgid "niri msg outputs returned non-object JSON"
msgstr "niri msg outputs вернул JSON не в виде объекта"
...
...
@@ -93,253 +219,170 @@ msgstr "niri msg outputs вернул JSON не в виде объекта"
msgid "Built-in Display"
msgstr "Встроенный дисплей"
#: src/ui/
displays-view.vala:72
#: src/ui/
common/displays-controller.vala:39
msgid "Failed to load monitors"
msgstr "Не удалось загрузить мониторы"
#: src/ui/
displays-view.vala:81
#: src/ui/
common/displays-controller.vala:49
msgid "Monitor settings applied"
msgstr "Настройки мониторов применены"
#: src/ui/displays-view.vala:165
msgid "Read-only backend"
msgstr "Режим только для чтения"
#: 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/common/ui-utils.vala:236
#, c-format
msgid "%.2f Hz"
msgstr "%.2f Гц"
#: 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"
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"
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"
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"
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"
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"
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"
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"
msgstr "Отражённый 270 градусов"
#: src/ui/displays-view.vala:332 src/ui/monitor-settings-content.vala:315
msgid "Rotation"
msgstr "Поворот"
#: 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
#: src/ui/settings/monitor-choice-loader.vala:38
#: 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 "Отключено"
#: 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/settings/monitor-choice-loader.vala:39
#: src/ui/settings/monitor-choice-loader.vala:45
#: src/ui/settings/monitor-choice-loader.vala:59
msgid "On"
msgstr "Включено"
#: src/ui/
monitor-settings-content.vala:38
0
#: src/ui/
settings/monitor-choice-loader.vala:4
0
msgid "Fullscreen"
msgstr "Полный экран"
#: src/ui/
monitor-settings-content.vala:380
#: src/ui/
settings/monitor-choice-loader.vala:41
msgid "Fullscreen video/game"
msgstr "Полноэкранное видео/игра"
#: src/ui/monitor-settings-content.vala:382
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
#: src/ui/settings/monitor-choice-loader.vala:46
msgid "On demand"
msgstr "По требованию"
#: src/ui/monitor-settings-content.vala:418
msgid "Focus at startup"
msgstr "Фокус при запуске"
#: src/ui/monitor-settings-content.vala:432
msgid "Hot corners"
msgstr "Активные углы"
#: src/ui/settings/monitor-choice-loader.vala:57
msgid "Auto"
msgstr "Авто"
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:62
msgid "Default"
msgstr "По умолчанию"
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:64
msgid "All"
msgstr "Все"
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:65
msgid "Top left"
msgstr "Сверху слева"
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:66
msgid "Top right"
msgstr "Сверху справа"
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:67
msgid "Bottom left"
msgstr "Снизу слева"
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:68
msgid "Bottom right"
msgstr "Снизу справа"
#: src/ui/monitor-settings-content.vala:442
#: src/ui/monitor-settings-content.vala:456
msgid "Backdrop color"
msgstr "Цвет фона"
#: src/ui/settings/monitor-choice-loader.vala:117
msgid "None"
msgstr "Нет"
#: src/ui/
monitor-settings-content.vala:486
msgid "
Adjust for TV
"
msgstr "
Отрегулировать для ТВ
"
#: src/ui/
widgets/config-include-widget.vala:63
msgid "
Monitor configuration connected
"
msgstr "
Конфигурация мониторов подключена
"
#: src/ui/
monitor-settings-content.vala:498
msgid "
HDR
"
msgstr "
HDR
"
#: src/ui/
widgets/monitor-row.vala:35
msgid "
Remove
"
msgstr "
Удалить
"
#: src/ui/
monitor-settings-content.vala:679
#: src/ui/
widgets/monitor-row.vala:81
#, c-format
msgid "Variable (up to %.2f Hz)"
msgstr "Переменная (до %.2f Гц)"
msgid "%dx%d@%.2f scale %.2f %dx%d"
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 "Variable"
msgstr "Переменная"
#~ msgid "Details"
#~ 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
msgid "%.2f Hz"
msgstr "%.2f Гц"
#~ msgid "Variable (up to %.2f Hz)"
#~ msgstr "Переменная (до %.2f Гц)"
#~ msgid "Variable"
#~ msgstr "Переменная"
#~ msgid "Underscanning"
#~ msgstr "Уменьшение области вывода"
...
...
po/tuner-displays.pot
View file @
ff5911c8
...
...
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: tuner-displays\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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
...
...
@@ -17,332 +17,353 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\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"
msgstr ""
#: data/ui/displays-view.blp:13 src/backends/hyprland-backend.vala:40
#: src/backends/hyprland-backend.vala:55 src/backends/niri-backend.vala:46
#: src/backends/niri-backend.vala:61
msgid "Monitor configuration is not connected"
#: data/ui/pages/displays-page.blp:32
msgid "Mirror Displays"
msgstr ""
#: data/ui/
displays-view.blp:18
msgid "
Connect
"
#: data/ui/
pages/displays-page.blp:73
msgid "
Virtual Displays
"
msgstr ""
#: data/ui/
displays-view.blp:28
msgid "
Details
"
#: data/ui/
pages/displays-page.blp:79
msgid "
Add Virtual Display
"
msgstr ""
#: data/ui/
monitor-settings-content.blp:
8
msgid "
Display
"
#: data/ui/
pages/displays-page.blp:10
8
msgid "
Refresh
"
msgstr ""
#: data/ui/monitor-settings-content.blp:11
msgid "Enabled"
#: 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/monitor-settings-content.blp:16
msgid "Hyprland"
#: 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:20
msgid "
HDR / EDID overrides
"
#: data/ui/
pages/monitor-settings-content.blp:11
msgid "
Display
"
msgstr ""
#:
src/plugin.vala:24
msgid "
Refresh
"
#:
data/ui/pages/monitor-settings-content.blp:15
msgid "
Enabled
"
msgstr ""
#: src/plugin.vala:29 src/plugin.vala:30 src/plugin.vala:53 src/plugin.vala:54
msgid "Apply"
#: 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 ""
#: src/plugin.vala:41 src/plugin.vala:47
msgid "Monitor"
#: data/ui/pages/monitor-settings-content.blp:41
#: data/ui/pages/monitor-settings-content.blp:48
msgid "Refresh Rate"
msgstr ""
#: src/backends/gnome-backend.vala:72 src/backends/gnome-backend.vala:516
msgid "No enabled monitors to mirror"
#: data/ui/pages/monitor-settings-content.blp:57
#: data/ui/pages/monitor-settings-content.blp:102
msgid "Variable Refresh Rate"
msgstr ""
#: src/backends/gnome-backend.vala:520 src/backends/gnome-backend.vala:532
msgid "No common mirror mode is available"
#: 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 ""
#: src/backends/hyprland-backend.vala:41
msgid "Hyprland configuration file was not found."
#: data/ui/pages/monitor-settings-content.blp:87
#: src/ui/widgets/mirror-settings-widget.vala:98
msgid "Rotation"
msgstr ""
#:
src/backends/hyprland-backend.vala:56
msgid "
Add monitors.conf to the Hyprland configuration.
"
#:
data/ui/pages/monitor-settings-content.blp:93
msgid "
Mirror
"
msgstr ""
#:
src/backends/hyprland-backend.vala:80
msgid "
hyprctl monitors all returned non-array JSON
"
#:
data/ui/pages/monitor-settings-content.blp:111
msgid "
Focus at startup
"
msgstr ""
#:
src/backends/niri-backend.vala:47
msgid "
niri configuration file was not found.
"
#:
data/ui/pages/monitor-settings-content.blp:126
msgid "
Hot corners
"
msgstr ""
#:
src/backends/niri-backend.vala:62
msgid "Ad
d monitor.kdl to the niri configuration.
"
#:
data/ui/pages/monitor-settings-content.blp:135
msgid "Ad
just for TV
"
msgstr ""
#:
src/backends/niri-backend.vala:85
msgid "
niri msg outputs returned non-object JSON
"
#:
data/ui/pages/monitor-settings-content.blp:143
msgid "
HDR
"
msgstr ""
#:
src/core/display-model.vala:75
msgid "
Built-in Display
"
#:
data/ui/pages/monitor-settings-content.blp:152
msgid "
Hyprland
"
msgstr ""
#:
src/ui/displays-view.vala:72
msgid "
Failed to load monitors
"
#:
data/ui/pages/monitor-settings-content.blp:156
msgid "
Use description
"
msgstr ""
#:
src/ui/displays-view.vala:81
msgid "
Monitor settings applied
"
#:
data/ui/pages/monitor-settings-content.blp:164
msgid "
Bit depth
"
msgstr ""
#:
src/ui/displays-view.vala:165
msgid "
Read-only backend
"
#:
data/ui/pages/monitor-settings-content.blp:173
msgid "
VRR
"
msgstr ""
#:
src/ui/displays-view.vala:166
msgid "
Applying monitor layouts is not supported by this backend.
"
#:
data/ui/pages/monitor-settings-content.blp:182
msgid "
Color management
"
msgstr ""
#:
src/ui/displays-view.vala:189
msgid "
Monitor configuration connected
"
#:
data/ui/pages/monitor-settings-content.blp:191
msgid "
SDR EOTF
"
msgstr ""
#:
src/ui/displays-view.vala:201
msgid "
Mirror Display
s"
#:
data/ui/pages/monitor-settings-content.blp:200
msgid "
SDR brightnes
s"
msgstr ""
#: src/ui/displays-view.vala:261 src/ui/monitor-settings-content.vala:88
#: src/ui/monitor-settings-content.vala:127
msgid "Resolution"
#: data/ui/pages/monitor-settings-content.blp:212
msgid "SDR saturation"
msgstr ""
#: src/ui/displays-view.vala:307 src/ui/monitor-settings-content.vala:265
#: src/ui/monitor-settings-content.vala:291
msgid "Scale"
#: data/ui/pages/monitor-settings-content.blp:225
msgid "HDR / EDID overrides"
msgstr ""
#:
src/ui/displays-view.vala:325 src/ui/monitor-settings-content.vala:308
msgid "
Normal
"
#:
data/ui/pages/monitor-settings-content.blp:229
msgid "
Force wide color
"
msgstr ""
#:
src/ui/displays-view.vala:325 src/ui/monitor-settings-content.vala:30
8
msgid "
90 degrees
"
#:
data/ui/pages/monitor-settings-content.blp:23
8
msgid "
Force HDR
"
msgstr ""
#:
src/ui/displays-view.vala:325 src/ui/monitor-settings-content.vala:308
msgid "
180 degrees
"
#:
data/ui/pages/monitor-settings-content.blp:247
msgid "
SDR min luminance
"
msgstr ""
#:
src/ui/displays-view.vala:325 src/ui/monitor-settings-content.vala:308
msgid "
270 degrees
"
#:
data/ui/pages/monitor-settings-content.blp:259
msgid "
SDR max luminance
"
msgstr ""
#:
src/ui/displays-view.vala:326 src/ui/monitor-settings-content.vala:309
msgid "
Flipped
"
#:
data/ui/pages/monitor-settings-content.blp:270
msgid "
Min luminance
"
msgstr ""
#:
src/ui/displays-view.vala:326 src/ui/monitor-settings-content.vala:309
msgid "
Flipped 90 degrees
"
#:
data/ui/pages/monitor-settings-content.blp:282
msgid "
Max luminance
"
msgstr ""
#:
src/ui/displays-view.vala:326 src/ui/monitor-settings-content.vala:309
msgid "
Flipped 180 degrees
"
#:
data/ui/pages/monitor-settings-content.blp:293
msgid "
Max average luminance
"
msgstr ""
#:
src/ui/displays-view.vala:326 src/ui/monitor-settings-content.vala:309
msgid "
Flipped 270 degrees
"
#:
data/ui/pages/monitor-settings-content.blp:304
msgid "
ICC profile
"
msgstr ""
#: src/ui/displays-view.vala:332 src/ui/monitor-settings-content.vala:315
msgid "Rotation"
#: data/ui/widgets/backdrop-color-widget.blp:7
#: data/ui/widgets/backdrop-color-widget.blp:13
msgid "Backdrop color"
msgstr ""
#: src/ui/displays-view.vala:365
msgid "Primary Display"
#: 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 ""
#: src/ui/monitor-row.vala:62
#, c-format
msgid "%dx%d@%.2f scale %.2f %dx%d"
#: data/ui/widgets/config-include-widget.blp:13
msgid "Connect"
msgstr ""
#: src/ui/monitor-settings-content.vala:156
#: src/ui/monitor-settings-content.vala:164
msgid "Refresh Rate"
#: src/backends/gnome-backend.vala:72 src/backends/gnome-backend.vala:516
msgid "No enabled monitors to mirror"
msgstr ""
#: src/ui/monitor-settings-content.vala:186
#: src/ui/monitor-settings-content.vala:411
msgid "Variable Refresh Rate"
#: src/backends/gnome-backend.vala:520 src/backends/gnome-backend.vala:532
msgid "No common mirror mode is available"
msgstr ""
#: src/
ui/monitor-settings-content.vala:335
msgid "
None
"
#: src/
backends/hyprland-backend.vala:39
msgid "
Hyprland configuration file was not found.
"
msgstr ""
#: src/
ui/monitor-settings-content.vala:350
msgid "
Mirror
"
#: src/
backends/hyprland-backend.vala:54
msgid "
Add monitors.conf to the Hyprland configuration.
"
msgstr ""
#: src/
ui/monitor-settings-content.vala:367
msgid "
Use description
"
#: src/
backends/hyprland-backend.vala:75
msgid "
hyprctl monitors all returned non-array JSON
"
msgstr ""
#: src/
ui/monitor-settings-content.vala:378
msgid "
Bit depth
"
#: src/
backends/hyprland-backend.vala:213
msgid "
Unsupported virtual output backend
"
msgstr ""
#: src/
ui/monitor-settings-content.vala:380
msgid "
VRR
"
#: src/
backends/niri-backend.vala:44
msgid "
niri configuration file was not found.
"
msgstr ""
#: 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"
#: src/backends/niri-backend.vala:59
msgid "Add monitor.kdl to the niri configuration."
msgstr ""
#: 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
msgid "On"
#: src/backends/niri-backend.vala:79
msgid "niri msg outputs returned non-object JSON"
msgstr ""
#: src/
ui/monitor-settings-content.vala:380
msgid "
Fullscreen
"
#: src/
core/display-model.vala:75
msgid "
Built-in Display
"
msgstr ""
#: src/ui/
monitor-settings-content.vala:380
msgid "F
ullscreen video/game
"
#: src/ui/
common/displays-controller.vala:39
msgid "F
ailed to load monitors
"
msgstr ""
#: src/ui/
monitor-settings-content.vala:382
msgid "
Color management
"
#: src/ui/
common/displays-controller.vala:49
msgid "
Monitor settings applied
"
msgstr ""
#: src/ui/monitor-settings-content.vala:383
msgid "SDR EOTF"
#: src/ui/common/ui-utils.vala:236
#, c-format
msgid "%.2f Hz"
msgstr ""
#: src/ui/monitor-settings-content.vala:384
msgid "SDR brightness"
#: src/ui/settings/monitor-choice-loader.vala:21
#: src/ui/widgets/mirror-settings-widget.vala:91
msgid "Normal"
msgstr ""
#: src/ui/monitor-settings-content.vala:385
msgid "SDR saturation"
#: src/ui/settings/monitor-choice-loader.vala:22
#: src/ui/widgets/mirror-settings-widget.vala:91
msgid "90 degrees"
msgstr ""
#: src/ui/monitor-settings-content.vala:389
msgid "Force wide color"
#: src/ui/settings/monitor-choice-loader.vala:23
#: src/ui/widgets/mirror-settings-widget.vala:91
msgid "180 degrees"
msgstr ""
#: src/ui/
monitor-settings-content.vala:389
#: src/ui/
monitor-settings-content.vala:390
msgid "
Auto
"
#: src/ui/
settings/monitor-choice-loader.vala:24
#: src/ui/
widgets/mirror-settings-widget.vala:91
msgid "
270 degrees
"
msgstr ""
#: src/ui/monitor-settings-content.vala:390
msgid "Force HDR"
#: src/ui/settings/monitor-choice-loader.vala:25
#: src/ui/widgets/mirror-settings-widget.vala:92
msgid "Flipped"
msgstr ""
#: src/ui/monitor-settings-content.vala:391
msgid "SDR min luminance"
#: src/ui/settings/monitor-choice-loader.vala:26
#: src/ui/widgets/mirror-settings-widget.vala:92
msgid "Flipped 90 degrees"
msgstr ""
#: src/ui/monitor-settings-content.vala:392
msgid "SDR max luminance"
#: src/ui/settings/monitor-choice-loader.vala:27
#: src/ui/widgets/mirror-settings-widget.vala:92
msgid "Flipped 180 degrees"
msgstr ""
#: src/ui/monitor-settings-content.vala:393
msgid "Min luminance"
#: src/ui/settings/monitor-choice-loader.vala:28
#: src/ui/widgets/mirror-settings-widget.vala:92
msgid "Flipped 270 degrees"
msgstr ""
#: src/ui/monitor-settings-content.vala:394
msgid "Max luminance"
#: src/ui/settings/monitor-choice-loader.vala:38
#: 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 ""
#: src/ui/monitor-settings-content.vala:395
msgid "Max average luminance"
#: src/ui/settings/monitor-choice-loader.vala:39
#: src/ui/settings/monitor-choice-loader.vala:45
#: src/ui/settings/monitor-choice-loader.vala:59
msgid "On"
msgstr ""
#: src/ui/
monitor-settings-content.vala:398
msgid "
ICC profile
"
#: src/ui/
settings/monitor-choice-loader.vala:40
msgid "
Fullscreen
"
msgstr ""
#: src/ui/
monitor-settings-content.vala:412
msgid "
On demand
"
#: src/ui/
settings/monitor-choice-loader.vala:41
msgid "
Fullscreen video/game
"
msgstr ""
#: src/ui/
monitor-settings-content.vala:418
msgid "
Focus at startup
"
#: src/ui/
settings/monitor-choice-loader.vala:46
msgid "
On demand
"
msgstr ""
#: src/ui/
monitor-settings-content.vala:432
msgid "
Hot corners
"
#: src/ui/
settings/monitor-choice-loader.vala:57
msgid "
Auto
"
msgstr ""
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:62
msgid "Default"
msgstr ""
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:64
msgid "All"
msgstr ""
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:65
msgid "Top left"
msgstr ""
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:66
msgid "Top right"
msgstr ""
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:67
msgid "Bottom left"
msgstr ""
#: src/ui/
monitor-settings-content.vala:433
#: src/ui/
settings/monitor-choice-loader.vala:68
msgid "Bottom right"
msgstr ""
#: src/ui/monitor-settings-content.vala:442
#: src/ui/monitor-settings-content.vala:456
msgid "Backdrop color"
#: src/ui/settings/monitor-choice-loader.vala:117
msgid "None"
msgstr ""
#: src/ui/
monitor-settings-content.vala:486
msgid "
Adjust for TV
"
#: src/ui/
widgets/config-include-widget.vala:63
msgid "
Monitor configuration connected
"
msgstr ""
#: src/ui/
monitor-settings-content.vala:498
msgid "
HDR
"
#: src/ui/
widgets/monitor-row.vala:35
msgid "
Remove
"
msgstr ""
#: src/ui/
monitor-settings-content.vala:679
#: src/ui/
widgets/monitor-row.vala:81
#, c-format
msgid "
Variable (up to %.2f Hz)
"
msgid "
%dx%d@%.2f scale %.2f %dx%d
"
msgstr ""
#: src/ui/
monitor-settings-content.vala:680
msgid "
Variable
"
#: src/ui/
widgets/primary-display-widget.vala:37
msgid "
Primary Display
"
msgstr ""
#: src/ui/monitor-settings-content.vala:683 src/ui/ui-helpers.vala:35
#, c-format
msgid "%.2f Hz"
#: 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/backends/display-backend.vala
View file @
ff5911c8
...
...
@@ -45,6 +45,7 @@ namespace TunerDisplays {
public
virtual
bool
supports_hot_corners
{
get
{
return
false
;
}
}
public
virtual
bool
supports_underscanning
{
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
void
apply
(
Gee
.
ArrayList
<
MonitorConfig
>
monitors
)
throws
Error
;
...
...
@@ -57,6 +58,18 @@ namespace TunerDisplays {
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
{
var
parser
=
new
Json
.
Parser
();
parser
.
load_from_data
(
text
);
...
...
src/backends/hyprland-backend.vala
View file @
ff5911c8
...
...
@@ -28,6 +28,7 @@ namespace TunerDisplays {
public
override
bool
supports_vrr_modes
{
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_virtual_outputs
{
get
{
return
true
;
}
}
public
override
ConfigIncludeInfo
config_include_info
()
{
var
main_path
=
main_config_path
();
...
...
@@ -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
{
var
names
=
new
Gee
.
HashSet
<
string
>();
var
root
=
backend_parse_json
(
ShellCommand
.
run
(
"hyprctl -j monitors"
));
...
...
@@ -410,6 +428,13 @@ namespace TunerDisplays {
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
)
{
if
(!
monitor
.
use_description
)
return
monitor
.
name
;
...
...
src/meson.build
View file @
ff5911c8
...
...
@@ -25,6 +25,7 @@ sources = files(
'ui/widgets/primary-display-widget.vala',
'ui/widgets/single-monitor-widget.vala',
'ui/widgets/status-widget.vala',
'ui/widgets/virtual-outputs-widget.vala',
'ui/pages/monitor-settings-content.vala',
'ui/settings/monitor-choice-loader.vala',
'ui/settings/monitor-setting-binding.vala',
...
...
src/plugin.vala
View file @
ff5911c8
...
...
@@ -25,6 +25,7 @@ namespace TunerDisplays {
typeof
(
PrimaryDisplayWidget
).
ensure
();
typeof
(
MonitorListWidget
).
ensure
();
typeof
(
SingleMonitorWidget
).
ensure
();
typeof
(
VirtualOutputsWidget
).
ensure
();
typeof
(
MonitorSettingBinding
).
ensure
();
typeof
(
MonitorSettingValidator
).
ensure
();
typeof
(
MonitorChoiceLoader
).
ensure
();
...
...
@@ -43,6 +44,16 @@ namespace TunerDisplays {
apply
.
clicked
.
connect
(
DisplaysContext
.
controller
.
apply_changes
);
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_content
=
builder
.
get_object
(
"monitor_page_content"
)
as
Gtk
.
Box
;
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 {
return
!
controller
.
mirror_enabled
()
&&
!
controller
.
single_monitor_mode
();
case
"single-monitor"
:
return
controller
.
single_monitor_mode
();
case
"virtual-outputs"
:
return
controller
.
backend
.
supports_virtual_outputs
;
default
:
return
true
;
}
...
...
src/ui/widgets/monitor-list-widget.vala
View file @
ff5911c8
...
...
@@ -19,11 +19,15 @@ namespace TunerDisplays {
}
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
);
row
.
monitor_selected
.
connect
(
controller
.
open_monitor_settings
);
row
.
monitor_changed
.
connect
(
controller
.
refresh_from_monitors
);
list
.
append
(
row
);
}
list
.
visible
=
list_has_children
(
list
);
}
}
...
...
src/ui/widgets/monitor-row.vala
View file @
ff5911c8
...
...
@@ -30,6 +30,25 @@ namespace TunerDisplays {
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
()
{
valign
=
Gtk
.
Align
.
CENTER
,
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