我在 Xubuntu 14.10 中平铺终端时遇到问题。这些终端仿真器(我已经用xfce4-terminal
、xterm
和测试过gnome-terminal
)只能根据它们使用的字体的宽度/高度调整大小,因此不能调整大小1px,见图1。
图。1:当我将鼠标光标放在终端窗口的右下角时(图中未包含光标),它们会显示窗口的当前大小。如果我将光标向右移动,终端窗口的宽度将每次扩大 1 个字符。
现在,当我进行全屏平铺(最大化窗口)时,终端窗口将拉伸其主体以覆盖整个屏幕,见图 2。
图2:最大化终端窗口,您可以看到一行[ NORMAL > ... < 100% < 1:1 ]
以空白结束,其宽度短于字体的宽度。
但是当我进行部分平铺时(例如,通过将窗口移动到左边缘进行左平铺,以便它扩展以占据整个屏幕的左半部分),终端窗口将不会像我最大化时那样尝试拉伸,见图 3。
图3:左侧平铺的终端窗口与右侧平铺的网络浏览器和底部边缘留有空间。
问题是,如果我进行部分平铺,然后打开一个新的终端选项卡(ctrl+shift+t
),终端窗口将垂直扩展其大小,这会使一些行超出屏幕(图 4)。这非常烦人。
图4:打开新选项卡后,左侧平铺终端的最后一行(:q!
)将被踢出屏幕。
最大化窗口时不会发生此问题(如图 2 所示)。
该问题在 Unity/Ubuntu 14.10 中也不会发生。
所以我想知道窗口(不仅仅是终端)是否可以部分最大化?或者还有其他解决方法?(或者这只是一个错误,应该报告给问题跟踪器?)
答案1
我在使用 Xubuntu 的默认终端仿真器和窗口管理器时遇到了同样的问题,我几乎要疯了才能修复它。我有一个部分答案,但不幸的是,没有真正的解决方案。
正如您所提到的,终端仿真器中的窗口大小(至少在xterm
和xfce4-terminal
中,我测试过的)是根据字体大小而不是像素来处理的,这可能是意料之中的。根据X 窗口系统手册页:“几何规范的宽度和高度部分通常以像素或字符为单位来衡量,具体取决于应用程序。”
这就是在进行部分平铺时终端窗口周围有间隙的原因:窗口管理器会最大化一半显示屏内的窗口,同时使用字体大小的整数倍作为尺寸。可能有办法添加偏移量或通过深入xfwm
或 X 配置调整来修复此问题,但超出了我的能力(我对 Linux 还很陌生)。
窗口在最大化时占据整个屏幕区域的原因似乎与新安装的 Xubuntu 中默认启用的设置有关(我认为)。如果您打开 Xfce4 设置管理器,转到“窗口管理器调整”,然后单击“辅助功能”选项卡,则有一个选项“最大化时隐藏窗口框架”。选中此选项后,最大化的终端窗口周围没有间隙;未选中此选项时,则有间隙。
不幸的是,此选项仅适用于最大化的窗口,而不适用于通过部分平铺“最大化”到屏幕一半的窗口。禁用它至少会使两种情况下窗口周围的间隙保持一致。
至于标签栏将线条推离屏幕的问题,打开新标签后再次平铺窗口将使窗口底部重新可见。您还可以将终端设置为始终显示标签栏。此选项无法通过图形首选项菜单使用;您必须编辑并将选项~/.config/xfce4/terminal/terminalrc
更改MiscAlwaysShowTabs
为TRUE
。这样,打开新标签时窗口的大小就不会改变。
很抱歉我无法提供更多帮助。
答案2
您可以使用 xprop 从任何终端窗口删除 WM_NORMAL_HINTS。
将这些行放入 ~/.bashrc 文件中:
if [ "$DISPLAY" ]; then
activ_win_id=`xprop -root _NET_ACTIVE_WINDOW`
activ_win_id=$(echo $activ_win_id | awk '{ activ_win_id=substr($0,41,9); print activ_win_id; }' )
xprop -id $activ_win_id -remove WM_NORMAL_HINTS
fi
提示将自动从当前终端窗口中删除。