私はすべての面で「最もカットされた」(つまり、すべてのピクセルが表示されない)新しい安価な8インチTFT LCDモニターを持っています。これは、HDMI入力を使用するテレビに主に影響を与えるように見える「オーバースキャン」によるものであることがわかります。
私のカーネルはまずefifbで起動し、次にinteldrmfbに切り替えます。問題は、両方のフレームバッファドライバで発生します。私はXウィンドウを使用せず、この小さなモニターでXを使用したくありません。 Linuxテキストコンソールを使いたいです。したがって、「xrandr」を使用するソリューションは廃止されました。
頑張りましたすべて「ビデオ」カーネルブートパラメータを使用して解像度設定を調整し、fbsetを使用してブート後のタイミング設定を調整するなど、この問題を解決するためのドライバレベル(カーネルレベル)フレームバッファの設定に関する情報を見つけることができます。しかし、fbsetで何をしても構いません。 、無視されたようです。
だから私の質問は:フレームバッファドライバよりも高いレベルでフレームバッファコンソールの周りに余白を追加する方法はありますか?
私は "stty"を使用してLinuxがコンソールで使用する列と行の数を減らすことができることを知っていますが、これは右側と下側の問題のみを解決し、まだ左側の文字が切り捨てられたままになります。トップ。 「stty」を使用してコンソールに「最初の列」や「最初の行」オフセット(たとえば、いくつかの空白パディング)を追加する方法はありますか? sttyを使用していない場合は、他の軽量ツール(X windowsではない)を使用しますか?
答え1
このコマンドを試してみてくださいfbset
。
実行するとfbset -i
、「タイミング」行を含む現在のフレームバッファ設定に関するいくつかの情報が表示されます。私にとっては、すべての値がゼロなので使用されていないという意味かもしれませんが、そこに実際の値が表示されたら調整してみることができます。
抜粋man fbset
:
Display timings:
-pixclock <value>
set the length of one pixel (in picosec‐
onds). Note that the frame buffer device
may only support some pixel lengths
-left <value>
set left margin (in pixels)
-right <value>
set right margin (in pixels)
-upper <value>
set upper margin (in pixel lines)
-lower <value>
set lower margin (in pixel lines)
-hslen <value>
set horizontal sync length (in pixels)
-vslen <value>
set vertical sync length (in pixel lines)
--timings, -t ...
set all timing parameters at once in the
order <pixclock> <left> <right> <upper>
<lower> <hslen> <vslen>, e.g. -t 35242 64
96 35 12 112 2
-left
、、、、パラメータを参照して-right
ください。これらの値の1つを増やし、同時にその逆の値を減らすコマンドもあります。-upper
-lower
fbset
-move
Display positioning:
-move {left|right|up|down}
move the visible part of the display in the
specified direction
-step <value>
set step size for display positioning (in
pixels or pixel lines), if -step is not
given display will be moved 8 pixels hori‐
zontally or 2 pixel lines vertically
答え2
DP-1の左側にHDMI画面があり、左側に間隔を置く場合は、次のスクリプトを実行できます。
#!/bin/bash
# Usage: .script pixel_height pixel_width
new_mode_spec=$(cvt "$1" "$2" 60 | sed -n 's/Modeline *//p')
new_mode_name=$(echo "$new_mode_spec" | grep -o '"[^"]*"')
new_mode_res=$(echo "$new_mode_name" | sed 's/"//g' | sed 's/_.*$//')
xrandr --newmode "${new_mode_spec}"
xrandr --addmode HDMI-1 "${new_mode_name}"
xrandr --output HDMI-1 --left-of DP-1 \
--mode "${new_mode_name}" \
--panning "${new_mode_res}" \
--scale-from 1920x1080 \
--output DP-1 --mode 1920x1080
echo "Changed to ${new_mode_res}, remember that it must be a multiple of 8!"
デフォルトの解像度は1920 x 1080と仮定し、ターゲットピクセルの高さと幅をパラメータとして使用します。
副作用は、塗りつぶしが黒ではなく右側(DP-1)で画面の左側の部分を繰り返すことです。
ノート
- 関連答え:Xrandrはディスプレイの破損の問題を回避しようとします。
- 他の設定を試すのに便利です。アランデル、xrandr用のGUI(x11-xserver-utils)。
- Waylandでこれを行う方法がわかりません。