The open source OpenXR runtime
at prediction-2 65 lines 2.4 kB view raw
1#!/bin/env python3 2# Copyright 2020-2023, Collabora, Ltd. 3# SPDX-License-Identifier: BSL-1.0 4# Author: Jakob Bornecrantz <jakob@collabora.com> 5# Author: Lubosz Sarnecki <lubosz.sarnecki@collabora.com> 6# Author: Korcan Hussein <korcan.hussein@collabora.com> 7 8import argparse 9from monado import Monado, MonadoLibraryNotFoundError, MonadoHeaderNotFoundError 10 11 12def main(): 13 parser = argparse.ArgumentParser(description='libmonado Python example.') 14 parser.add_argument("-f", "--focused", type=int, metavar='CLIENT_ID', 15 help="Set focused client") 16 parser.add_argument("-p", "--primary", type=int, metavar='CLIENT_ID', 17 help="Set primary client") 18 parser.add_argument("-i", "--input", type=int, metavar='CLIENT_ID', 19 help="Toggle whether client receives input") 20 args = parser.parse_args() 21 22 try: 23 m = Monado() 24 except MonadoLibraryNotFoundError: 25 print("Could not find an installed libmonado.so in your path.") 26 print("Add the Monado build directory to your LD_LIBRARY_PATH:") 27 print(f"LD_LIBRARY_PATH=/home/user/monado/build/src/xrt/targets/libmonado/ ./{parser.prog}") 28 return 29 except MonadoHeaderNotFoundError: 30 print("Could not find an installed monado.h.") 31 print("Try setting the MONADO_HEADER_PATH manually:") 32 print(f"MONADO_HEADER_PATH=/home/user/monado/src/xrt/targets/libmonado/monado.h ./{parser.prog}") 33 return 34 35 if args.focused: 36 m.set_focused(args.focused) 37 if args.primary: 38 m.set_primary(args.primary) 39 if args.input: 40 m.toggle_io(args.input) 41 42 m.update_clients() 43 44 print(f"Clients: {m.client_count}") 45 for x in range(m.client_count): 46 c = m.snapshot_client(x) 47 print(f"\tid: {c.ident:4d}, primary: {c.primary:d}, active: {c.active:d}, " 48 f"visible: {c.visible:d}, focused: {c.focused:d}, io: {c.io_active:d}, " 49 f"overlay: {c.overlay:d}, name: {c.name}") 50 51 devices = m.get_devices() 52 print(f"Devices: {len(devices)}") 53 for dev in devices: 54 print(f"\tname: {dev.name}, serial: {dev.serial}") 55 56 roles_map = m.get_device_roles() 57 print(f"Roles: {len(roles_map)}") 58 for role_name, dev_id in roles_map.items(): 59 print(f"\trole: {role_name},\tdevice-index: {dev_id:4d}") 60 61 m.destroy() 62 63 64if __name__ == "__main__": 65 main()