mirror of
https://github.com/gryf/pyrandr.git
synced 2025-12-19 13:38:00 +01:00
Added primary cmdline switch
This commit is contained in:
31
pyrandr.py
31
pyrandr.py
@@ -38,15 +38,22 @@ class Output(object):
|
|||||||
else:
|
else:
|
||||||
return "%s %s %s" % (self.name, connected, active)
|
return "%s %s %s" % (self.name, connected, active)
|
||||||
|
|
||||||
def get_randr_options(self):
|
def get_randr_options(self, primary=False):
|
||||||
"""Return options for xrandr command as a list"""
|
"""Return options for xrandr command as a list"""
|
||||||
if self.connected:
|
if self.connected:
|
||||||
return ['--output', self.name,
|
options = ['--output', self.name,
|
||||||
'--mode', "%dx%d" % (self.x, self.y),
|
'--mode', "%dx%d" % (self.x, self.y),
|
||||||
'--pos', "%dx%d" % (self.shift_x, self.shift_y),
|
'--pos', "%dx%d" % (self.shift_x, self.shift_y),
|
||||||
'--rotate', "normal"]
|
'--rotate', "normal"]
|
||||||
|
if primary:
|
||||||
|
options.append('--primary')
|
||||||
else:
|
else:
|
||||||
return ['--output', self.name, '--off']
|
if primary:
|
||||||
|
raise ValueError('Cannot set output to be primary since it\'s'
|
||||||
|
' not connected.')
|
||||||
|
options = ['--output', self.name, '--off']
|
||||||
|
|
||||||
|
return options
|
||||||
|
|
||||||
|
|
||||||
class Organizer(object):
|
class Organizer(object):
|
||||||
@@ -101,27 +108,29 @@ class Organizer(object):
|
|||||||
else:
|
else:
|
||||||
out.active = True
|
out.active = True
|
||||||
|
|
||||||
def panic(self):
|
def panic(self, primary=None):
|
||||||
"""Just turn on all outputs at once in "mirror" mode"""
|
"""Just turn on all outputs at once in "mirror" mode"""
|
||||||
cmd = ['xrandr']
|
cmd = ['xrandr']
|
||||||
for name in self._outputs:
|
for name in self._outputs:
|
||||||
out = self._outputs[name]
|
out = self._outputs[name]
|
||||||
cmd.extend(out.get_randr_options())
|
cmd.extend(out.get_randr_options((primary == out.name)))
|
||||||
|
|
||||||
subprocess.call(cmd)
|
subprocess.call(cmd)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument('output', nargs='*', help='name of the output')
|
parser.add_argument('outputs', nargs='*', help='name of the output')
|
||||||
parser.add_argument('-p', '--panic', action='store_true', help='Turn on '
|
parser.add_argument('-a', '--panic', action='store_true', help='Turn on '
|
||||||
'all connected outputs')
|
'all connected outputs')
|
||||||
|
parser.add_argument('-p', '--primary', help='Set specified output as '
|
||||||
|
'primary')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
org = Organizer()
|
org = Organizer()
|
||||||
|
|
||||||
if args.panic:
|
if args.panic:
|
||||||
org.panic()
|
org.panic(args.primary)
|
||||||
return
|
return
|
||||||
|
|
||||||
if not args.output:
|
if not args.output:
|
||||||
|
|||||||
Reference in New Issue
Block a user