How to get terminal size or font size in pixels?

后端 未结 4 1869
执念已碎
执念已碎 2021-01-13 03:58

I\'ve seen some posts and answers about how to get the terminal size in numbers of columns and rows. Can I get the terminal size, or equivalently, the size of the font used

相关标签:
4条回答
  • 2021-01-13 04:16

    Another possible approach, with limited support, is checking the ws_xpixel and ws_ypixel values of struct terminfo.

    A python snippet to query these values:

    import array, fcntl, termios
    buf = array.array('H', [0, 0, 0, 0])
    fcntl.ioctl(1, termios.TIOCGWINSZ, buf)
    print(buf[2], buf[3])
    

    This only works in certain terminal emulators, others always report 0 0. See e.g. the VTE feature request to set these fields for a support matrix.

    0 讨论(0)
  • 2021-01-13 04:27

    Maybe. If your terminal software supports XTerm Control Sequences, then the sequence \e[14t will give you the size width*height in pixels.

    Related:

    • xtermctl - Put standard xterm/dtterm window control codes in shell parameters for easy use. Note that some terminals do not support all combinations.
    0 讨论(0)
  • 2021-01-13 04:33

    So, you already know how to get terminal size (here) in characters.

    I'm afraid it is not possible. TTY is a text terminal and doesn't have control of where it is running. So if your console program is executed in the terminal, you can't know where is it displaying.

    However, you can use graphical mode to take control of fonts, display, etc. But why terminal? You can use GUI for that.

    0 讨论(0)
  • 2021-01-13 04:37

    The data structure that stores terminal info in linux is terminfo. This is the structure that any general terminal query would be reading from. It does not contain pixel information, since that is not relevant for the text-only terminals it was designed to specify.

    If you're running the code in an X compatible terminal, it is probably possible with control codes, but that would very likely not be portable.

    0 讨论(0)
提交回复
热议问题