Commit graph

212 commits

Author SHA1 Message Date
Bryan Quigley
dd1bf796cb systemd: add sandboxing and slice similar to pulseaudio
Adds as much sandboxing as seems to work with user sessions.
Adds pipewire to session slice per https://systemd.io/DESKTOP_ENVIRONMENTS/

Inspired from https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/blob/master/src/daemon/systemd/user/pulseaudio.service.in

Fixes: 763
2021-02-19 09:08:51 +00:00
Wim Taymans
250a10cd63 conf: put "" around string with potential special chars 2021-02-18 17:21:29 +01:00
Wim Taymans
6079830591 media-session: add option to configure suspend timeout
Set the property on the node and use the value when suspending the
node. a timeout of 0 disables suspend.
2021-02-16 15:41:53 +01:00
Wim Taymans
af686653a9 jack: add option to merge monitors
Make a different name for the monitor port prefix so that they
appear as different clients.
Add an option to restore the previous behaviour.

See #736
2021-02-16 13:23:47 +01:00
Frédéric Danis
0b2d3730b6 bluez5: Add HFP HF support 2021-02-15 14:46:18 +00:00
Wim Taymans
373fd53d2e conf: fix audioconvert regex 2021-02-13 20:38:02 +01:00
Ivan
7e7f0225d4 style: Format and fix config files
Some minor formatting for recently added config files.
2021-02-13 19:20:10 +00:00
Wim Taymans
70390a631e context: add suport.dbus option
Add a support.dbus option in the context that can be used to disable
the dbus feature.
2021-02-12 17:57:24 +01:00
Wim Taymans
04354215b6 media-session: get the right key for properties 2021-02-12 17:28:52 +01:00
Wim Taymans
3cc577ddd6 v4l2: fix sink/source and output/input names 2021-02-12 16:13:00 +01:00
Wim Taymans
2a83811297 bluez: input = source, output = sink 2021-02-12 16:10:58 +01:00
Wim Taymans
13d655ceb2 conf: add and example of how to make a raw alsa device 2021-02-12 13:15:45 +01:00
Wim Taymans
80825aeaea conf: more work on config changes
Add -c option to pipewire to select config file. Use this to select
the uninstalled conf file.
Rename conf properties, prefix with context.
Simplify the main daemon now that everything can go in config.
Simplify pipewire-pulse now that we can put everything in config, it's
now virtually the same as pipewire but with a differenct config file.
Parse server addresses as array of strings.
2021-02-12 10:31:29 +01:00
Wim Taymans
fc90a4e48a Implement config/state file handling
Make methods to load_config and load/save state. For now the config
and state directories are the same but it might not be. Implement
the search path for all config/state files as:

  $XDG_CONFIG_HOME/[$prefix]/$name
  $HOME/.config/[$prefix]/$name
  $PIPEWIRE_CONFIG_DIR/pipewire/[$prefix]/$name
  /etc/pipewire/[$prefix]/$name

Make some config files for jack and RT clients. Make pw-cat use the
client-rt config.

Use core state and config management in media-session.
Move all session manager state and config files to the build dir and
set the PIPEWIRE_CONFIG_DIR to this build dir.
2021-02-12 10:25:11 +01:00
Wim Taymans
c605672d43 Implement per client config files
Move the daemon config file loading to a new conf.c file used by
the context to load the configuration. This replaces the module
profiles and some hacks to move properties around.

If there is nothing other specified with $PIPEWIRE_CONFIG_NAME or
a property, the client.conf file is loaded as a fallback.

Update the session manager config file to load the modules via the
config now. Rename the session modules section to another name.

Update pipewire-pulse to also load a specific pulse property file.
This then makes it pssible to assign specific RT priorities for the
pipewire-pulse process.
2021-02-12 10:07:16 +01:00
Ivan
0d56f717bf style: Reformat config files
Use spaces instead of tabs (as they depend on text editor settings).
Make configuration files more readable and consistent seeing as there
were some mixed indentation and styling.
Also put some logic into styling.
2021-02-12 05:26:16 +00:00
Jonas Holmberg
f977c45240 media-session: add dbus property to media-session 2021-02-09 18:09:33 +00:00
Jonas Holmberg
d624ed26f4 media-session: add alsa.reserve property to alsa-monitor 2021-02-09 18:09:33 +00:00
Wim Taymans
5b36d77ed0 conf: fix the example... 2021-02-09 18:28:10 +01:00
Wim Taymans
c3c6dcf53f conf: add an example for a virtual source 2021-02-09 18:15:54 +01:00
Wim Taymans
739f3b9f7f media-session: disable JACK device by default
It is most likely to fail right now.
2021-02-09 17:37:08 +01:00
jasker5183
2eaf10d5b3 pipewire.conf Formatting #2 2021-02-09 07:55:48 +00:00
jasker5183
5e2130f6f7 v4l2-monitor.conf Formatting/Punctuation Fixes 2021-02-09 07:54:06 +00:00
jasker5183
20e1b4f639 media-session.conf Formatting/Punctuation 2021-02-09 07:52:34 +00:00
jasker5183
246f7bd77e bluez-monitor.conf Formatting/Punctuation Fixes 2021-02-08 18:19:16 +00:00
jasker5183
dc66df134b alsa-monitor.conf Spelling/Punctuation Fixes 2021-02-08 18:17:33 +00:00
jasker5183
c14361b19d Spelling/Punctuation Fixes 2021-02-08 17:14:02 +00:00
Wim Taymans
085fd536be daemon: make flags parse like an array 2021-02-08 17:30:26 +01:00
Wim Taymans
ecd1d3e1d7 Move node.pause-on-idle setting to config files
So that we can configure it.
Add some more docs to the config file
2021-02-08 17:19:47 +01:00
Wim Taymans
cd5ceae69e systemd: remove LimitMEMLOCK lines
The LimitMEMLOCK lines can only lower the use limits so it is not
very useful.

See #692
2021-02-08 14:56:50 +01:00
Wim Taymans
210950dc0a context: disable mlock warnings by default
Make this a tunable option instead.
2021-02-08 10:59:02 +01:00
Wim Taymans
ce7a8c9538 media-session: put match rules in "" to avoid confusion 2021-02-05 17:34:30 +01:00
Wim Taymans
a48a4fc1bd conf: add comments for the other access permissions 2021-02-02 17:48:25 +01:00
Wim Taymans
b8ef0fc5bb module-access: make access.allowed an array
Reformat the config file a little
2021-02-02 17:48:25 +01:00
Huang-Huang
b9f2e6a8c4
bluez5: disable HSP AG by default in native backend 2021-02-01 03:39:49 +08:00
Huang-Huang
f6cc45f736 bluez5: allow headset roles selecting 2021-01-31 18:12:07 +00:00
Pauli Virtanen
494194c4bf bluez5: allow selecting codecs to use in config file
For debugging, it may be useful to disable some of the codecs.  Enable
configuring this in config file, to make it more convenient for users,
who may not know how to recompile/install pipewire.
2021-01-30 17:23:07 +00:00
Wim Taymans
f43bcca35e media-session: implement route selection and restore
Disable automatic port configuration in acp and move the logic
to the session manager.
Implement initial port selection and restore on profile activation.
Implement route switch when unavailable
Implement port settings save.
2021-01-29 16:59:17 +01:00
Wim Taymans
2a1875fc35 bluez: disable pause on idle by default 2021-01-29 15:37:32 +01:00
Wim Taymans
585f533d27 media-session: move profile selection to media-session
Disable automatic profile selection in the acp device
Implement selection of profiles in the default-profile module
2021-01-27 13:48:10 +01:00
jasker5183
2521e6db1b Add msbc expectations 2021-01-22 15:16:37 +00:00
Wim Taymans
c866d5c1f4 Increase memlock limits in systemd service files 2021-01-22 13:18:48 +01:00
Wim Taymans
73896bfa83 alsa: rework batch handling a bit
By default, use a 512 period for batch and use 512 headroom
Add a property to disable special batch handling.
2021-01-21 17:14:51 +01:00
jasker5183
11f95fe11e Remove obsolete intructions 2021-01-21 12:04:37 +01:00
Wim Taymans
2c4c78c51e media-session: add alsa.jack-device property to alsa-monitor 2021-01-20 13:48:06 +01:00
Wim Taymans
579e8a4ea6 json: allocate one extra byte for the \0 2021-01-19 16:56:55 +01:00
Wim Taymans
8c84c96fe1 daemon: add support for mlockall 2021-01-19 12:17:29 +01:00
Pauli Virtanen
b10123eceb policy-node: make streams follow default sink/src changes
The motivation is to have both existing and new streams that have been
created without explicit target node, to be directed to the same devices
at all times. To achieve this:

Consider what find_node returns as the "default node".

Consider streams that auto+reconnect and don't have an explicit target,
as following default.  In rescan, if the default node has changed,
relink such streams to the new default.

Remove the old code that explicitly moved streams when the default.*
metadata changed, as it implements a similar thing but in a less robust
way (may fail to do what's intended, because the default device
metadata is commonly unset, or the metadata callback comes before
session_create has seen the new nodes).

Enable this feature based on "policy-node.streams-follow-default"
property. Allow setting the property also by loading the
streams-follow-default module. Enable it by default only for the
with-pulseaudio module group.
2021-01-18 20:49:58 +01:00
Wim Taymans
d9a63dc69f alsa: disable pause-on-idle by default
snd_pcm_drop() causes pops and cracks. It is better to just let the
sink consume silence until it gets suspended.
2021-01-18 11:13:48 +01:00
Wim Taymans
23fd40df94 daemon: support containers as arguments
so that

ags = "foo=bar baz=5"

can be written as:

args = { foo = bar baz = 5 }
2021-01-17 14:56:23 +01:00