查找屏幕的字符大小(列和行)

查找屏幕的字符大小(列和行)

关于几何,X手册页说:

“几何规范:...大多数 X 程序接受 -geometry WIDTHxHEIGHT+XOFF+YOFF 形式的命令行参数(其中 WIDTH、HEIGHT、XOFF 和 YOFF 是数字),用于指定此应用程序主窗口的首选大小和位置几何规范的宽度和高度部分通常以像素或字符来测量,具体取决于应用程序......”

似乎两者的宽度和高度xterm选项都以字符为单位。为了启动具有相对于屏幕的特定几何形状的终端xfce4-terminal-geometry以编程方式(例如,平铺:用终端窗口覆盖每个象限)我需要知道屏幕的大小(以字符为单位)。我可以以像素为单位查找,xwininfo -root但不知道如何以字符单位查找。如何做到这一点?特定于 XFCE4 的答案就可以了。

答案1

回答自己的问题:wmctrl按照@NickD的建议使用提出了一个hacky解决方案:

#!/bin/bash

get_window_id() { # Convert window title into wmctrl window id
  wmctrl -l | grep "$1" | cut -f1 -d" " | tail -n1
}

screen_dim=( $(xwininfo -root | grep "\-geometry" | sed -r 's/.* ([0-9]+)x([0-9]+)\+0\+0/\1 \2/gp' -n) )

w=$((screen_dim[0] / 2))
h=$((screen_dim[1] / 2))
k=40

xfce4-terminal --title="My Window 1"
xfce4-terminal --title="My Window 2"
xfce4-terminal --title="My Window 3"
xfce4-terminal --title="My Window 4"

wmctrl -i -r $(get_window_id "My Window 1") -e 0,0,0,$w,$((h - k))
wmctrl -i -r $(get_window_id "My Window 2") -e 0,$w,0,$w,$((h - k))
wmctrl -i -r $(get_window_id "My Window 3") -e 0,0,$h,$w,$((h - k))
wmctrl -i -r $(get_window_id "My Window 4") -e 0,$w,$h,$w,$((h - k))

k参数是为了解决任务栏问题而进行的粗略调整,@NickD 也提到过。

如果我能以某种方式找到字符的像素尺寸,就可以将几何形状直接传递到 xfce4-terminal,这会更干净一些:

screen_dim=( $(xwininfo -root | grep "\-geometry" | sed -r 's/.* ([0-9]+)x([0-9]+)\+0\+0/\1 \2/gp' -n) )
w=$((screen_dim[0] / 2))
h=$((screen_dim[1] / 2))
cw=$((c/character_width))
ch=$((h/character_height))
k=1
xfce4-terminal --title="My Window 1" --geometry=${cw}x${ch}+0+0
...

但不知道如何获得character_width, character_height

相关内容