Инвертировать цвета при настройке Dual-Screen / Dual-Monitor?

9

Чтобы инвертировать цвета на мониторе, я вызываю:

xcalib -invert -alter

Проблема в том, что при настройке Dual-Monitor цвета инвертируются только на первом экране.

Я не могу использовать гаджеты Compitz для инвертирования цвета, потому что мои настройки

  • Два повернутых (поворотных) монитора

Двойной экран, когда оба Piovot не работают с композитингом на моей карте.

Xorg кажется единственным решением.

xcalib - это здорово, потому что я могу сразу переключаться в зависимости от приложения.

Cany предложения, решения, как инвертировать цвета на обоих экранах с помощью xcalib?

PS

-screen параметр не работает:

X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  130 (XFree86-VidModeExtension)
  Minor opcode of failed request:  19 (XF86VidModeGetGammaRampSize)
  Value in failed request:  0x17
  Serial number of failed request:  10
  Current serial number in output stream:  10

Вот моя xrandrконфигурация экрана:

~$ xrandr                                                                                                                                                              
Screen 0: minimum 320 x 200, current 2400 x 1920, maximum 3840 x 3840                                                                                                  
DFP1 connected 1200x1920+1200+0 left (normal left inverted right x axis y axis) 518mm x 324mm                                                                          
   1920x1200      60.0*+                                                                                                                                               
   1680x1050      60.0 +                                                                                                                                               
   1440x900       59.9 +                                                                                                                                               
   1280x800       60.0 +                                                                                                                                               
   1920x1080      60.0     50.0     30.0     25.0     24.0                                                                                                             
(...)                                                                                                                   
DFP2 connected 1200x1920+0+0 left (normal left inverted right x axis y axis) 518mm x 324mm                                                                             
   1920x1200      60.0*+                                                                                                                                               
   1920x1080      60.0 +                                                                                                                                               
   1776x1000      60.0 +                                                                                                                                               
   1680x1050      60.0 +                                                                                                                                               
   1440x900       59.9 +                                                                                                                                               
   1280x800       60.0 +   75.0                                                                                                                                        
   1152x648       60.0 +                                                                                                                                               
   1600x1200      60.0                                                                                                                                                 
   1400x1050      60.0                                                                                                                                                 
   1280x1024      75.0     60.0                                                                                                                                        
(...)                                                                        
CRT1 disconnected (normal left inverted right x axis y axis)                                                                                                           
CRT2 disconnected (normal left inverted right x axis y axis)   

Как видите, они вращаются - 1200x1920настройка на одном виртуальном экране с помощью maximum 3840 x 3840. Я думаю, это причина, по которой он похож на «один» экран 2400x1920, разделенный на оба (поэтому xcalib применяется только к первичному экрану). Но это только моя гипотеза, может быть, причина в другом.

Гжегож Вежовецкий
источник

Ответы:

5

Вот небольшая утилита, которая делает то, что вы хотите:

https://github.com/zoltanp/xrandr-invert-colors
Кэмпбелл
источник
1
Пожалуйста, не просто размещайте ссылку (и бесполезный текст наполнителя); включите некоторые соответствующие детали, чтобы вокруг ответа был достаточный контекст.
Джейсонвриан
Хотя @jasonwryan прав насчет качества ответа, я могу подтвердить, что xrandr-invert-colors работает. Пришло время выбросить неиспользованного халиба из окна и объявить нового чемпиона.
lkraav
1
@jasonwryan "соответствующие детали": это работает. :) Эта утилита делает именно то, о чем просил OP.
ВасяНовиков
На мой взгляд, короткие и сладкие удары излишне многословны каждый день недели.
Сэм Уоткинс
4

Можно попытаться поиграться с отрицательными гамма-значениями и значениями яркости <1, чтобы сгенерировать отрицательное гамма-изменение на конкретном выходе.

xrandr --output [output] --gamma -0.5:-0.5:-0.5 --brightness 0.1 

этого достаточно, по крайней мере для меня, и он работает «из коробки», но не учитывает существующие гамма-кривые для вывода. может быть стоит выстрел. Привет конрад

Konrad
источник
3

Пытаться xcalib -d :0 -invert -alter

Параметр -d относится к устройству, и он работал для меня, когда -s не сделал

Lucian
источник
В моем случае это не помогает ... -d :1-> Can't open display :1и т. Д.
Grzegorz Wierzowiecki
1
-dотносится к дисплею, а не к устройству. Кстати, я столкнулся с той же проблемой и хотел бы узнать решение.
Cyker
2

Я испытывал ту же проблему, что и ОП. Я сделал

git clone https://github.com/zoltanp/xrandr-invert-colors.git

Затем я установил одну зависимость, отмеченную в README, собрал и установил ее, и она прекрасно работает. Задача решена.

Я взглянул на исходный код. Большая часть работы выполняется с помощью вызова библиотеки xcb для установки гамма-шкалы. Код по существу перебирает количество подключенных экранов, создает гамма-диаграмму, инвертирует ее и устанавливает на этом экране. Очень просто, и нет другой программы X, которая делает это, насколько мне известно.

Пол Марц
источник
1

Страница man указывает, что есть -screen(короткий -s) параметр. Это должно сделать это! Просто используйте две xcalibкоманды с разными -sпараметрами.

rozcietrzewiacz
источник
2
Я знаю это. Это не работает. Хорошо, что вы упомянули об этом, я забыл. Я обновлю свою постановку проблемы.
Гжегож Вежовецкий
2
Ваш xrandrвывод говорит, что вы настроили Xorg как один экран (только Screen 0сверху). xcalibвзаимодействует напрямую с сервером Xorg, поэтому он не может видеть больше экранов. Я считаю, что вам нужно настроить несколько Screenразделов в вашем, /etc/X11/xorg.confчтобы это работало должным образом.
rozcietrzewiacz
К сожалению, когда я делаю это, pivot на обоих экранах не работает :(. Спасибо за подсказку, теперь я знаю, где искать улучшения.
Grzegorz Wierzowiecki
Вы пробовали Option "Rotate"в своем xorg.conf? Или вам нужно поворачивать экраны после запуска X?
rozcietrzewiacz
1
Я также ищу решение, -s 1 не работает при динамическом добавлении экранов с --output VGA1 --auto.
lkraav
0

Я нашел этот совет:

http://ubuntuforums.org/showthread.php?t=1482995

Использование «Эффектов рабочего стола» (у меня есть такие в KDE), есть один, который позволяет инвертировать цвета всех экранов или только выборочных окон.

Так как на моем нынешнем оборудовании Compiz или подобные вещи работают нормально, я могу воспользоваться такими «эффектами рабочего стола». Однако мне интересно, как использовать такие в других оконных менеджерах (например, fluxbox) ... но это тема для отдельного вопроса :). (PS после некоторого изучения источников этого эффекта: kwin /.../ invert.cpp похоже, что это просто добавление хуков для обработки окон, визуализируемых в отдельных буферах, когда это делается при компоновке оконных менеджеров , поэтому, возможно , требуется только KWin , со способностью бегать с другими вещами, кроме KDE - для экспериментов;))

оборота Гжегож Вежовецки
источник