我已经使用了disper -l
很多代 ubuntu 来确定我连接到哪个显示器,以及是否连接了带有 vga 或 hdmi 的外接显示器。现在升级到 18.04 后,我发现此命令正在生成分段错误。该问题似乎存在了一段时间,如报告的此错误报告但似乎没人对此采取任何措施。是否有其他具有相同功能的程序?我查看了xdpyinfo
包含大量信息(但不是我需要的)的程序,这些信息足以区分显示器的分辨率信息,以及有关是否连接了多个显示器以及通过何种连接方式连接的信息。
谢谢!
答案1
我可以证实这一点错误 1655275,它似乎是由一些反 Meltdown 或反 Spectre 修复程序(或类似的东西)引起的Scilab 的 CVE-2017-1000364)因为我的apport崩溃日志在评论#9包含奇怪的行:
SegvAnalysis:
Segfault happened at: 0x7f1233f14add <XQueryExtension+45>: mov 0x968(%rdi),%rax
PC (0x7f1233f14add) ok
source "0x968(%rdi)" (0xffffffffd63a1188) not located in a known VMA region (needed readable region)!
destination "%rax" ok
SegvReason: reading unknown VMA
我从未使用过disper
,但我可以推荐xrandr
作为替代品。
答案2
我也能确认这个错误。
但好消息!这似乎非常容易修复。
我生成了一个修补版本(如果感兴趣的话可以在 Github 上找到),
git clone <URL>
cd disper
make all
sudo make install
但请不要无条件地相信随机源(例如我)。
请阅读下面的完整指南,了解如何自己完成此操作!
挑选 AUR 到 Debian 上游
克隆并添加远程
克隆 Debian 源代码(源这里),
git clone https://salsa.debian.org/python-team/applications/disper.git
cd disper
git remote add AUR https://github.com/apeyser/disper
git fetch --all
git remote -v
[输出]
AUR https://github.com/apeyser/disper (fetch)
AUR https://github.com/apeyser/disper (push)
origin https://salsa.debian.org/python-team/applications/disper.git (fetch)
origin https://salsa.debian.org/python-team/applications/disper.git (push)
是的不同的存储库—— 不仅仅是不同的分支 —— 但对于这个 cherry-picking 补丁来说,令人惊讶的是方便的只是假装一会儿。
只是不要合并除非你有充分的理由,否则不要删除这些“分支”,以免造成不必要的混乱。
检查master
一下
“重命名”(创建新的分支)各自的master
(为您自己的记录),
git checkout -b AUR-master AUR/master
git checkout -b debian-master debian/master
[输出]
Branch 'AUR-master' set up to track remote branch 'master' from 'AUR'.
Switched to a new branch 'AUR-master'
Switched to a new branch 'debian-master'
对此进行理智检查,
git branch -vv
[输出]
AUR-master 4c36710 [AUR/master] Update README
* debian-master e3ca840 d/control: Remove ancient X-Python-Version field
debian/master e3ca840 [origin/debian/master] d/control: Remove ancient X-Python-Version field
看起来不错!
你可以像这样探索和查看差异,
git log --graph --decorate --oneline debian-master
git log --graph --decorate --oneline AUR-master
git diff debian-master AUR-master
识别新的提交
我们感兴趣的是,
git log debian-master -1
[输出]
commit e3ca840a48208a79a5c96da1bd9f6f1b845f5773 (HEAD -> debian-master, origin/debian/master, origin/HEAD, debian/master)
Author: Ondřej Nový <[email protected]>
Date: Mon May 14 08:10:02 2018 +0200
d/control: Remove ancient X-Python-Version field
做不包括最近的补丁在这里,
git log AUR-master -4
[输出]
commit 4c367108b370d57ce178863fed7640bb846d3186 (AUR/master, AUR-master)
Author: Alexander Peyser <[email protected]>
Date: Thu Aug 23 17:16:42 2018 +0200
Update README
commit 4c635d65244bcb2a86a9da86d00007de96a23626 (tag: disper-0.3.1.1)
Author: Alexander Peyser <[email protected]>
Date: Thu Aug 23 16:02:23 2018 +0200
apply XOpenDisplay return type patch
commit 01132563030b9230e8f007794c3269dd913c3052
Author: Alexander Peyser <[email protected]>
Date: Thu Aug 23 16:17:07 2018 +0200
Update INSTALL and README
commit d0498b7892b36d183d09b3d905296ee7456ff24d (tag: disper-0.3.1)
Author: [email protected] <>
Date: Tue Apr 23 12:01:43 2013 +0200
also update Debian version number
三 (3) 个新提交!第二个是修复补丁。
挑选(我们想要的)
切换到debian-master
本地版本并进行分支(不要将合并与上游混淆),
git checkout debian-master
git checkout -b local
git cherry-pick 0113256..4c36710
[输出]
[local d05e2bd] apply XOpenDisplay return type patch
Author: Alexander Peyser <[email protected]>
Date: Thu Aug 23 16:02:23 2018 +0200
1 file changed, 12 insertions(+), 2 deletions(-)
error: could not apply 4c36710... Update README
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
当然,我们预计会发生合并冲突......
但你真的期望它仅有的 README
?让我们修复它!
git mergetool # or, vimdiff README (or whatever)
diff -NaurbB README* --color
git cherry-pick --continue
rm README.orig
我合并了新的部分README
并进行了健全性检查,然后继续使用不变的提交消息。
升级版本
确定版本的保存位置,
rg 0.3.1 # or, grep -rn 0.3.1 (or whatever)
git blame debian/changelog
因此,您可以添加虚拟发布部分debian/changelog
(供您自己的记录),也可以不添加。
vim debian/changelog
git add debian/changelog
我复制0.3.1-3
到了新的0.3.1-4
部分并写了一些字。
测试一下!
它有用吗?
make <Tab>
make all -n
make install -n
我觉得不错。让我们安装,
make all
sudo make install
~~
Confirm that it works,
~~~bash
disper -l
让我们提交并标记它(以供将来参考),
git commit -v
git tag local/0.3.1-4 -a
我真的建议使用标签或其他东西以及版本升级。这对未来的你来说很好。
祝您黑客愉快。
答案3
Disper 不再存在于 Debian 中,并且可能很快就会从 Ubuntu 中消失。
我写了一个非常非常简单的替代品并将其发布在这里:https://github.com/fidergo-stephane-gourichon/simplest_external_screen_config
这是它的自述文件:
对于称为“X”或“X11”的窗口系统来说,非常简单的外部显示管理。
确实如此不是处理一般情况。
预期用例:将屏幕插入到机器的输出中。调用此脚本,可选地使用一个词来说明预期用途:
- 镜像使两个显示器覆盖(大致)相同的可可视化视频内存区域
- 左、右、上、下,覆盖主显示屏外相对定位的区域
例如:
simplest_external_screen_config simplest_external_screen_config mirror simplest_external_screen_config left simplest_external_screen_config right simplest_external_screen_config above simplest_external_screen_config below
我已将非开发人员的安装说明放到了 README.me 中。