Sunday, April 28, 2024
 Popular · Latest · Hot · Upcoming
6
rated 0 times [  6] [ 0]  / answers: 1 / hits: 9709  / 2 Years ago, fri, october 7, 2022, 2:02:29

I'm using Ubuntu 14.04 and I wish to force a specific program to run at a predetermined screen resolution and have the screen return to my default resolution after closing the program. The program is the Brackets text editor and the extensions manager is not shown completely when I run Brackets at 1024*768, as seen below in the picture.



Extensions manager truncated due to screen resolution



It displays well at 1280*1024 but it is very uncomfortable to my eyes.



Here is my xrandr command output:



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)

More From » 14.04

 Answers
2

You can use the following python script to start your application at a given resolution:



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

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)


Save the above script (e.g as my-script.py) and make it executable:



chmod +x my-script.py


To set a resolution of 1280x1024 and start gedit just type:



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


To avoid typing this command everytime, save the script in your home directory and add the following lines to your .bashrc:



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


Or even better, modify the desktop file that the package installs in /usr/local/share/applications/brackets.desktop.



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


And replace the file content with the new lines below:



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


Source: Checkbox xrandr_cycle script


[#20640] Saturday, October 8, 2022, 2 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
icielight

Total Points: 158
Total Questions: 92
Total Answers: 93

Location: San Marino
Member since Thu, Jun 30, 2022
2 Years ago
icielight questions
;