3232IMPORT_PRESET_ACTION = "Import Preset\u2026 "
3333DEFAULT_AUDIO_SINK_KEY = "default.audio.sink"
3434DEFAULT_CONFIGURED_AUDIO_SINK_KEY = "default.configured.audio.sink"
35- DEFAULT_METADATA_VALUE_TYPE = "Spa:String:JSON"
3635CONTROL_BUS_NAME = "io.github.bhack.mini-eq"
3736CONTROL_OBJECT_PATH = "/io/github/bhack/mini_eq/Control"
3837CONTROL_INTERFACE_NAME = "io.github.bhack.MiniEq.Control"
@@ -225,16 +224,16 @@ def default_sink_name() -> str | None:
225224
226225
227226def set_configured_default_sink_name (sink_name : str , timeout_seconds : float ) -> None :
228- value = json .dumps ({"name" : sink_name }, separators = ("," , ":" ))
227+ sink = wait_for (
228+ f"PipeWire sink { sink_name } " ,
229+ lambda : node_by_name (sink_name ),
230+ timeout_seconds ,
231+ )
229232 subprocess .run (
230233 [
231- "pw-metadata" ,
232- "-n" ,
233- "default" ,
234- "0" ,
235- DEFAULT_CONFIGURED_AUDIO_SINK_KEY ,
236- value ,
237- DEFAULT_METADATA_VALUE_TYPE ,
234+ "wpctl" ,
235+ "set-default" ,
236+ str (node_id (sink )),
238237 ],
239238 check = True ,
240239 text = True ,
@@ -245,6 +244,11 @@ def set_configured_default_sink_name(sink_name: str, timeout_seconds: float) ->
245244 lambda : configured_default_sink_name () == sink_name ,
246245 timeout_seconds ,
247246 )
247+ wait_for (
248+ f"WirePlumber default sink metadata to become { sink_name } " ,
249+ lambda : default_sink_name () == sink_name ,
250+ timeout_seconds ,
251+ )
248252
249253
250254def verify_pipewire_gobject_probe (timeout_seconds : float ) -> None :
@@ -1324,7 +1328,7 @@ def run_helper(_args: argparse.Namespace) -> int:
13241328 return HELPER_SKIP_EXIT_CODE
13251329
13261330 try :
1327- for tool in ("pipewire" , "wireplumber" , "pw-cat" , "pw-dump" , "pw-metadata" , "gnome-shell" ):
1331+ for tool in ("pipewire" , "wireplumber" , "wpctl" , " pw-cat" , "pw-dump" , "pw-metadata" , "gnome-shell" ):
13281332 require_tool (tool )
13291333 except RuntimeError as exc :
13301334 print (str (exc ), file = sys .stderr )
0 commit comments