web-dev-qa-db-ja.com

Wineのアプリケーションの固定画面解像度を設定します

たとえば、解像度が640x480しかないアプリケーション(ゲーム)を使用しています。今、私には2つのオプションがあります。ウィンドウモードで起動し、640x480のサイズにするか、フルスクリーンを有効にして、すべての画面を埋めます。

私が欲しいのは、フルスクリーンにしないでアプリケーションのサイズを変更することです(例:1024x768)。

今のところ、私は2つの解決策を試しました:

  1. winecfgで「仮想デスクトップのエミュレート」を有効にします。最初はその解像度でデスクトップを起動しますが、アプリケーションでフルスクリーンを有効にすると、そのデスクトップが640x480に縮小されます。

  2. 内部のXサーバーでWineを起動します。

    Xephyr -ac -br -noreset -screen 1024x768 :1.0 &
    ZEPHYR_PID=$!
    sleep 1
    DISPLAY=:1.0 wine game.exe
    kill $ZEPHYR_PID
    

    ここでも同じ問題があり、フルスクリーンを有効にするとウィンドウのサイズが変更されます。

5
diffycat

フルスクリーンで再生したり、モニターの解像度とリフレッシュレートを変更したりするスクリプトを作成しました。間違ったレートを使用しているため、モニターに「エントレースではありません」というメッセージが表示されたフローティングボックスが表示されます。修正のために私は次のようなものを使用します

これは「スペードのエース」

#!/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に変更され、ゲームを閉じると解像度が復元されます。

1
inukaze