The officially official Devuan Forum!

You are not logged in.

#1 Today 06:08:55

HardSun
Member
Registered: 2025-07-29
Posts: 24  

[SOLVED] Devuan Excalibur Pipewire / via $HOME.profile

I just have a question regarding the release notes and starting pipewire and $XDG_RUNTIME_DIR within $HOME/.profile as i cant get it to work, nothing happens.
EDIT: I dont use elogind or polkit, only seatd.

https://files.devuan.org/devuan_excalib … _notes.txt

This is how i currently start pipewire and wireplumber, please read on for the questions.
$HOME/.profile

if [ -f ~/.bashrc ];
    then . ~/.bashrc;
fi

export PATH="$HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

if [ -z "$XDG_RUNTIME_DIR" ]; then
        XDG_RUNTIME_DIR="/tmp/$(id -u)-runtime-dir"

        mkdir -pm 0700 "$XDG_RUNTIME_DIR"
        export XDG_RUNTIME_DIR
fi

$HOME/.xinitrc

. ~/.profile
xrandr --output HDMI-2 --mode 1920x1080 --rate 144.00 &
xset s off -dpms &
slstatus &
sxhkd &
dbus-launch &
pipewire &
pipewire-pulse &
sleep 3s && wireplumber &
sleep 2s && exec startdwm

________________________________________________________

As per the release notes, below code snippets is how i have modified $HOME/.profile and now sourcing it via .xsessionrc instead of .xinitrc, is this correct or am i missing something?
Also dbus-launch is needed via either xinitrc or .profile i think?
$HOME/.profile

if [ -f ~/.bashrc ];
    then . ~/.bashrc;
fi

export PATH="$HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

        if [ "$XDG_RUNTIME_DIR" = "/run/user/$(id -u)" ] ; then
                psess_pids=
                for p in pipewire wireplumber pipewire-pulse ; do
                command -v $p >/dev/null || continue
                    pgrep --exact --uid $USER $p >/dev/null && continue
                    $p &
                    psess_pids="$! ${psess_pids}"
                done
                [ "$psess_pids" ] && trap "kill $psess_pids" EXIT
        fi

$HOME/.xinitrc

xrandr --output HDMI-2 --mode 1920x1080 --rate 144.00 &
xset s off -dpms &
slstatus &
sxhkd &
dbus-launch &
sleep 2s && exec startdwm

$HOME/.xsessionrc

        if [ -f ~/.profile ]; then
            . ~/.profile
        fi

Last edited by HardSun (Today 06:26:04)

Offline

#2 Today 06:47:53

RedGreen925
Member
Registered: 2024-12-07
Posts: 200  

Re: [SOLVED] Devuan Excalibur Pipewire / via $HOME.profile

Well check what is actually being sourced.

/bin/bash -lixc exit 2>&1 | sed -n 's/^+* \(source\|\.\) //p'

That showed me for my machine.

zeus@9600k:~$ /bin/bash -lixc exit 2>&1 | sed -n 's/^+* \(source\|\.\) //p'
/etc/bash.bashrc
/etc/profile.d/bash_completion.sh
/usr/share/bash-completion/bash_completion
/etc/bash_completion.d/000_bash_completion_compat.bash
/etc/bash_completion.d/git-prompt
/usr/lib/git-core/git-sh-prompt
/etc/profile.d/vte-2.91.sh
/home/zeus/.bashrc
/home/zeus/.bash_aliases
/usr/share/bash-completion/bash_completion
/etc/bash_completion.d/000_bash_completion_compat.bash
/etc/bash_completion.d/git-prompt
/usr/lib/git-core/git-sh-prompt
/home/zeus/.bash_functions

And I have a a .profile that is never used.

zeus@9600k:~$ ls -l .profile
-rw-r--r-- 1 zeus zeus 641 Aug 31  2022 .profile

When I  use the autostart option of KDE to launch it I use this script.

zeus@9600k:~$ cat bin/pipewire_start.sh 
#!/bin/bash

# Added to start pipewire on login to desktop
# https://dev1galaxy.org/viewtopic.php?id=5867
# was the ~/.xsessionrc -rw-rw-r-- permissions
# now ~/bin/pipewire_start.sh executable permissions
# as bash script loaded from KDE autostart in System Settings

# kill any existing pipewire instance to restore sound
pkill -u "$USER" -fx /usr/bin/pipewire-pulse 1>/dev/null 2>&1
pkill -u "$USER" -fx /usr/bin/wireplumber 1>/dev/null 2>&1
pkill -u "$USER" -fx /usr/bin/pipewire 1>/dev/null 2>&1

# start pipewire
exec /usr/bin/pipewire &

# wait for pipewire to start before attempting to start related daemons
while [ "$(pgrep -f /usr/bin/pipewire)" = "" ] ; do
   sleep 1
done

# start wireplumber
exec /usr/bin/wireplumber &

# start pipewire-pulse
exec /usr/bin/pipewire-pulse &

As you can see from my comment in that file I used to actually start processes in the ~/.xsessionrc. Save yourself the time and trouble and do the same, it just works without fail. I only changed it as I wanted to test that steaming pile of dung they call Wayland and it would not start using the X11 config file method obviously.

Offline

#3 Today 08:39:50

HardSun
Member
Registered: 2025-07-29
Posts: 24  

Re: [SOLVED] Devuan Excalibur Pipewire / via $HOME.profile

Nevermind, im getting it now.
Must be for users who are using elogind only.
I need to just keep doing what im doing to run pipewire and using below statement in $HOME/.profile

if [ -z "$XDG_RUNTIME_DIR" ]; then
        XDG_RUNTIME_DIR="/tmp/$(id -u)-runtime-dir"

        mkdir -pm 0700 "$XDG_RUNTIME_DIR"
        export XDG_RUNTIME_DIR
fi

Just the wording from the release notes made me think i could use that code in $HOME/.profile using startx without elogind.

https://files.devuan.org/devuan_excalib … _notes.txt

> `apt-get install pipewire pipewire-pulse wireplumber`

There are many different ways of achieving this depending on whether you require
sound in the console, a GUI desktop or both.

A basic solution that can accommodate both is to add the following shell
snippets:-

  * ~/.profile

        if [ "$XDG_RUNTIME_DIR" = "/run/user/$(id -u)" ] ; then
                psess_pids=
                for p in pipewire wireplumber pipewire-pulse ; do
                command -v $p >/dev/null || continue
                    pgrep --exact --uid $USER $p >/dev/null && continue
                    $p &
                    psess_pids="$! ${psess_pids}"
                done
                [ "$psess_pids" ] && trap "kill $psess_pids" EXIT
        fi

  * ~/.xsessionrc

        if [ -f ~/.profile ]; then
            . ~/.profile
        fi

Last edited by HardSun (Today 08:48:26)

Offline

Board footer