首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux中以编程方式确定单独的屏幕宽度/高度(使用Xinerama、TwinView和/或BigDesktop)

在Linux中以编程方式确定单独的屏幕宽度/高度(使用Xinerama、TwinView和/或BigDesktop)
EN

Stack Overflow用户
提问于 2009-05-07 17:48:10
回答 3查看 3.2K关注 0票数 4

我正在开发一个小的附带项目,在GNOME下的多个屏幕上显示多个壁纸(这显然不是GNOME本身或其他任何东西所能完成的)。我已经弄清楚了如何完成它的主要部分(对于好奇的人来说,是使用ImageMagick组件);我正在尝试自动化配置系统。

为此,我需要一种方法来确定各个屏幕的尺寸。有谁能给我一个提示,在哪里可以找到它?我假设X服务器本身就有这些信息,但是我不确定我的程序如何请求它。

EN

回答 3

Stack Overflow用户

发布于 2009-07-16 16:16:17

试试像这样的东西

代码语言:javascript
复制
GdkScreen *screen;
int num_monitors;
int i;

screen = gdk_screen_get_default ();
num_monitors = gdk_screen_get_n_monitors ();

for (i = 0; i < num_monitors; i++) {
    GdkRectangle rect;

    gdk_screen_get_monitor_geometry (screen, i, &rect);
    printf ("monitor %d: offsets (%d, %d), size (%d, %d)\n",
        i,
        rect.x, rect.y,
        rect.width, rect.height);
}

在内部,这使用libXrandr应用编程接口。Xinerama或多或少被弃用了,但仍然有效;RANDR是在X中处理多个监视器的新方法。

票数 5
EN

Stack Overflow用户

发布于 2010-07-07 06:04:48

这对TwinView有效,我还没有测试其他的:

代码语言:javascript
复制
#!/usr/bin/python
# Print some information about the X environment, the monitor setup, currently active window and cursor position
import gtk.gdk

screen = gtk.gdk.screen_get_default()
print "X default screen size: %d x %d" % (screen.get_width(), screen.get_height())
print "xid of root window: %d" % screen.get_root_window().xid

monitors = int(screen.get_n_monitors())
print "== %d monitors ==" % monitors
for m in range(0, monitors):
    print " - geometry of monitor %d: %s" % (m, screen.get_monitor_geometry(m))

window = screen.get_active_window()
win_x, win_y, win_w, win_h, win_bit_depth = window.get_geometry()
print "active window on monitor: %d" % screen.get_monitor_at_point((win_x+(win_w/2)),(win_y+(win_h/2)))
print "window geometry (x,y,w,h): %d, %d, %d, %d" % (win_x,win_y,win_w,win_h)

display = gtk.gdk.display_get_default()
pointer = display.get_pointer()
print "cursor position (x, y): %d, %d" % (pointer[1], pointer[2])
print "cursor on monitor: %d" % screen.get_monitor_at_point(pointer[1],pointer[2])
票数 2
EN

Stack Overflow用户

发布于 2009-05-08 01:56:04

我总是使用"xdpyinfo“命令来确定屏幕大小;运行该命令,然后查看输出的第二页或第三页,其中显示的内容如下:

代码语言:javascript
复制
screen #0:
  dimensions:    1280x800 pixels (339x212 millimeters)
  resolution:    96x96 dots per inch
  depths (7):    24, 1, 4, 8, 15, 16, 32
  root window id:    0xac
  depth of root window:    24 planes
  ...

您可以在外部运行此命令并通过文本处理获取尺寸,也可以快速下载xdpyinfo的代码并复制它进行的C调用以生成该行输出。祝好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/836086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档