- commit
- 3d2a7a6dd65889e6d539a4f802218a8fefedc57a
- parent
- 5663dd30e70825a941486c32ec2612e1fd908a69
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2024-08-04 12:44
refactor: share code across build_dbus_*
Diffstat
| M | xiwrap.py | 55 | +++++++++++++++++++++++++++++-------------------------- |
1 files changed, 29 insertions, 26 deletions
diff --git a/xiwrap.py b/xiwrap.py
@@ -94,6 +94,17 @@ def expandvars(path, env): 94 94 return os.path.expandvars(path) 95 95 96 96 -1 97 class DBusProxy: -1 98 def __init__(self, rules, dest, src, sync_fd): -1 99 self.cmd = ['xdg-dbus-proxy', f'--fd={sync_fd}', dest, src, '--filter'] -1 100 for value, typ in sorted(rules.items()): -1 101 self.cmd.append(f'--{typ}={value}') -1 102 self.fds = [sync_fd] -1 103 -1 104 def popen(self): -1 105 return subprocess.Popen(self.cmd, pass_fds=self.fds) -1 106 -1 107 97 108 class RuleSet: 98 109 def __init__(self): 99 110 self.env = {} @@ -251,33 +262,25 @@ class RuleSet: 251 262 def build_dbus_session(self): 252 263 if not self.dbus_session: 253 264 return None254 -1 cmd = [255 -1 'xdg-dbus-proxy',256 -1 f'--fd={self.sync_fds[1]}',-1 265 return DBusProxy( -1 266 self.dbus_session, 257 267 os.getenv('DBUS_SESSION_BUS_ADDRESS'), 258 268 DBUS_SESSION_SRC,259 -1 '--filter',260 -1 ]261 -1 for value, typ in sorted(self.dbus_session.items()):262 -1 cmd.append(f'--{typ}={value}')263 -1 return cmd-1 269 self.sync_fds[1], -1 270 ) 264 271 265 272 def build_dbus_system(self): 266 273 if not self.dbus_system: 267 274 return None268 -1 cmd = [269 -1 'xdg-dbus-proxy',270 -1 f'--fd={self.sync_fds[1]}',-1 275 return DBusProxy( -1 276 self.dbus_system, 271 277 os.getenv( 272 278 'DBUS_SYSTEM_BUS_ADDRESS', 273 279 'unix:path=/var/run/dbus/system_bus_socket', 274 280 ), 275 281 DBUS_SYSTEM_SRC,276 -1 '--filter',277 -1 ]278 -1 for value, typ in sorted(self.dbus_system.items()):279 -1 cmd.append(f'--{typ}={value}')280 -1 return cmd-1 282 self.sync_fds[1], -1 283 ) 281 284 282 285 283 286 if __name__ == '__main__': @@ -292,22 +295,22 @@ if __name__ == '__main__': 292 295 sys.exit(1) 293 296 294 297 cmd = rules.build(tail)295 -1 dbus_system_cmd = rules.build_dbus_system()296 -1 dbus_session_cmd = rules.build_dbus_session()-1 298 dbus_system = rules.build_dbus_system() -1 299 dbus_session = rules.build_dbus_session() 297 300 298 301 if rules.usage: 299 302 print(USAGE) 300 303 elif rules.debug: 301 304 print(' '.join(cmd))302 -1 if dbus_system_cmd:303 -1 print(' '.join(dbus_system_cmd))304 -1 if dbus_session_cmd:305 -1 print(' '.join(dbus_session_cmd))-1 305 if dbus_system: -1 306 print(' '.join(dbus_system.cmd)) -1 307 if dbus_session: -1 308 print(' '.join(dbus_session.cmd)) 306 309 else:307 -1 if dbus_system_cmd:308 -1 subprocess.Popen(dbus_system_cmd, pass_fds=[rules.sync_fds[1]])-1 310 if dbus_system: -1 311 dbus_system.popen() 309 312 os.read(rules.sync_fds[0], 8)310 -1 if dbus_session_cmd:311 -1 subprocess.Popen(dbus_session_cmd, pass_fds=[rules.sync_fds[1]])-1 313 if dbus_session: -1 314 dbus_session.popen() 312 315 os.read(rules.sync_fds[0], 8) 313 316 os.execvp('/usr/bin/bwrap', cmd)