1
0
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:
2017-10-15 11:19:56 +02:00
parent 6e3adec4d5
commit 118af09789

View File

@@ -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: