- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图找到所有显示器及其坐标(宽度 w
,高度 h
,x 原点/top-left-most x
和 y 原点/top-left-most y
)并且正在使用它代码,它在某些系统上运行良好。但在其他系统上,我得到错误和重复的条目。如果我测试监视器是否为镜像,我能否避免这些重复/错误的监视器条目?如何测试它的镜像?
所以这是我的代码:
// start - get all monitor resolutions
var screen = XRRGetScreenResources(getXOpenDisplay(), getDefaultRootWindow(getXOpenDisplay()));
var noutputs = screen.noutput;
for (var i=noutputs-1; i>=0; i--) {
var info = XRRGetOutputInfo(getXOpenDisplay(), screen, screen.outputs[i]);
if (info.connection == RR_Connected) {
var ncrtcs = info.ncrtc;
for (var j=ncrtcs-1; j>=0; j--) {
var crtc_info = XRRGetCrtcInfo(getXOpenDisplay(), screen, infoCrtcs[j]);
console.info('screen #' + i + ' mon#' + j + ' details:', crtc_info.x, crtc_info.y, crtc_info.width, crtc_info.height);
collMonInfos.push({
x: crtc_info.x,
y: crtc_info.y,
w: crtc_info.width,
h: crtc_info.height
});
XRRFreeCrtcInfo(crtc_info);
}
}
XRRFreeOutputInfo(info);
}
XRRFreeScreenResources(screen);
console.info('JSON:', JSON.stringify(collMonInfos));
// end - get all monitor resolutions
"screen #4 mon#0 details:" 0 0 0 0
"screen #3 mon#1 details:" 0 0 1920 1200
"screen #3 mon#0 details:" 1920 469 1366 768
"screen #2 mon#1 details:" 0 0 1920 1200
"screen #2 mon#0 details:" 1920 469 1366 768
"screen #1 mon#1 details:" 0 0 1920 1200
"screen #1 mon#0 details:" 1920 469 1366 768
"screen #0 mon#1 details:" 0 0 1920 1200
"screen #0 mon#0 details:" 1920 469 1366 768
[{
"x": 0,
"y": 0,
"w": 0,
"h": 0
}, {
"x": 0,
"y": 0,
"w": 1920,
"h": 1200
}, {
"x": 1920,
"y": 469,
"w": 1366,
"h": 768
}, {
"x": 0,
"y": 0,
"w": 1920,
"h": 1200
}, {
"x": 1920,
"y": 469,
"w": 1366,
"h": 768
}, {
"x": 0,
"y": 0,
"w": 1920,
"h": 1200
}, {
"x": 1920,
"y": 469,
"w": 1366,
"h": 768
}, {
"x": 0,
"y": 0,
"w": 1920,
"h": 1200
}, {
"x": 1920,
"y": 469,
"w": 1366,
"h": 768
}]
最佳答案
您不必要地遍历每个 输出 然后在每个 监控 .因此,您会收到重复的条目。您不必调用 XRRGetOutputInfo
对于每个输出,因为您需要的所有数据(监视器数量)都可以在 XRRGetScreenResources
返回的结构中找到.
这是有效的C代码(至少对我来说):
#include <stdio.h>
#include <stdlib.h>
#include <X11/Xlib.h>
#include <X11/extensions/Xrandr.h>
int main(void) {
Display *d = XOpenDisplay(getenv("DISPLAY"));
Window w = DefaultRootWindow(d);
XRRScreenResources *xrrr = XRRGetScreenResources(d, w);
XRRCrtcInfo *xrrci;
int i;
int ncrtc = xrrr->ncrtc;
for (i = 0; i < ncrtc; ++i) {
xrrci = XRRGetCrtcInfo(d, xrrr, xrrr->crtcs[i]);
printf("%dx%d+%d+%d\n", xrrci->width, xrrci->height, xrrci->x, xrrci->y);
XRRFreeCrtcInfo(xrrci);
}
XRRFreeScreenResources(xrrr);
return 0;
}
关于c - X11 - Xrandr 给了我假监视器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31523446/
我正在编写一个跨平台库,它提供对窗口系统 (Win32/Cocoa/X11/Wayland) 的低级别访问。现在我正在努力获取有关已连接显示器的信息。我的“屏幕信息”实用程序使用我当前的双显示器设置写
所以,我正在尝试通过 HDMI 端口将 NES mini 连接到我在 linux mint 20 上运行的笔记本电脑。我正在使用 $ xrandr --output HDMI-1但它似乎没有任何效果。
我试图找到所有显示器及其坐标(宽度 w ,高度 h ,x 原点/top-left-most x 和 y 原点/top-left-most y )并且正在使用它代码,它在某些系统上运行良好。但在其他系统
我有一台装有 NVIDIA GT555M GPU 的笔记本电脑(华硕 N55SF),安装了 Elementary OS(基于 Ubuntu)。 我安装了带有 NVIDIA 驱动程序的 Bumblebe
我需要在 Ubuntu 上的 Qt 应用程序中获得显示支持的分辨率。我通过 QProcess 运行 xrandr 命令并在以下 View 中接收显示分辨率: Screen 0: minimum 320
我经常使用我的笔记本进行教学,投影仪上全屏显示。随着投影仪越来越好,我经常发现投影仪分辨率比我的 LCD 屏幕提供的分辨率更高或不同(过去我只使用 1024x768)。 我现在想做的是使用外部显示器的
我有一个小脚本,我需要每天手动执行它以将刷新率设置为 120Hz。这是脚本的内容: #!/bin/bash xrandr --output HDMI-1 --mode 1920x1080 --rat
我需要以编程方式获取显示器的刷新率。 当我在命令行输入xrandr(1.4.1,opensuse 13)时,我得到: Screen 0: minimum 8 x 8, current 1920 x 1
我需要从 xrandr 获取信息到我的软件中。假设这就是我从 xrandr -q 输出的内容: Screen 0: minimum 8 x 8, current 1920 x 1968, maximu
我正在使用 Python 3.8 linux 安装在远程桌面 (VNC) 上运行基于 PySide2 的 Python GUI,但遇到了一些问题。 GUI 确实确实弹出并且看起来可操作,但是,命令提示
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
我正在运行 Ubuntu,我想获得连接显示器的数量、它们的当前分辨率,如果可能的话,它们之间的相对位置。因为我不喜欢解析 xrandr 的控制台输出——至少在我不需要的时候不喜欢——我想用 Pytho
我使用带有笔记本电脑和分辨率为 1600x900 的外部屏幕的 Ubuntu 14.04。在原始安装中,分辨率限制为 1024x768。所以我配置了一个在使用 xrandr 启动时自动运行的脚本: #
我使用配备 4k 显示屏的 Dell XPS 15 9550 和 ubuntu 作为操作系统。我需要使用 Matlab,但我(一如既往)遇到了 HighDPI 问题。目前我使用的是r2017a版本的M
我正在尝试使用键绑定(bind)在 Ubuntu14.04 中打开和关闭屏幕监视器。 我尝试了以下 shell 脚本: #!/bin/sh output=$(xrandr | grep ' conne
在我的设备上使用 xrandr 选择分辨率时,我不断收到一条错误消息,指出“配置 crtc 0 失败:” (缩短)选择显示并运行后的 xrandr 输出 $ xrandr Screen 0: mini
我有以下脚本(/home/vitidn/Downloads/adjust_contrast.sh)来调整显示对比度: #!/bin/sh export DISPLAY=":0" echo "adjus
我的系统规范: **Intel i7-8700k (Coffe-lake),Mother board : ROG(Maximus X Hero) OS :Ubuntu-Gnome 16.04** 我用
我有一台 ThinkPad X1 Yoga(第 2 代),在运行 Ubuntu 17.04 时,我可以像这样更改亮度: $ xrandr --output eDP-1 --brightness .7
我是一名优秀的程序员,十分优秀!