¿Cómo configuro la resolución de pantalla para un programa específico?

8

Estoy usando Ubuntu 14.04 y deseo forzar que un programa específico se ejecute con una resolución de pantalla predeterminada y que la pantalla vuelva a mi resolución predeterminada después de cerrar el programa. El programa es el editor de texto Brackets y el administrador de extensiones no se muestra completamente cuando ejecuto Brackets a 1024 * 768, como se ve a continuación en la imagen.

Administrador de extensiones truncado debido a la resolución de pantalla

Se muestra bien a 1280 * 1024 pero es muy incómodo para mis ojos.

Aquí está mi xrandrsalida de comando:

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)
Misho21
fuente
Explique con más detalles el caso, ¿por qué necesita hacer eso?
Sh1d0w
1
¿podría mencionar el programa en cuestión, la salida xrandry la resolución deseada?
Jacob Vlijm el
¡Acabo de editar mi pregunta!
Misho21
Sé que los corchetes se compilan principalmente con html y css ... si solo puedo hackear el código y editarlo, esa será otra forma de hacerlo, pero no sé cómo comenzar
Misho21

Respuestas:

5

Puede usar el siguiente script de Python para iniciar su aplicación en una resolución dada:

#!/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)

Guarde el script anterior (por ejemplo, como my-script.py) y hágalo ejecutable:

chmod +x my-script.py

Para establecer una resolución 1280x1024y comenzar geditsimplemente escriba:

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

Para evitar escribir este comando cada vez, guarde el script en su directorio de inicio y agregue las siguientes líneas a su .bashrc:

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

O incluso mejor, modifique el archivo de escritorio en el que se instala el paquete /usr/local/share/applications/brackets.desktop.

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

Y reemplace el contenido del archivo con las nuevas líneas a continuación:

[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;

Fuente: Script Checkbox xrandr_cycle

Sylvain Pineau
fuente
gracias ... pero hay dos problemas con este script: cada vez que necesito ejecutar este comando y esto no es muy conveniente para mí y después de cerrar el programa, mi pantalla no vuelve automáticamente a la resolución predeterminada
Misho21
@ Misho21: He solucionado el problema de recuperación de la configuración
Sylvain Pineau, el
1
gracias ahora está funcionando! Me pregunto si hay un lugar para iniciar este script automáticamente cada vez que ejecuto el programa, por lo que no será necesario ejecutarlo desde la terminal cada vez.
Misho21
1
@ Misho21: Olvídese de la .bashrcactualización (en casa) y prefiera .desktopsi no está comenzando bracketsdesde una terminal
Sylvain Pineau,
1
@ Misho21: No puede, plymouth opera antes en el proceso de arranque y usa sus propios archivos de configuración.
Sylvain Pineau
0

No estoy usando ubuntu aquí (persona Gentoo), pero busca el paquete xrandr. Usualmente puedes usar cosas como

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

para cambiar la resolución y

xrandr --output VGA-1 --preferred

lo devolverá a la resolución predeterminada.

xrandr

sin opciones le dará nombres para mostrar y resoluciones.

Acabo de ver que la versión anterior del script también usa xrandr :). Pero quizás aún pueda encontrar útil la información. Lea en las páginas del manual para ajustar las opciones

man xrandr
k9dog
fuente