특정 프로그램의 화면 해상도는 어떻게 설정합니까?


8

Ubuntu 14.04를 사용하고 있으며 특정 프로그램을 미리 지정된 화면 해상도로 실행하고 프로그램을 닫은 후 화면을 기본 해상도로 되돌리려 고합니다. 이 프로그램은 브래킷 텍스트 편집기 이며 아래 그림과 같이 1024 * 768에서 브래킷을 실행할 때 확장 관리자가 완전히 표시되지 않습니다.

화면 해상도로 인해 확장 프로그램 관리자가 잘림

1280 * 1024에서 잘 표시되지만 내 눈에는 매우 불편합니다.

xrandr명령 출력 은 다음과 같습니다 .

Screen 0: minimum 8 x 8, current 1024 x 768, maximum 32767 x 32767
VGA1 connected primary 1024x768+0+0 (normal left inverted right x axis y axis) 340mm x 255mm   
   1600x1200      74.8      
   1280x1024      85.0     75.0      
   1024x768       85.0     75.1*    70.1     60.0      
   1024x768i      87.1     
   832x624        74.6      
   800x600        85.1     72.2     75.0     60.3     56.2      
   640x480        85.0     75.0     72.8     66.7     60.0               
   720x400        87.8     70.1   
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

사례를 더 자세히 설명해주세요. 왜해야합니까?
Sh1d0w 12

1
문제의 프로그램, 출력 xrandr및 원하는 해상도 를 언급 할 수 있습니까?
Jacob Vlijm

방금 내 질문을 편집했습니다!
Misho21

대괄호는 주로 html과 css로 빌드된다는 것을 알고 있습니다. 코드를 해킹하고 편집 할 수있는 또 다른 방법이 될 수 있지만 시작 방법을 모르겠습니다.
Misho21

답변:


5

다음 파이썬 스크립트를 사용하여 지정된 해상도에서 응용 프로그램을 시작할 수 있습니다.

#!/usr/bin/env python3

import argparse
import re
import subprocess
import sys

parser = argparse.ArgumentParser()
parser.add_argument('--output', required=True)
parser.add_argument('--resolution', required=True)
parser.add_argument('APP')
args = parser.parse_args()

device_context = ''    # track what device's modes we are looking at
modes = []             # keep track of all the devices and modes discovered
current_modes = []     # remember the user's current settings

# Run xrandr and ask it what devices and modes are supported
xrandrinfo = subprocess.Popen('xrandr -q', shell=True, stdout=subprocess.PIPE)
output = xrandrinfo.communicate()[0].decode().split('\n')

for line in output:
    # luckily the various data from xrandr are separated by whitespace...
    foo = line.split()

    # Check to see if the second word in the line indicates a new context
    #  -- if so, keep track of the context of the device we're seeing
    if len(foo) >= 2:  # throw out any weirdly formatted lines
        if foo[1] == 'disconnected':
            # we have a new context, but it should be ignored
            device_context = ''
        if foo[1] == 'connected':
            # we have a new context that we want to test
            device_context = foo[0]
        elif device_context != '':  # we've previously seen a 'connected' dev
            # mode names seem to always be of the format [horiz]x[vert]
            # (there can be non-mode information inside of a device context!)
            if foo[0].find('x') != -1:
                modes.append((device_context, foo[0]))
            # we also want to remember what the current mode is, which xrandr
            # marks with a '*' character, so we can set things back the way
            # we found them at the end:
            if line.find('*') != -1:
                current_modes.append((device_context, foo[0]))

for mode in modes:
    if args.output == mode[0] and args.resolution == mode[1]:
        cmd = 'xrandr --output ' + mode[0] + ' --mode ' + mode[1]
        subprocess.call(cmd, shell=True)
        break
else:
    print('Unable to set mode ' + args.resolution + ' for output ' + args.output)
    sys.exit(1)

subprocess.call(args.APP, shell=True)

# Put things back the way we found them
for mode in current_modes:
    cmd = 'xrandr --output ' + mode[0] + ' --mode ' + mode[1]
    subprocess.call(cmd, shell=True)

위의 스크립트 (예 :)를 저장하고 my-script.py실행 가능하게 만드십시오.

chmod +x my-script.py

해상도를 설정 1280x1024하고 시작 하려면 다음을 gedit입력하십시오.

./my_script.py --output VGA1 --resolution 1280x1024 gedit

이 명령을 항상 입력하지 않으려면 스크립트를 홈 디렉토리에 저장하고 다음 행을 다음에 추가하십시오 .bashrc.

alias my_bracket='~/my_script.py --output VGA1 --resolution 1280x1024 gedit'

또는 패키지가 설치하는 데스크톱 파일을 수정하는 것이 좋습니다 /usr/local/share/applications/brackets.desktop.

sudo gedit /usr/local/share/applications/brackets.desktop

파일 내용을 아래 줄 바꿈으로 바꿉니다.

[Desktop Entry]
Name=Brackets
Type=Application
Categories=Development
Exec=/home/mushir/my_script.py --output VGA1 --resolution=1280x1024 /opt/brackets/brackets
Icon=brackets
MimeType=text/html;
Keywords=Text;Editor;Write;Web;Development;

출처 : Checkbox xrandr_cycle 스크립트


감사합니다 ..하지만,이 스크립트에 대한 두 가지 문제가있다 :이 명령을 실행하는 데 필요한 모든 시간과 나를 위해 내가 가까운 프로그램 내 화면이 기본 해상도로 자동으로 이동하지 않습니다 후이 매우 편리하지
Misho21

@ Misho21 : 설정 복구 문제를 수정했습니다
Sylvain Pineau

1
고마워 이제 작동합니다! 프로그램을 실행할 때마다이 스크립트를 자동으로 시작해야하는지 궁금해서 매번 터미널에서 실행할 필요가 없습니까?
Misho21

1
@ Misho21 : (홈) .bashrc업데이트를 잊고 터미널에서 .desktop시작하지 않는 경우를 선호하십시오 brackets
Sylvain Pineau

1
@ Misho21 : plymouth는 부팅 프로세스 초기에 작동하며 자체 구성 파일을 사용합니다.
Sylvain Pineau

0

여기서 우분투를 사용하지 않고 (gentoo person) xrandr 패키지를 찾으십시오. 일반적으로 다음과 같은 것을 사용할 수 있습니다

xrandr --output VGA-1 --mode 640x480

해상도를 변경하고

xrandr --output VGA-1 --preferred

기본 해상도로 돌아갑니다.

xrandr

옵션이 없으면 이름과 해상도가 표시됩니다.

이전 스크립트 버전에서도 xrandr :)을 사용하는 것을 보았습니다. 그러나 여전히 유용한 정보를 찾을 수 있습니다. 옵션 조정에 대해서는 매뉴얼 페이지를 읽으십시오

man xrandr
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.