たとえば、解像度が640x480しかないアプリケーション(ゲーム)を使用しています。今、私には2つのオプションがあります。ウィンドウモードで起動し、640x480のサイズにするか、フルスクリーンを有効にして、すべての画面を埋めます。
私が欲しいのは、フルスクリーンにしないでアプリケーションのサイズを変更することです(例:1024x768)。
今のところ、私は2つの解決策を試しました:
winecfg
で「仮想デスクトップのエミュレート」を有効にします。最初はその解像度でデスクトップを起動しますが、アプリケーションでフルスクリーンを有効にすると、そのデスクトップが640x480に縮小されます。
内部のXサーバーでWineを起動します。
Xephyr -ac -br -noreset -screen 1024x768 :1.0 &
ZEPHYR_PID=$!
sleep 1
DISPLAY=:1.0 wine game.exe
kill $ZEPHYR_PID
ここでも同じ問題があり、フルスクリーンを有効にするとウィンドウのサイズが変更されます。
フルスクリーンで再生したり、モニターの解像度とリフレッシュレートを変更したりするスクリプトを作成しました。間違ったレートを使用しているため、モニターに「エントレースではありません」というメッセージが表示されたフローティングボックスが表示されます。修正のために私は次のようなものを使用します
これは「スペードのエース」
#!/bin/bash
# Resolution Fix
echo `xrandr --current | grep current | awk '{print $8}'` >> /tmp/width
echo `xrandr --current | grep current | awk '{print $10}'` >> /tmp/height
cat /tmp/height | sed -i 's/,//g' /tmp/height
WIDTH=$(cat /tmp/width)
HEIGHT=$(cat /tmp/height)
rm /tmp/height /tmp/height
echo "$WIDTH"x"$HEIGHT" >> /tmp/Resolution
Resolution=$(cat /tmp/Resolution)
rm /tmp/Resolution
# Resolution Fix
BINARY="$HOME/.wine/drive_c/Ace of Spades/client.exe"
$(wine "$BINARY" -"$@" "%u") &
xrandr -s 800x600 -r 77
sleep 2
BINARYPID=$(pidof $BINARY)
taskset -p 0xFFFFFFFF $BINARYPID &
while Launchers=$(pidof "client.exe")
do
sleep 1
done
xrandr -s $Resolution -r 63
exit 0
このスクリプトの再開では、「mimetype」からのAce Of Spadeの起動と、別のタイプの構成であるプロトコル「aos://」のWebブラウザーからのサーバーについて、ここでは説明しません。
これによりゲームが起動し、ゲームが起動した後、ゲームを閉じるまでモニターの解像度が800x600に変更され、ゲームを閉じると解像度が復元されます。