TL;DR 为什么这很重要

TL;DR 为什么这很重要

我想这更像是一个问题,我该去哪里查找何时在 Ubuntu 上发布xrandr版本?它已经在 Arch Linux 中可用,并于 2019 年 8 月发布。有一个1.5.12010 年的漏洞我想已经修复。

Ubuntu 16.04.6 LTS 当前版本是:

$ xrandr --version
xrandr program version       1.5.0
Server reports RandR version 1.5

我不太熟悉这个主题,但我能直接获取1.5.1源代码并编译它吗?或者这种关键任务应用程序xrandr永远不应该从源代码编译?


TL;DR 为什么这很重要

xrandr每个人都可以尝试在他们的平台上进行这些简短的小测试来了解版本和伽马错误的重要性。

当前的 Ubuntu 版本存在一个已存在 9 年的 bug:

$ xrandr --version
xrandr program version       1.5.0
Server reports RandR version 1.5

基本问题是xrandr报告错误的伽马值:

$ xrandr --verbose | grep ^DP-1-1 -A5
DP-1-1 connected 3840x2160+1920+0 (0xa5) normal (normal left inverted right x axis y axis) 1600mm x 900mm
    Identifier: 0x43
    Timestamp:  538179391
    Subpixel:   unknown
    Gamma:      1.0:1.1:1.3
    Brightness: 0.63

我的“类似红移”应用程序已将伽马设置为红色的= 1.0绿色的=.88蓝色的=.77但 RGB 被错误地报告为1.0:1.1:1.3。现在想象一下我们想要将亮度增加到 .65。如果我们不同时更改伽马,则伽马的现有设置将重置为1:1:1。因此我们传递我们认为的当前值:

$ xrandr --output DP-1-1 --brightness .65 --gamma 1.0:1.1:1.3

突然,屏幕变成了超蓝绿色,破坏了我们的夜间设置,呈现出偏红的色调。当我们再次检查当前设置时,我们发现值再次反转:

$ xrandr --verbose | grep ^DP-1-1 -A5
DP-1-1 connected 3840x2160+1920+0 (0xa5) normal (normal left inverted right x axis y axis) 1600mm x 900mm
    Identifier: 0x43
    Timestamp:  541629314
    Subpixel:   unknown
    Gamma:      1.0:0.91:0.77
    Brightness: 0.65

因此,无论xrandr --verbose报告的值是什么,我们始终必须使用1 / gamma红、绿和蓝通道来获取真实的伽马。在更正代码后,我们必须对版本进行1.5.1测试不正确我们的代码并使用返回的伽马值。假设该错误已在1.5.1尚未编译和测试的版本中得到修复。

答案1

实际上,与 不同libXrandr.so.2,该xrandr程序远非任务关键型。它只是一个 X 客户端 — 一个非特权应用程序,您可以将其安装到主目录中,以避免破坏系统目录。以下是您可以执行的操作(以普通非 root 用户身份执行!):

cd ~/Downloads
wget https://xorg.freedesktop.org/archive/individual/app/xrandr-1.5.1.tar.xz
tar xvf xrandr-1.5.1.tar.xz
cd xrandr-1.5.1
./configure --prefix=$HOME/opt/xrandr/
make install

为了使编译工作,您必须安装构建依赖项:即以下命令应该可以完成此操作。

sudo apt build-dep x11-xserver-utils

然后您可以从安装目录启动它:

$ ~/opt/xrandr/bin/xrandr --version
xrandr program version       1.5.1
Server reports RandR version 1.5

或者,您可以将它添加$HOME/opt/xrandr/bin到您的前面PATH,然后像通常启动系统一样启动它xrandr。一旦您确定它可以按需要工作,您就可以替换系统/usr/bin/xrandr(可能已经备份),以便任何其他用户都默认运行它。

如果你确实替换了系统二进制文件,请不要忘记抓住相应的软件包(在 Ubuntu 16.04 上是x11-xserver-utils),以防止更新用(最有可能的)早期版本替换它。

答案2

让我们看一下 Debian 的上游:

相关包是x11-xserver-utils。这是它的包裹追踪系统页。

该软件包由 Debian X Strike Force 维护。以下是他们的邮件列表存档和他们的质量保证跟踪器

由于您正在跟踪错误,该软件包的 Debian Bug Tracker 页面也可能会有用。

截至撰写本文时,最新的 Debian 上传是在 2018 年 3 月,Launchpad 表明这也是当前 Ubuntu 19.10 中的版本。

所以...看起来目前在 Ubuntu 或 Debian 中根本没有打包的 xrandr 1.5.1。

答案3

如果您觉得等不及,您可以xrandr从源代码安装。

下载tar.xz文件。

cd /tmp
wget https://xorg.freedesktop.org/archive/individual/app/xrandr-1.5.1.tar.xz{,.sig}

然后提取并构建源代码

tar xvf xrandr-1.5.1.tar.xz
cd xrandr-1.5.1/
./configure --prefix=/usr
make
sudo make install

然后检查版本:

xrandr --version
xrandr program version       1.5.1
Server reports RandR version 1.5

相关内容