pw-client
Version:
Node.js wrapper for developing PipeWire clients
444 lines (443 loc) • 18.2 kB
JavaScript
export var Client;
(function (Client) {
/** protocol used for connection */
Client["Protocol"] = "pipewire.protocol";
/** how the client access is controlled */
Client["Access"] = "pipewire.access";
/** how the client wants to be access controlled **/
Client["ClientAccess"] = "pipewire.client.access";
})(Client || (Client = {}));
export var Security;
(function (Security) {
/** Various keys related to the identity of a client process and its security. */
Security["Pid"] = "pipewire.sec.pid";
/** Client uid, set by protocol. */
Security["Uid"] = "pipewire.sec.uid";
/** client gid, set by protocol **/
Security["Gid"] = "pipewire.sec.gid";
/** client security label, set by protocol */
Security["Label"] = "pipewire.sec.label";
/** client socket name, set by protocol */
Security["Socket"] = "pipewire.sec.socket";
/** client secure context engine, set by protocol. */
Security["Engine"] = "pipewire.sec.engine";
/** client secure application id */
Security["AppId"] = "pipewire.sec.app-id";
/** client secure instance id */
Security["InstanceId"] = "pipewire.sec.instance-id";
})(Security || (Security = {}));
export var LibraryName;
(function (LibraryName) {
/** name of the system library to use */
LibraryName["System"] = "library.name.system";
/** name of the loop library to use */
LibraryName["Loop"] = "library.name.loop";
/** name of the dbus library to use */
LibraryName["Dbus"] = "library.name.dbus";
})(LibraryName || (LibraryName = {}));
export var Object;
(function (Object) {
/** object properties */
Object["Path"] = "object.path";
/** a global object id */
Object["Id"] = "object.id";
/** a 64 bit object serial number. */
Object["Serial"] = "object.serial";
/** the object lives on even after the client that created it has been destroyed */
Object["Linger"] = "object.linger";
/** If the object should be registered. */
Object["Register"] = "object.register";
/** If the object should be exported, since 0.3.72. */
Object["Export"] = "object.export";
})(Object || (Object = {}));
export var ConfigFile;
(function (ConfigFile) {
/** a config prefix directory */
ConfigFile["Prefix"] = "config.prefix";
/** a config file name */
ConfigFile["Name"] = "config.name";
/** a config override prefix directory */
ConfigFile["OverridePrefix"] = "config.override.prefix";
/** a config override file name */
ConfigFile["OverrideName"] = "config.override.name";
})(ConfigFile || (ConfigFile = {}));
export var Loop;
(function (Loop) {
/** the name of a loop */
Loop["Name"] = "loop.name";
/** the classes this loop handles, array of strings */
Loop["Class"] = "loop.class";
/** realtime priority of the loop */
Loop["RealtimePriority"] = "loop.rt-prio";
/** if the loop can be canceled */
Loop["Cancelable"] = "loop.cancel";
})(Loop || (Loop = {}));
export var Core;
(function (Core) {
/** The name of the core. */
Core["Name"] = "core.name";
/** The version of the core. */
Core["Version"] = "core.version";
/** If the core is listening for connections. */
Core["IsDaemon"] = "core.daemon";
/** the core id */
Core["Id"] = "core.id";
/** the apis monitored by core. */
Core["Monitors"] = "core.monitors";
})(Core || (Core = {}));
export var Context;
(function (Context) {
/** The user name that runs pipewire. */
Context["UserName"] = "context.user-name";
/** The host name of the machine. */
Context["HostName"] = "context.host-name";
})(Context || (Context = {}));
export var CPU;
(function (CPU) {
/** maximum alignment needed to support all CPU optimizations */
CPU["CpuMaxAlignment"] = "cpu.max-align";
/** number of cores */
CPU["CpuCores"] = "cpu.cores";
})(CPU || (CPU = {}));
export var Priority;
(function (Priority) {
/** priority in session manager */
Priority["Session"] = "priority.session";
/** priority to be a driver */
Priority["Driver"] = "priority.driver";
})(Priority || (Priority = {}));
export var Remote;
(function (Remote) {
/** The name of the remote to connect to, default pipewire-0, overwritten by env(PIPEWIRE_REMOTE). */
Remote["Name"] = "remote.name";
/** The intention of the remote connection, "generic", "screencast", "manager". */
Remote["Intention"] = "remote.intention";
})(Remote || (Remote = {}));
export var Process;
(function (Process) {
/** process id (pid) */
Process["Id"] = "application.process.id";
/** binary name */
Process["Binary"] = "application.process.binary";
/** user name */
Process["UserName"] = "application.process.user";
/** host name */
Process["HostName"] = "application.process.host";
/** the D-Bus host id the application runs on */
Process["MachineId"] = "application.process.machine-id";
/** login session of the application, on Unix the value of $XDG_SESSION_ID. */
Process["SessionId"] = "application.process.session-id";
})(Process || (Process = {}));
export var Application;
(function (Application) {
/** application keys */
Application["Name"] = "application.name";
/** a textual id for identifying an application logically. */
Application["Id"] = "application.id";
/** application version. */
Application["Version"] = "application.version";
/** aa base64 blob with PNG image data */
Application["Icon"] = "application.icon";
/** an XDG icon name for the application. */
Application["IconName"] = "application.icon-name";
/** application language if applicable, in standard POSIX format. */
Application["Language"] = "application.language";
/** window system */
Application["X11Display"] = "window.x11.display";
})(Application || (Application = {}));
(function (Client) {
/** Client properties. */
Client["Id"] = "client.id";
/** the client name */
Client["Name"] = "client.name";
/** the client api used to access PipeWire */
Client["Api"] = "client.api";
})(Client || (Client = {}));
export var Node;
(function (Node) {
/** Node keys. */
Node["Id"] = "node.id";
/** node name */
Node["Name"] = "node.name";
/** short node name */
Node["Nickname"] = "node.nick";
/** localized human readable node one-line description. */
Node["Description"] = "node.description";
/** when the node was created. */
Node["Plugged"] = "node.plugged";
/** the session id this node is part of */
Node["SessionId"] = "node.session";
/** the group id this node is part of. */
Node["GroupId"] = "node.group";
/** the sync group this node is part of. */
Node["SyncGroup"] = "node.sync-group";
/** if the sync-group is active or not */
Node["SyncGroupActive"] = "node.sync";
/** if the transport is active or not */
Node["TransportActive"] = "node.transport";
/** node wants exclusive access to resources */
Node["IsExclusive"] = "node.exclusive";
/** node wants to be automatically connected to a compatible node */
Node["Autoconnect"] = "node.autoconnect";
/** the requested latency of the node as a fraction. */
Node["Latency"] = "node.latency";
/** the maximum supported latency of the node as a fraction. */
Node["MaxLatency"] = "node.max-latency";
/** don't change quantum when this node is active */
Node["LockQuantum"] = "node.lock-quantum";
/** force a quantum while the node is active */
Node["ForceQuantum"] = "node.force-quantum";
/** the requested rate of the graph as a fraction. */
Node["Rate"] = "node.rate";
/** don't change rate when this node is active */
Node["LockRate"] = "node.lock-rate";
/** force a rate while the node is active. */
Node["ForceRate"] = "node.force-rate";
/** don't reconnect this node. */
Node["DoNotReconnect"] = "node.dont-reconnect";
/** process even when unlinked */
Node["AlwaysProcess"] = "node.always-process";
/** the node wants to be grouped with a driver node in order to schedule the graph. */
Node["WantsDriver"] = "node.want-driver";
/** pause the node when idle */
Node["PauseOnIdle"] = "node.pause-on-idle";
/** suspend the node when idle */
Node["SuspendOnIdle"] = "node.suspend-on-idle";
/** cache the node params */
Node["CacheParams"] = "node.cache-params";
/** the node handles transport sync */
Node["TransportSync"] = "node.transport.sync";
/** node can drive the graph. */
Node["IsDriver"] = "node.driver";
/** the node can be a lazy driver. */
Node["IsLazyDriver"] = "node.supports-lazy";
/** The node supports emiting RequestProcess events when it wants the graph to be scheduled. */
Node["SupportsRequest"] = "node.supports-request";
/** the node id of the node assigned as driver for this node */
Node["DriverId"] = "node.driver-id";
/** the node wants async scheduling */
Node["AsyncScheduling"] = "node.async";
/** the loop name fnmatch pattern to run in */
Node["LoopName"] = "node.loop.name";
/** the loop class fnmatch pattern to run in */
Node["LoopClass"] = "node.loop.class";
/** node is a stream, the server side should add a converter */
Node["IsStream"] = "node.stream";
/** the node is some sort of virtual object */
Node["IsVirtual"] = "node.virtual";
/** indicate that a node wants passive links on output/input/all ports when the value is "out"/"in"/"true" respectively */
Node["PassiveLinks"] = "node.passive";
/** the node is internally linked to nodes with the same link-group. */
Node["LinkGroup"] = "node.link-group";
/** the node is on a network */
Node["OnNetwork"] = "node.network";
/** the node is not scheduled automatically based on the dependencies in the graph but it will be triggered explicitly. */
Node["ExplicitlyTriggered"] = "node.trigger";
/** names of node's channels (unrelated to positions) */
Node["ChannelNames"] = "node.channel-names";
/** override port name prefix for device ports, like capture and playback or disable the prefix completely if an empty string is provided */
Node["DevicePortPrefix"] = "node.device-port-name-prefix";
})(Node || (Node = {}));
export var Port;
(function (Port) {
/** Port keys. */
Port["Id"] = "port.id";
/** port name */
Port["Name"] = "port.name";
/** the port direction, one of "in" or "out" or "control" and "notify" for control ports */
Port["Direction"] = "port.direction";
/** port alias */
Port["Alias"] = "port.alias";
/** if this is a physical port */
Port["IsPhysical"] = "port.physical";
/** if this port consumes the data */
Port["IsTerminal"] = "port.terminal";
/** if this port is a control port */
Port["IsControl"] = "port.control";
/** if this port is a monitor port */
Port["IsMonitor"] = "port.monitor";
/** cache the node port params */
Port["CacheParams"] = "port.cache-params";
/** api specific extra port info, API name should be prefixed. */
Port["Extra"] = "port.extra";
/** the ports wants passive links, since 0.3.67 */
Port["PassiveLinks"] = "port.passive";
/** latency ignored by peers, since 0.3.71 */
Port["IgnoreLatency"] = "port.ignore-latency";
/** the port group of the port 1.2.0 */
Port["PortGroup"] = "port.group";
})(Port || (Port = {}));
export var Link;
(function (Link) {
/** link properties */
Link["Id"] = "link.id";
/** input node id of a link */
Link["InputNodeId"] = "link.input.node";
/** input port id of a link */
Link["InputPortId"] = "link.input.port";
/** output node id of a link */
Link["OutputNodeId"] = "link.output.node";
/** output port id of a link */
Link["OutputPortId"] = "link.output.port";
/** indicate that a link is passive and does not cause the graph to be runnable. */
Link["IsPassive"] = "link.passive";
/** indicate that a link is a feedback link and the target will receive data in the next cycle */
Link["IsFeedback"] = "link.feedback";
/** the link is using async io */
Link["IsAsync"] = "link.async";
/** a target object to link to. */
Link["TargetObject"] = "target.object";
})(Link || (Link = {}));
export var Device;
(function (Device) {
/** device properties */
Device["Id"] = "device.id";
/** device name */
Device["Name"] = "device.name";
/** when the device was created. */
Device["Plugged"] = "device.plugged";
/** a short device nickname */
Device["Nickname"] = "device.nick";
/** device string in the underlying layer's format. */
Device["String"] = "device.string";
/** API this device is accessed with. */
Device["Api"] = "device.api";
/** localized human readable device one-line description. */
Device["Description"] = "device.description";
/** bus path to the device in the OS' format. */
Device["BusPath"] = "device.bus-path";
/** Serial number if applicable. */
Device["SerialNumber"] = "device.serial";
/** vendor ID if applicable */
Device["VendorId"] = "device.vendor.id";
/** vendor name if applicable */
Device["VendorName"] = "device.vendor.name";
/** product ID if applicable */
Device["ProductId"] = "device.product.id";
/** product name if applicable */
Device["ProductName"] = "device.product.name";
/** device class */
Device["Class"] = "device.class";
/** form factor if applicable. */
Device["FormFactor"] = "device.form-factor";
/** bus of the device if applicable. */
Device["Bus"] = "device.bus";
/** device subsystem */
Device["Subsystem"] = "device.subsystem";
/** device sysfs path */
Device["FsPath"] = "device.sysfs.path";
/** icon for the device. */
Device["Icon"] = "device.icon";
/** an XDG icon name for the device. */
Device["IconName"] = "device.icon-name";
/** intended use. */
Device["IntendedRoles"] = "device.intended-roles";
/** cache the device spa params */
Device["CacheParams"] = "device.cache-params";
})(Device || (Device = {}));
export var Module;
(function (Module) {
/** module properties */
Module["Id"] = "module.id";
/** the name of the module */
Module["Name"] = "module.name";
/** the author's name */
Module["Author"] = "module.author";
/** a human readable one-line description of the module's purpose. */
Module["Description"] = "module.description";
/** a human readable usage description of the module's arguments. */
Module["Usage"] = "module.usage";
/** a version string for the module. */
Module["Version"] = "module.version";
/** the module is deprecated with this message */
Module["Deprecated"] = "module.deprecated";
})(Module || (Module = {}));
export var Factory;
(function (Factory) {
/** Factory properties. */
Factory["Id"] = "factory.id";
/** the name of the factory */
Factory["Name"] = "factory.name";
/** the usage of the factory */
Factory["Usage"] = "factory.usage";
/** the name of the type created by a factory */
Factory["TypeName"] = "factory.type.name";
/** the version of the type created by a factory */
Factory["TypeVersion"] = "factory.type.version";
})(Factory || (Factory = {}));
export var Stream;
(function (Stream) {
/** Stream properties. */
Stream["IsLive"] = "stream.is-live";
/** The minimum latency of the stream. */
Stream["LatencyMin"] = "stream.latency.min";
/** The maximum latency of the stream. */
Stream["LatencyMax"] = "stream.latency.max";
/** Indicates that the stream is monitoring and might select a less accurate but faster conversion algorithm. */
Stream["IsMonitoring"] = "stream.monitor";
/** don't remix channels */
Stream["DoNotRemix"] = "stream.dont-remix";
/** Try to capture the sink output instead of source output. */
Stream["CaptureSink"] = "stream.capture.sink";
})(Stream || (Stream = {}));
export var Media;
(function (Media) {
/** Media. */
Media["Type"] = "media.type";
/** Media Category: Playback, Capture, Duplex, Monitor, Manager. */
Media["Category"] = "media.category";
/** Role: Movie, Music, Camera, Screen, Communication, Game, Notification, DSP, Production, Accessibility, Test. */
Media["Role"] = "media.role";
/** class Ex: "Video/Source" */
Media["Class"] = "media.class";
/** media name. */
Media["Name"] = "media.name";
/** title. */
Media["Title"] = "media.title";
/** artist. */
Media["Artist"] = "media.artist";
/** album. */
Media["Album"] = "media.album";
/** copyright string */
Media["Copyright"] = "media.copyright";
/** generator software */
Media["Software"] = "media.software";
/** language in POSIX format. */
Media["Language"] = "media.language";
/** filename */
Media["Filename"] = "media.filename";
/** icon for the media, a base64 blob with PNG image data */
Media["Icon"] = "media.icon";
/** an XDG icon name for the media. */
Media["IconName"] = "media.icon-name";
/** extra comment */
Media["Comment"] = "media.comment";
/** date of the media */
Media["Date"] = "media.date";
/** format of the media */
Media["Format"] = "media.format";
/** format related properties */
Media["Dsp"] = "format.dsp";
})(Media || (Media = {}));
export var Audio;
(function (Audio) {
/** audio related properties */
Audio["Channel"] = "audio.channel";
/** an audio samplerate */
Audio["SampleRate"] = "audio.rate";
/** number of audio channels */
Audio["NumChannels"] = "audio.channels";
/** an audio format. */
Audio["Format"] = "audio.format";
/** a list of allowed samplerates ex. */
Audio["AllowedRates"] = "audio.allowed-rates";
})(Audio || (Audio = {}));
export var Video;
(function (Video) {
/** video related properties */
Video["Rate"] = "video.framerate";
/** a video format */
Video["Format"] = "video.format";
/** a video size as "<width>x<height" */
Video["Size"] = "video.size";
})(Video || (Video = {}));