You are not logged in.
To a socially responsible expert on Linux documentation, that is, to you.
Have you noticed that the Devuan wiki is almost empty?
It means that all knowledge might be forgotten because of dementia.
Since you are the only person who really knows how to write technical documentation, you may try to fill the Devuan wiki with exact technical knowledge. Perhaps, you should try, if you are a socially responsible Linux user.
Social responsibility is an ethical concept in which a person works and cooperates with other people and organizations for the benefit of the community.
_https://en.wikipedia.org/wiki/Social_responsibility
⟡ AI Overview
To write effective technical documentation, focus on understanding your audience, organizing information logically, and presenting content clearly and concisely. Use visuals, gather feedback, and prioritize consistency to create documentation that meets user needs.
Perhaps, one may try
SoundDriver = ALSASee: _https://wiki.archlinux.org/title/MOC#Configuration
There might be some other options...
To use MOC with OSS v4.1 you must change OSSMixerDevice to /dev/ossmix in your configuration file (located in ~/.moc). For issues with the interface try changing the OSSMixerChannel by pressing w in mocp (to change to the sofware mixer).
_https://wiki.archlinux.org/title/Open_Sound_System#MOC
@delgado
If you pretend to be more intelligent than AI, you may try to help MLEvD to solve the problem.
I am ignorant in the topic. But I had already burnt one GPU, experimenting with a very old notebook. Perhaps, one may better ask AI: What is the quietest PC fan?
Yes, pulseaudio is quite "intrusive"; it installs itself as the default audio path handler into the ALSA configuration
It is not exactly the case. ALSA was stripped off software mixer to be raped by pulseaudio. The problem is that the secret esoteric technology of configuring software mixers for ALSA was somehow forgotten, largely because of dementia, perhaps. If ALSA is such a problem, one may try OSS4. It is not very difficult to compile. The PKGBUILD and patches are available here:
_https://aur.archlinux.org/packages/oss-git
OSS was designed as a classical sound system. More exactly, it was the first one.
ALSA was designed as a sort of universal software mixer. That is why it does not permit "exclusive mode".
ALSA without a correctly configured software mixer is like a car without a motor and wheels.
⟡ AI Overview
ALSA has both a userspace component and a kernel component. The kernel component provides drivers that directly interact with sound hardware, while the userspace component provides a higher-level API for applications to interact with the sound devices. The userspace component offers more general functions like mixing, routing, and effects, abstracting away the complexities of different hardware
Portable CMake is available here:
_https://github.com/Kitware/CMake
Portable Ninja is available here:
_https://github.com/ninja-build/ninja
Portable GCC is available here:
_https://github.com/Frogging-Family/mostlyportable-gccPortable CMake and Ninja are ready to use.
Portable GCC is easy to compile.
➤ gcc --version
gcc (TkG-mostlyportable) 15.1.1 20250601
➤ g++ --version
g++ (TkG-mostlyportable) 15.1.1 20250601
➤ cmake --version
cmake version 4.0.2
➤ ninja --version
1.12.1 1. Generating the Buildsystem
cmake -S wxmaxima -B build -G Ninja -DCMAKE_BUILD_TYPE="Release" -DCPACK_DEBIAN_PACKAGE_MAINTAINER=Daedalus -DCMAKE_INSTALL_PREFIX='/usr' -DwxWidgets_CONFIG_EXECUTABLE=/usr/bin/wx-config -DWXM_INTERPROCEDURAL_OPTIMIZATION=ON -Wno-dev -- The CXX compiler identification is GNU 15.1.1
...
-- CMake version: 4.0.2
-- CMake build type: Release
...
-- Found Doxygen: /usr/bin/doxygen (found version "1.9.4") found components: doxygen dot
-- Found po4a: /usr/bin/po4a (found version "0.73")
...
-- Found pandoc: /usr/bin/pandoc (found version "2.17.1.1")
-- Found LATEX: /usr/bin/latex found components: XELATEX LUALATEX
-- Found ImageMagick: /usr/bin/identify (found version "6.9.11-60")
-- Found Gettext: /usr/bin/msgmerge (found version "0.21")
...
-- Found Maxima: /usr/bin/maxima (found version "5.47post")
-- Found appstreamcli: /usr/bin/appstreamcli (found version "0.16.1") 2. Compiling with invisible Ninja
cmake --build build 3. Making a Debian package with CPack
cpack --config build/CPackConfig.cmake -G DEB ➤ cpack --config build/CPackConfig.cmake -G DEB
CPack: Create package using DEB
CPack: Install projects
CPack: - Install project: wxMaxima []
CPack: Create package
CPackDeb: - Generating dependency list
CPack: - package:.../Build1/wxmaxima_25.04.0-1_amd64.deb generated.
➤ ls -1
build
_CPack_Packages
wxmaxima
wxmaxima_25.04.0-1_amd64.deb ➤ tree -L 5 _CPack_Packages
_CPack_Packages
└── Linux
└── DEB
├── wxmaxima_25.04.0-1_amd64.deb
└── wxMaxima-25.04.0-Linux
├── control
├── control.tar.gz
├── data.tar.gz
├── debian-binary
├── md5sums
└── usr
├── bin
└── share ➤ dpkg --info wxmaxima_25.04.0-1_amd64.deb | grep Depends
Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 11), libwxbase3.2-1 (>= 3.2.2+dfsg), libwxgtk-webview3.2-1 (>= 3.2.2+dfsg), libwxgtk3.2-1 (>= 3.2.1+dfsg-2) These dependencies are very good in the sense that the package can be installed on Devuan 5.
The only problem is that they are wrong. This can be easily verified:
➤ cd _CPack_Packages/Linux/DEB/wxMaxima-25.04.0-Linux/usr/bin
➤ ls
wxmaxima
➤ ./wxmaxima
./wxmaxima: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by ./wxmaxima)
./wxmaxima: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.15' not found (required by ./wxmaxima) It means that wxMaxima depends on certain libraries compiled together with the portable gcc-15. This problem can be easily fixed, but, first of all, we have to find the cause of the deception.
Debian is deceptive, and, perhaps, fundamentally wrong by design.
We have several hypotheses to verify:
1. The CMake developers do not know the secret esoteric method with which to calculate dependencies.
2. The secret esoteric method is wrong.
3. The Debian "dependency system" is fundamentally wrong.
➤ cd ../../../
➤ ls -1
wxmaxima_25.04.0-1_amd64.deb
wxMaxima-25.04.0-Linux
➤ mkdir debian
➤ ls -1
debian
wxmaxima_25.04.0-1_amd64.deb
wxMaxima-25.04.0-Linux
➤ echo -e "Source: wxmaxima\nPackage: wxmaxima\nDepends: \${shlibs:Depends}" >> debian/control
➤ cat debian/control
Source: wxmaxima
Package: wxmaxima
Depends: ${shlibs:Depends} dpkg-shlibdeps -v -xwxmaxima --ignore-missing-info -e $(find wxMaxima-25.04.0-Linux -type f 2>/dev/null) ➤ cat debian/substvars
shlibs:Depends=libc6 (>= 2.34), libgcc-s1 (>= 3.3.1), libstdc++6 (>= 11), libwxbase3.2-1 (>= 3.2.2+dfsg), libwxgtk-webview3.2-1 (>= 3.2.2+dfsg), libwxgtk3.2-1 (>= 3.2.1+dfsg-2)dpkg-shlibdeps produced the same wrong dependencies.
CONCLUSION: The CMake developers are using the same secret esoteric method to calculate dependencies of Debian packages, and this method is wrong.
The method is secret, simply because the system is buggy.
dpkg-shlibdeps cannot be trusted. It is as reliable as weather forecast. Sometimes it is true. Sometimes it is wrong.
The Debian packaging system is either logically inconsistent, or fundamentally wrong by design. This may require a further investigation.
It seems that dpkg-shlibdeps is capable of calculating imaginary esoteric virtual dependencies which are somehow related to the real world dependencies. It might be a product of "demented artificial intelligence", perhaps.
Nevertheless, these dependencies a very good, for they do not prevent installation of the package. The only problem to fix is that of shared libraries. It has a standard solution.
sudo apt install fakeroot patchelf ➤ fakeroot
# mkdir debdir
# ls -1
debdir
debian
wxmaxima_25.04.0-1_amd64.deb
wxMaxima-25.04.0-Linux
# dpkg-deb -R wxmaxima_25.04.0-1_amd64.deb debdir
# patchelf --print-rpath debdir/usr/bin/wxmaxima
<empty>
# patchelf --set-rpath $HOME/.CTools/gcc-15.1.1/lib64 debdir/usr/bin/wxmaxima
# patchelf --print-rpath debdir/usr/bin/wxmaxima
~/.CTools/gcc-15.1.1/lib64
# exit
exit ➤ ./debdir/usr/bin/wxmaxima --version
wxMaxima 25.04.0 (Git version: 583c11f) ➤ cd debdir
➤ mv -v DEBIAN/md5sums ..
renamed 'DEBIAN/md5sums' -> '../md5sums'
➤ fakeroot
# find . -type f -not -path "./DEBIAN/*" -exec md5sum {} + | sort -k 2 | sed 's/\.\/\(.*\)/\1/' > DEBIAN/md5sums
# ls -1 DEBIAN
control
md5sums
# cd ..
# chmod 0644 -- debdir/DEBIAN/md5sums
# dpkg-deb -b debdir wxmaxima_25.04.0-1_amd64-fixed.deb
dpkg-deb: building package 'wxmaxima' in 'wxmaxima_25.04.0-1_amd64-fixed.deb'.
# exit
exit
➤ cd ..
➤ ls -1 *.deb
wxmaxima_25.04.0-1_amd64.deb
wxmaxima_25.04.0-1_amd64-fixed.deb Now we can install wxMaxima
sudo dpkg -i wxmaxima_25.04.0-1_amd64-fixed.deb ➤ wxmaxima --version
wxMaxima 25.04.0 (Git version: 583c11f)@greenjeans
Coffee may not help, if you are not initiated into the secret knowledge.
You may better google "Anthropology of GNU/Linux".
Do you know another method to calculate dependencies (>=) of Debian packages?
It might be very useful for verification.
@greenjeans
It is not difficult to unpack a Debian package, edit "control" with a text editor (nano, pluma, or mousepad, or else), and pack it again.
What is the "Best Kept Secret" is how to calculate the true dependencies.
That is why you have to fake a "sourcedir" (create a fake debian/control).
Then you can run "dpkg-shlibdeps". Otherwise, it may complain about missing "debian/control", for example:
➤ dpkg-shlibdeps /usr/bin/whereis
dpkg-shlibdeps: error: cannot read debian/control: No such file or directory Why is it a sort of secret knowledge? It is about a ritual justification of social status.
⟡AI Overview
Secular rituals, which are non-religious customs and practices, can influence social status by fostering social bonding and positive affect, similar to religious rituals. Studies have shown that secular rituals, like those at Sunday Assemblies, can increase social connection, boost positive emotions, and decrease negative emotions, potentially leading to improved mental well-being.
Here's a more detailed look at how secular rituals impact social status:
1. Fostering Social Bonding:
Secular rituals, such as family traditions, celebrations, or community gatherings, can create a sense of belonging and connection among participants.
Rituals can reinforce shared values and beliefs, strengthening social bonds within a group.
Studies have found that the increase in social bonding in secular rituals is comparable to religious rituals.
2. Boosting Positive Affect and Reducing Negative Affect:
Participating in secular rituals can lead to increased positive emotions and decreased negative emotions.
These positive emotions can, in turn, contribute to a greater sense of social connection and well-being.
The "broaden and build" hypothesis suggests that positive emotions broaden attention, leading to more social connections and improved mental well-being.
3. Examples of Secular Rituals:
Family traditions: Celebrating holidays, birthdays, or other milestones with specific rituals.
Community gatherings: Participating in local festivals, community events, or sporting events.
Rites of passage: Celebrating graduations, weddings, or other life transitions with rituals.
Creating your own secular rituals: Developing personal practices that mark important moments or foster connections.
4. Social Status and Secular Rituals:
Participating in secular rituals can contribute to a higher social status by strengthening social bonds and fostering a sense of belonging.
By actively engaging in these rituals, individuals may be perceived as more connected, engaged, and socially skilled.
Rituals can also serve as a way to express shared values and beliefs, reinforcing group identity and social cohesion.
5. Secular Rituals as an Alternative to Religious Rituals:
For individuals who do not identify with religious traditions, secular rituals can provide a means of experiencing social bonding and positive affect.
Secular rituals can serve as an alternative way to create meaning and purpose in life while still fostering social connection.
By participating in secular rituals, individuals may feel more connected to their community and less isolated.
United on Sunday: The effects of secular rituals on social bonding and affect
27 Jan 2021PubMed
United on Sunday: The effects of secular rituals on social ...
Results showed the increase in social bonding taking place in secular rituals is comparable to religious rituals. We also found th...
PubMed Central
The effects of secular rituals on social bonding and affect - PLOS
27 Jan 2021 — However, whether the social bonding effect reported from religious rituals is also seen in secular rituals that mimic t...AI responses may include mistakes.
$ apt-cache policy
...
Pinned packages:
pipewire-pulse -> 0.3.65-3+deb12u1 with priority -1
pulseaudio -> 16.1+dfsg1-2+b1 with priority -1
pipewire -> 0.3.65-3+deb12u1 with priority -1
pavucontrol -> 5.0-2 with priority -1
gstreamer1.0-alsa -> 1.22.0-3+deb12u4 with priority -1
gstreamer1.0-alsa -> 1.22.0-3+deb12u3 with priority -1
gstreamer1.0-pipewire -> 0.3.65-3+deb12u1 with priority -1
pipewire-bin -> 0.3.65-3+deb12u1 with priority -1
pulseaudio-module-bluetooth -> 16.1+dfsg1-2+b1 with priority -1
gstreamer1.0-pulseaudio -> 1.22.0-5+deb12u2 with priority -1
ALSA users have to install gstreamer1.0-alsa and remove gstreamer1.0-pulseaudio in order to improve sound quality with gstreamer.
OSS4 users have to remove gstreamer1.0-alsa and gstreamer1.0-pulseaudio. This automatically enables the gstreamer OSS4 backend (if OSS4 is installed).
gstreamer1.0-pipewire should also be removed.
The unwanted plugins should also be pinned.
RE: "Devuanite experience"
I have not yet noticed pulseaudio in Recommends. It should not be there. If it is in Recommends, it is automatically installed.
Of course, it can be installed against your will. That is why you have to pin it with a secret esoteric command.
On Devuan, one may still need to have a long list of pinned packages.
There is a conspiracy theory about "Apt’s Best Kept Secret" (a sort of post-esoteric surrealism, perhaps).
Since I am using OSS4 with gstreamer, I have to pin gstreamer1.0-pulseaudio and gstreamer1.0-alsa with the secret command.
Now, they are not going to be installed:
➤ apt-cache policy gstreamer1.0-pulseaudio gstreamer1.0-alsa
gstreamer1.0-pulseaudio:
Installed: (none)
Candidate: (none)
Version table:
1.22.0-5+deb12u2 -1
500 http://deb.devuan.org/merged daedalus/main amd64 Packages
500 http://deb.devuan.org/merged daedalus-security/main amd64 Packages
gstreamer1.0-alsa:
Installed: (none)
Candidate: (none)
Version table:
1.22.0-3+deb12u4 -1
500 http://deb.devuan.org/merged daedalus/main amd64 Packages
1.22.0-3+deb12u3 -1
500 http://deb.devuan.org/merged daedalus-security/main amd64 Packages ➤ apt install clementine --simulate
NOTE: This is only a simulation!
...
Recommended packages:
gstreamer1.0-alsa | gstreamer1.0-pulseaudio
The following NEW packages will be installed:
clementine liblastfm5-1 libmygpo-qt5-1 ⟡ AI Overview
Post-esoteric surrealism refers to the period of surrealism after World War II, where the movement shifted away from the initial emphasis on the unconscious and dreamlike imagery towards a greater focus on the occult and esoteric aspects of art and philosophy. This shift was influenced by the tumultuous events of the war and the subsequent rise of existentialism and other philosophical movements.
There is a secret method with which to calculate the true dependencies of a Debian package.
➤ man dh_shlibdeps | grep DESCRIPTION -A5 DESCRIPTION dh_shlibdeps is a debhelper program that is responsible for calculating shared library dependencies for packages. This program is merely a wrapper around dpkg-shlibdeps(1) that calls it once for each package listed in the control file, passing it a list of ELF executables and shared libraries it has found.
Let us try it with the advanced music player for semi-deaf and semi-blind audiphiles:
_https://github.com/strawberrymusicplayer/strawberry/releases/download/1.2.11/strawberry_1.2.11-bookworm_amd64.deb
➤ dpkg --info strawberry_1.2.11-bookworm_amd64.deb | grep Depends -B5
Package: strawberry
Version: 1.2.11-bookworm
Architecture: amd64
Maintainer: Jonas Kvinge <jonas@jkvinge.net>
Installed-Size: 13929
Depends: libasound2 (>= 1.0.16), libc6 (>= 2.34), libcdio19 (>= 2.1.0), libchromaprint1 (>= 1.3.2), libebur128-1 (>= 1.1.0), libfftw3-double3 (>= 3.3.10), libgcc-s1 (>= 3.0), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.51.0), libgpod4 (>= 0.7.0), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.6.0), libicu72 (>= 72.1~rc-1~), libmtp9 (>= 1.1.0), libpulse0 (>= 0.99.1), libqt6concurrent6 (>= 6.1.2), libqt6core6 (>= 6.4.0), libqt6dbus6 (>= 6.4.0), libqt6gui6 (>= 6.3.0), libqt6network6 (>= 6.4.0), libqt6sql6 (>= 6.1.2), libqt6widgets6 (>= 6.3.0), libsqlite3-0 (>= 3.6.11), libstdc++6 (>= 11), libtag1v5 (>= 1.11), libx11-6, libqt6sql6-sqlite, qt6-qpa-plugins, gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, gstreamer1.0-alsa, gstreamer1.0-pulseaudio What is obviously wrong is the dependency on "gstreamer1.0-alsa, gstreamer1.0-pulseaudio".
Although it is immoral to deceive the deaf, blind, and demented, Linux users are often fooled about pulseaudio dependencies. Therefore, you have to be paranoid and constantly verify the dependencies of Debian packages.
Open the fakeroot console:
➤ fakeroot
# mkdir debdir
# ls -1
debdir
strawberry_1.2.11-bookworm_amd64.deb
# dpkg-deb -R *.deb debdir
# mkdir debian
# ls -1
debdir
debian
strawberry_1.2.11-bookworm_amd64.deb
# echo -e "Source: strawberry\nPackage: strawberry\nDepends: \${shlibs:Depends}" >> debian/control
# cat debian/control
Source: strawberry
Package: strawberry
Depends: ${shlibs:Depends} Run "dpkg-shlibdeps" to calculate the true dependencies
# dpkg-shlibdeps -v -xstrawberry --ignore-missing-info -e $(find debdir -type f 2>/dev/null) The result of calculations is written into debian/substvars
# cat debian/substvars
shlibs:Depends=libasound2 (>= 1.0.16), libc6 (>= 2.34), libcdio19 (>= 2.1.0), libchromaprint1 (>= 1.3.2), libebur128-1 (>= 1.1.0), libfftw3-double3 (>= 3.3.10), libgcc-s1 (>= 3.0), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.51.0), libgpod4 (>= 0.7.0), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.6.0), libicu72 (>= 72.1~rc-1~), libmtp9 (>= 1.1.0), libpulse0 (>= 0.99.1), libqt6concurrent6 (>= 6.1.2), libqt6core6 (>= 6.4.0), libqt6dbus6 (>= 6.4.0), libqt6gui6 (>= 6.3.0), libqt6network6 (>= 6.4.0), libqt6sql6 (>= 6.1.2), libqt6widgets6 (>= 6.3.0), libsqlite3-0 (>= 3.6.11), libstdc++6 (>= 11), libtag1v5 (>= 1.11), libx11-6 Now, with the help of a text editor, you can simply replace the false "Depends" with the true "Depends".
nano debdir/DEBIAN/control It should look like this:
# cat debdir/DEBIAN/control | grep Depends
Depends: libasound2 (>= 1.0.16), libc6 (>= 2.34), libcdio19 (>= 2.1.0), libchromaprint1 (>= 1.3.2), libebur128-1 (>= 1.1.0), libfftw3-double3 (>= 3.3.10), libgcc-s1 (>= 3.0), libgdk-pixbuf-2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.51.0), libgpod4 (>= 0.7.0), libgstreamer-plugins-base1.0-0 (>= 1.0.0), libgstreamer1.0-0 (>= 1.6.0), libicu72 (>= 72.1~rc-1~), libmtp9 (>= 1.1.0), libpulse0 (>= 0.99.1), libqt6concurrent6 (>= 6.1.2), libqt6core6 (>= 6.4.0), libqt6dbus6 (>= 6.4.0), libqt6gui6 (>= 6.3.0), libqt6network6 (>= 6.4.0), libqt6sql6 (>= 6.1.2), libqt6widgets6 (>= 6.3.0), libsqlite3-0 (>= 3.6.11), libstdc++6 (>= 11), libtag1v5 (>= 1.11), libx11-6 When dependencies are corrected, you can build the package:
# dpkg-deb -b debdir strawberry_1.2.11-devuan_amd64-fixed.deb
dpkg-deb: building package 'strawberry' in 'strawberry_1.2.11-devuan_amd64-fixed.deb'.Exit fakeroot console:
# exit
exitNow, you can install Strawberry with true dependencies:
sudo dpkg -i strawberry_1.2.11-devuan_amd64-fixed.deb The question remains: what is the origin of pseudo-dependencies in Debian packages?
Obviously, they are man-made rather than naturally produced by invisible magic forces.
Debian packages can be build manually in an old-fashioned way (e.g., with dpkg-deb), without the help of the "debhelper". However, the Debian packaging system is also capable of producing pseudo-dependencies. You can simply add such dependencies into debian/control, for example:
Depends:
${shlibs:Depends},
${misc:Depends},
pulseaudioThen, build the package with "dpkg-buildpackage -us -uc -b". It will produce a Debian package which depends on pulseaudio.
@stopAI
It should be "clearly noticeable", because, the fftrate plugin (if it is correctly configured) replaces ALSA resamplers with the magic fftrate real-time codec.
See also:
_https://dev1galaxy.org/viewtopic.php?id=6593
By the way, have you noticed a secret command "dh_auto_build --list",
and a trick with dpkg-shlibdeps
_https://dev1galaxy.org/viewtopic.php?id=7214
@stopAI
I didn't expect that anyone would be interested in Debian packaging.
Have you tried to compile fftrate?
The updated manual is here:
_https://dev1galaxy.org/viewtopic.php?id=7142
The user manual is here:
_https://dev1galaxy.org/viewtopic.php?id=6644
It will improve sound quality of your pipewire.
You can test it with and without fftrate. The difference should be obvious.
Although, of course, it will be much better without pipewire and pulseaudio.
To disable fftrate, you can simply remove/rename ~/.asoundrc
And, by renaming, you can enable it again.
WhiteSur GTK Theme: A macOS like theme for Linux GTK Desktops
_https://github.com/vinceliuice/WhiteSur-gtk-theme
_https://aur.archlinux.org/packages/whitesur-gtk-theme-git
_https://aur.archlinux.org/packages/whitesur-icon-theme-git
_https://aur.archlinux.org/packages/whitesur-cursor-theme-git
Build-Deps:
sudo apt install git fakeroot sassc libglib2.0-dev-bin libglib2.0-dev libxml2-utils imagemagick dialog optipng inkscape mkdir Build_Sur
cd Build_Sur Open fakeroot console:
fakerootDownload sourcedir:
git clone https://github.com/vinceliuice/WhiteSur-gtk-theme.git --depth=1 Install "debdir":
install -dm755 debdir/usr/share/themes
install -dm755 debdir/usr/share/docs/whitesur-gtk-theme
install -dm755 debdir/usr/share/icons # ls -1
debdir
WhiteSur-gtk-theme cd WhiteSur-gtk-theme Install WhiteSur Dark theme to debdir
./install.sh -d ../debdir/usr/share/themes -c Dark -t green -o solid # ls -1 ../debdir/usr/share/themes
WhiteSur-Dark-solid-green
WhiteSur-Dark-solid-green-hdpi
WhiteSur-Dark-solid-green-xhdpiInstall Firefox theme to debdir:
cp -r src/other/firefox ../debdir/usr/share/docs/whitesur-gtk-theme cd .. #ls -1
debdir
WhiteSur-gtk-themeDownload WhiteSur icon theme sourcedir:
git clone https://github.com/vinceliuice/WhiteSur-icon-theme.git --depth=1 # ls -1
debdir
WhiteSur-gtk-theme
WhiteSur-icon-themeInstall icon theme to debdir:
./WhiteSur-icon-theme/install.sh -d "$(pwd)/debdir/usr/share/icons" -t green # ls -1
debdir
WhiteSur-gtk-theme
WhiteSur-icon-theme Download WhiteSur-cursors sourcedir:
git clone https://github.com/vinceliuice/WhiteSur-cursors.git --depth 1 # ls -1
debdir
WhiteSur-cursors
WhiteSur-gtk-theme
WhiteSur-icon-theme Build WhiteSur-cursors
cd WhiteSur-cursors
./build.sh Install WhiteSur-cursors to debdir:
cp -pr dist ../debdir/usr/share/icons/WhiteSur-cursors # cd ..
# ls -1
debdir
WhiteSur-cursors
WhiteSur-gtk-theme
WhiteSur-icon-theme Configure WhiteSur Dark theme:
IconTheme=WhiteSur-green-dark
CursorTheme=WhiteSur-cursors It should look like this:
# cat debdir/usr/share/themes/WhiteSur-Dark-solid-green/index.theme
[Desktop Entry]
Type=X-GNOME-Metatheme
Name=WhiteSur-Dark-solid-green
Comment=A MacOS BigSur like Gtk+ theme based on Elegant Design
Encoding=UTF-8
[X-GNOME-Metatheme]
GtkTheme=WhiteSur-Dark-solid-green
MetacityTheme=WhiteSur-Dark-solid-green
IconTheme=WhiteSur-green-dark
CursorTheme=WhiteSur-cursors
ButtonLayout=close,minimize,maximize:menu The "Name=" of WhiteSur-cursors should also be fixed:
# cat debdir/usr/share/icons/WhiteSur-cursors/index.theme
[Icon Theme]
Name=WhiteSur-cursors Make a template for Debian package
install -vm0755 -d debdir/DEBIAN Create DEBIAN/control with a text editor:
nano debdir/DEBIAN/control For example:
# cat debdir/DEBIAN/control
Package: whitesur-gtk-theme
Version: 2025.05.29-1
Architecture: all
Maintainer: Devuan
Installed-Size: 52.2 kB
Depends: libxml2-utils, imagemagick, dialog, optipng
Section: x11
Priority: optional
Homepage: https://github.com/vinceliuice/WhiteSur-gtk-theme
Description: MacOS Big Sur like theme for MATE Desktop Generate md5sums
cd debdir
find . -type f -not -path "./DEBIAN/*" -exec md5sum {} + | sort -k 2 | sed 's/\.\/\(.*\)/\1/' > DEBIAN/md5sums
cd ..
chmod 0644 -- debdir/DEBIAN/md5sums Make a Debian package:
dpkg-deb -b debdir whitesur-gtk-theme_2025.05.29-1_all.deb Exit fakeroot
# exit
exitInstall WhiteSur-Dark theme
sudo dpkg -i whitesur-gtk-theme_2025.05.29-1_all.deb Enable WhiteSur-Dark theme
mate-appearance-propertiesTheme ➔ WhiteSur-Dark-solid-greenConfigure WhiteSur theme for "greeter" (display-manager)
➤ cat /etc/X11/default-display-manager
/usr/sbin/lightdm
➤ sudo lightdm-gtk-greeter-settings[ArchWiki] LightDM
_https://wiki.archlinux.org/title/LightDM
Tweaks:
sudo apt install mate-tweak
mate-tweak
sudo apt install vivid
man vivid
cat ~/.bashrc | grep alias
cat ~/.bashrc | grep less$ cat ~/.bashrc | grep LESS
export LESS='-R --use-color -Dd+g$Du+b$'How to remove WhiteSur Dark theme:
sudo apt remove whitesur-gtk-theme@greenjeans
If you are going to compile X-apps, you may try first to compile XED.
If it works, you may try to compile them all.
@greenjeans
Do you really want to be busy with X-Apps?
You may need to compile a lot of dependencies.
This is what X-Apps are about.
The only X-App which is easy to compile is XED
_https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=xed-git
XED is very similar to Pluma. You may not need it.
Perhaps, you may better try a sort of WhiteSur (dark theme)
_https://github.com/vinceliuice/WhiteSur-gtk-theme
Portable static Muon (with embedded samu) is available here:
_https://muon.build/
_https://muon.build/releases/v0.5.0/muon-v0.5.0-amd64-linux$ file muon-v0.5.0-amd64-linux muon-v0.5.0-amd64-linux: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=1a2a3022413581300d66c86f02329ed4aa782022, stripped
The procedure of compiling is very similar to that of meson. The main difference is that muon may refuse to search for headers, unless PKG_CONFIG_PATH is set. Although it might be very inconvenient for the slaves of pulseaudio (because of progressive dementia caused by pulseaudio), it provides the freedom to decide which headers should be used.
Dementia is progressive. This means signs and symptoms may be relatively mild at first but they get worse with time. Dementia affects everyone differently, however it can be helpful to think of dementia progressing in 'three stages'.
_https://www.alzheimers.org.uk/about-dementia/symptoms-and-diagnosis/how-dementia-progresses/progression-stages-dementia
⟡ AI Overview
Engaging in intellectually stimulating activities may offer a degree of protection against dementia, particularly for individuals who may have otherwise lower levels of education or occupation. While more research is needed, evidence suggests that activities like reading, playing board games, musical instrument playing, journaling, and crossword puzzles are associated with a reduced risk of developing dementia.
There is a belief that compiling with muon may protect pulseaudio users against Alzheimer's disease (AD). That is why, perhaps, muon is available even in Debian repositories (a very old version, of course).
Because of progressive dementia, it might be necessary to explain how to set PKG_CONFIG_PATH. Otherwise it might be a very difficult problem to solve.
PKG_CONFIG_PATH can be set with a secret command, for example:
export PKG_CONFIG_PATH="$HOME/.local/lib/pkgconfig:$(pkgconf --variable pc_path pkgconf)" $ cat $HOME/.local/lib/pkgconfig/GL.pc
prefix=/usr
includedir=${prefix}/include
libdir=${prefix}/lib/x86_64-linux-gnu
Name: GL
Description: Legacy OpenGL and GLX library and headers.
Version: 1.2
Libs: -L${libdir} -lGL
Cflags: -I${includedir}/GL GL.pc is needed for Audacious-plugins (OpenGL Spectrum Analyzer).
The "meson_options.txt" of Audacious and Audacious-plugins can be configured in the same way as it was done for "meson+samu" (see above). Audacious-plugins should be patched, of course (as it was described above). In any case, Audacious should be compiled and installed BEFORE the compilation Audacious-plugins. And, of course, the Debian packages can be made in exactly the same way.
Audacious:
1. Setup the build system
cd audacious
muon setup -Dprefix=/usr -Ddefault_library=shared -Dbuildtype=release build 2. Compile
muon samu -C build 3. Install to a folder "debdir"
cd build
DESTDIR="../../debdir" muon install
cd ../../
install -vDm644 audacious/contrib/audacious.appdata.xml -t "debdir/usr/share/metainfo"
install -vDm644 audacious/COPYING -t "debdir/usr/share/licenses/audacious" Audacious-plugins:
1. Setup the build system
cd audacious-plugins
muon setup -Dprefix=/usr -Ddefault_library=shared -Dbuildtype=release build 2. Compile
muon samu -C build 3. Install to a folder "debdir"
cd build
DESTDIR="../../debdir" muon install
cd ../../
install -vDm644 audacious-plugins/COPYING -t "debdir/usr/share/licenses/audacious-plugins" What is:
$ pkgconf --libs --cflags gl
-lGL
$ pkgconf --libs --cflags GL
Package GL was not found in the pkg-config search path.
Perhaps you should add the directory containing `GL.pc'
to the PKG_CONFIG_PATH environment variable
Package 'GL', required by 'virtual:world', not found What should be:
$ pkgconf --libs --cflags gl
-I/usr/include/GL -lGL
$ pkgconf --libs --cflags GL
-I/usr/include/GL -lGLOtherwise, you may get errors like this:
dependency GL found: NO
OpenGL Spectrum Analyzer: falseA workaround might be obvious, if you do not suffer from dementia.
What might be needed is "/usr/include/" in a sort of 'virtual:path' in the so-called 'virtual:world'. This might be an esoteric problem.
In any case, a simple workaround fixed the problem. Now it looks like this:
dependency GL version: 1.2 found: YES
OpenGL Spectrum Analyzer: true However, opengl.pc might also be wrong:
$ pkgconf --libs --cflags opengl
-lOpenGL It seems that "gtk+-3.0" was already fixed:
$ pkgconf --libs --cflags gtk+-3.0
-I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/x86_64-linux-gnu -I/usr/include/gio-unix-2.0 -I/usr/include/GL -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -pthread -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 Portable Meson is available here:
_https://github.com/mesonbuild/meson
arch-meson is available here:
_https://aur.archlinux.org/cgit/aur.git/snapshot/meson-git.tar.gz
samurai is easy to compile
_https://dev1galaxy.org/viewtopic.php?id=7203
Install Build_Deps, compilers and utilities:
sudo apt-get install build-essentials apt-file fakeroot git libglib2.0-dev libgtk-3-dev libjson-glib-dev libopusfile-dev
sudo apt install libadplug-dev adplug-utils libjson-glib-dev libopusfile-dev libasound2-dev libavcodec-dev libavformat-dev libavutil-dev libbinio-dev libbs2b-dev libcairo2-dev libcddb2-dev libcdio-cdda-dev libcue-dev libcurl4-gnutls-dev libdbus-glib-1-dev libfaad-dev libflac-dev libfluidsynth-dev libgtk2.0-dev libjack-dev liblircclient-dev libmms-dev libmodplug-dev libmp3lame-dev libmpg123-dev libneon27-gnutls-dev libnotify-dev libogg-dev libopenmpt-dev libsdl2-dev libsidplayfp-dev libsndfile1-dev libsndio-dev libtagc0-dev libvorbis-dev libwavpack-dev libxcomposite-dev libxml2-devDownload the source code
mkdir Build1
cd Build1
git clone https://github.com/audacious-media-player/audacious.git --depth 1 Configure the project, for example:
$ cat audacious/meson_options.txt
option('dbus', type: 'boolean', value: true,
description: 'Whether D-Bus support is enabled')
option('qt', type: 'boolean', value: false,
description: 'Whether Qt support is enabled')
option('qt5', type: 'boolean', value: false,
description: 'Whether Qt 5 support is enabled')
option('gtk', type: 'boolean', value: true,
description: 'Whether GTK support is enabled')
option('gtk2', type: 'boolean', value: false,
description: 'Whether GTK 2 support is enabled')
option('libarchive', type: 'boolean', value: false,
description: 'Whether libarchive support is enabled')
option('buildstamp', type: 'string', value: 'Devuan 5 Daedalus',
description: 'Allows to set a custom build stamp')
option('valgrind', type: 'boolean', value: false,
description: 'Whether Valgrind analysis support is enabled') 1. Setup the build system
arch-meson audacious build 2. Compile
samu -C build 3. Install to debdir
DESTDIR=../debdir samu -C build install
install -vDm644 audacious/contrib/audacious.appdata.xml -t "debdir/usr/share/metainfo"
install -vDm644 audacious/COPYING -t "debdir/usr/share/licenses/audacious" Make a template
mkdir debian
echo -e "Source: audacious\nPackage: audacious\nDepends: \${shlibs:Depends}" >> debian/control $ cat debian/control
Source: audacious
Package: audacious
Depends: ${shlibs:Depends} Run "dpkg-shlibdeps" to calculate dependencies
dpkg-shlibdeps -v -xaudacious -ldebdir/usr/lib --ignore-missing-info -e $(find debdir/usr -type f 2>/dev/null) $ cat debian/substvars
shlibs:Depends=libc6 (>= 2.35), libcairo2 (>= 1.2.4), libgcc-s1 (>= 3.3.1), libgdk-pixbuf-2.0-0 (>= 2.25.2), libglib2.0-0 (>= 2.37.3), libgtk-3-0 (>= 3.21.5), libpango-1.0-0 (>= 1.14.0), libstdc++6 (>= 12) install -vm0755 -d debdir/DEBIAN Create DEBIAN/control with a text editor, for example:
$ cat debdir/DEBIAN/control
Package: audacious
Version: 4.5-devel-1
Architecture: amd64
Maintainer: Devuan
Installed-Size: 2451
Depends: libc6 (>= 2.35), libcairo2 (>= 1.2.4), libgcc-s1 (>= 3.3.1), libgdk-pixbuf-2.0-0 (>= 2.25.2), libglib2.0-0 (>= 2.37.3), libgtk-3-0 (>= 3.21.5), libpango-1.0-0 (>= 1.14.0), libstdc++6 (>= 12)
Recommends: unzip
Suggests: audacious-plugins
Conflicts: audacious-dev, libaudcore5t64, libaudgui6, libaudqt3, libaudtag3t64
Provides: audacious-dev, libaudcore5t64, libaudgui6, libaudqt3, libaudtag3t64
Section: sound
Priority: optional
Homepage: https://www.audacious-media-player.org/
Description: small and fast audio player which supports lots of formats
Audacious is a fork of beep-media-player which supports Winamp skins
and many codecs.
.
In the default install, the following codecs are supported:
.
* MP3
* Ogg Vorbis / Theora
* AAC and AAC+
* FLAC
* ALAC
* Windows Media (WMA)
* WAVE
.
Additionally, Audacious is extendable through plugins, and contains
other useful features like LIRC support. Support for many more codecs
can also be added through plugins.
Tag: field::arts, implemented-in::c, interface::graphical, interface::x11,
role::program, scope::application, sound::player, uitoolkit::gtk,
use::learning, use::playing, works-with-format::mp3,
works-with-format::oggvorbis, works-with::audio, x11::application Generate DEBIAN/md5sums
cd debdir
find . -type f -not -path "./DEBIAN/*" -exec md5sum {} + | sort -k 2 | sed 's/\.\/\(.*\)/\1/' > DEBIAN/md5sums
cd ..
chmod 0644 -- debdir/DEBIAN/md5sums Make Debian package
$ fakeroot -- dpkg-deb -b debdir audacious_4.5-devel-1_amd64.deb
dpkg-deb: building package 'audacious' in 'audacious_4.5-devel-1_amd64.deb'. Install
sudo dpkg -i audacious_4.5-devel-1_amd64.deb sidplay-rom-paths.patch is available here:
_https://gitlab.archlinux.org/archlinux/packaging/packages/audacious-plugins/-/raw/main/sidplay-rom-paths.patch
Download the source code and the patch
mkdir Build1p
cd Build1p
git clone https://github.com/audacious-media-player/audacious-plugins.git --depth 1 $ ls -1
audacious-plugins
sidplay-rom-paths.patch Apply the patch:
cd audacious-plugins
patch -Np1 -i ../sidplay-rom-paths.patch
cd .. Edit "meson_options.txt" with a text editor
nano audacious-plugins/meson_options.txt Disable QT6, enable OSS4 (if it is installed), disable pulse and unwanted resamplers. For example:
# GUI toolkits
option('qt', type: 'boolean', value: false,
# output plugins
option('oss4', type: 'boolean', value: true,
description: 'Whether OSS4 support is enabled')
option('pipewire', type: 'boolean', value: false,
option('pulse', type: 'boolean', value: false,
option('qtaudio', type: 'boolean', value: false,
option('resample', type: 'boolean', value: false,
option('soxr', type: 'boolean', value: false,
option('speedpitch', type: 'boolean', value: false, 1. Setup the build system
arch-meson audacious-plugins build 2. Compile
samu -C build 3. Install to "debdir"
DESTDIR=../debdir samu -C build install
install -vDm644 audacious-plugins/COPYING -t "debdir/usr/share/licenses/audacious-plugins"
$ ls -1
audacious-plugins
build
debdir
sidplay-rom-paths.patch Make a template
mkdir debian
echo -e "Source: audacious-plugins\nPackage: audacious-plugins\nDepends: \${shlibs:Depends}" >> debian/control $ cat debian/control
Source: audacious-plugins
Package: audacious-plugins
Depends: ${shlibs:Depends} Run "dpkg-shlibdeps" to calculate dependencies
dpkg-shlibdeps -v -xaudacious-plugins -ldebdir/usr/lib --ignore-missing-info -e $(find debdir/usr -type f 2>/dev/null) $ cat debian/substvars
shlibs:Depends=libadplug-2.3.3-0 (>= 2.3.3+dfsg), libasound2 (>= 1.0.16), libavcodec59 (>= 7:5.0), libavformat59 (>= 7:5.0), libavutil57 (>= 7:5.0), libbinio1v5 (>= 1.4+dfsg1), libbs2b0 (>= 3.1.0+dfsg), libc6 (>= 2.35), libcairo2 (>= 1.10.0), libcddb2 (>= 1.3.2), libcdio-cdda2 (>= 10.2+2.0.0), libcdio19 (>= 2.1.0), libcue2, libcurl3-gnutls (>= 7.16.2), libfaad2 (>= 2.7), libflac12 (>= 1.3.0), libfluidsynth3 (>= 2.0.5), libgcc-s1 (>= 3.3.1), libgdk-pixbuf-2.0-0 (>= 2.22.0), libgl1, libglib2.0-0 (>= 2.37.3), libgtk-3-0 (>= 3.21.5), libjack-jackd2-0 (>= 1.9.10+20150825) | libjack-0.125, libjson-glib-1.0-0 (>= 1.5.2), liblirc-client0, libmms0 (>= 0.4), libmodplug1 (>= 1:0.8.8.5), libmp3lame0 (>= 3.100), libmpg123-0 (>= 1.28.0), libneon27-gnutls, libnotify4 (>= 0.7.0), libogg0 (>= 1.1.0), libopenmpt0 (>= 0.3.0), libopusfile0 (>= 0.5), libpango-1.0-0 (>= 1.22.0), libpangocairo-1.0-0 (>= 1.14.0), libsdl2-2.0-0 (>= 2.0.12), libsidplayfp6 (>= 2.4.2), libsndfile1 (>= 1.0.20), libsndio7.0 (>= 1.9.0), libstdc++6 (>= 12), libvorbis0a (>= 1.2.0), libvorbisenc2 (>= 1.1.2), libvorbisfile3 (>= 1.1.2), libwavpack1 (>= 4.40.0), libx11-6, libxcomposite1 (>= 1:0.4.5), libxml2 (>= 2.7.4), libxrender1, zlib1g (>= 1:1.1.4) install -m0755 -d debdir/DEBIANCreate DEBIAN/control, for example:
$ cat debdir/DEBIAN/control
Package: audacious-plugins
Version: 4.5-devel-1
Architecture: amd64
Maintainer: Devuan
Installed-Size: 7313
Depends: libadplug-2.3.3-0 (>= 2.3.3+dfsg), libasound2 (>= 1.0.16), libavcodec59 (>= 7:5.0), libavformat59 (>= 7:5.0), libavutil57 (>= 7:5.0), libbinio1v5 (>= 1.4+dfsg1), libbs2b0 (>= 3.1.0+dfsg), libc6 (>= 2.35), libcairo2 (>= 1.10.0), libcddb2 (>= 1.3.2), libcdio-cdda2 (>= 10.2+2.0.0), libcdio19 (>= 2.1.0), libcue2, libcurl3-gnutls (>= 7.16.2), libfaad2 (>= 2.7), libflac12 (>= 1.3.0), libfluidsynth3 (>= 2.0.5), libgcc-s1 (>= 3.3.1), libgdk-pixbuf-2.0-0 (>= 2.22.0), libgl1, libglib2.0-0 (>= 2.37.3), libgtk-3-0 (>= 3.21.5), libjack-jackd2-0 (>= 1.9.10+20150825) | libjack-0.125, libjson-glib-1.0-0 (>= 1.5.2), liblirc-client0, libmms0 (>= 0.4), libmodplug1 (>= 1:0.8.8.5), libmp3lame0 (>= 3.100), libmpg123-0 (>= 1.28.0), libneon27-gnutls, libnotify4 (>= 0.7.0), libogg0 (>= 1.1.0), libopenmpt0 (>= 0.3.0), libopusfile0 (>= 0.5), libpango-1.0-0 (>= 1.22.0), libpangocairo-1.0-0 (>= 1.14.0), libsdl2-2.0-0 (>= 2.0.12), libsidplayfp6 (>= 2.4.2), libsndfile1 (>= 1.0.20), libsndio7.0 (>= 1.9.0), libstdc++6 (>= 12), libvorbis0a (>= 1.2.0), libvorbisenc2 (>= 1.1.2), libvorbisfile3 (>= 1.1.2), libwavpack1 (>= 4.40.0), libx11-6, libxcomposite1 (>= 1:0.4.5), libxml2 (>= 2.7.4), libxrender1, zlib1g (>= 1:1.1.4)
Recommends: audacious (>= 4.5-devel)
Conflicts: audacious-plugins-data
Provides: audacious-plugins-data
Section: sound
Priority: optional
Homepage: https://audacious-media-player.org/
Description: Base plugins for audacious
Audacious is a fork of beep-media-player which supports winamp skins
and many codecs.
.
In the default install, the following codecs are supported:
.
* MP3
* Ogg Vorbis
* AAC and AAC+
* FLAC
* Windows Media (WMA)
* Many module formats and much more!
.
Additionally, Audacious is extendable through plugins, and contains
other useful features like LIRC support.
.
This package contains the plugins for Audacious.
* Audio CD reading
* MPEG support (mp3)
* Ogg Vorbis support
* Windows Media support (WMA)
* AAC support
* FLAC support
* ALAC support
* WAVE support
* ALSA output
* OSS4 output
* Disk writer output
* And many more! Generate DEBIAN/md5sums
cd debdir
find . -type f -not -path "./DEBIAN/*" -exec md5sum {} + | sort -k 2 | sed 's/\.\/\(.*\)/\1/' > DEBIAN/md5sums Make a Debian package
$ fakeroot -- dpkg-deb -b debdir audacious-plugins_4.5-devel-1_amd64.deb
dpkg-deb: building package 'audacious-plugins' in 'audacious-plugins_4.5-devel-1_amd64.deb'. Install
sudo dpkg -i audacious-plugins_4.5-devel-1_amd64.deb $ audacious -v
Audacious 4.5-devel (Devuan 5 Daedalus) DEBUG
$ audacious -VV
...
INFO ../audacious/src/libaudcore/output.cc:270 [setup_output]:
Setup output, format 11, 2 channels, 192000 Hz.
DEBUG ../audacious-plugins/src/oss4/oss.cc:219 [open_audio]:
Opening audio.
DEBUG ../audacious-plugins/src/oss4/oss.cc:144 [open_device]:
Enabled exclusive mode.
DEBUG ../audacious-plugins/src/oss4/oss.cc:61 [set_format]:
Audio format: AFMT_S32_LE, sample rate: 192000Hz, number of channels: 2.
DEBUG ../audacious-plugins/src/oss4/oss.cc:68 [set_format]:
Disabled format conversions made by the OSS software. The updated installation manual for Petrov's fftrate ALSA plugin is here:
_https://dev1galaxy.org/viewtopic.php?id=7142
Thanks to the magic patch provided by the Arch Linux community, the fftrate ALSA plugin can now be compiled with gcc-12 (Devuan 5) and newer versions of GCC available in Arch Linux and Debian repositories. You do not need to install gcc-10 from the oldstable repository.
samurai is a ninja-compatible build tool written in C99 with a focus on simplicity, speed, and portability.
_https://github.com/michaelforney/samurai
samurai - Arch Linux
_https://archlinux.org/packages/extra/x86_64/samurai/
_https://gitlab.archlinux.org/archlinux/packaging/packages/samurai
_https://gitlab.archlinux.org/archlinux/packaging/packages/samurai/-/blob/main/PKGBUILD?ref_type=heads
Install build-essential, etc.
sudo apt install build-essential debhelper dh_make fakeroot git sed tree quilt Download sourcedir:
mkdir BUILD_SAMU
cd BUILD_SAMU
git clone https://github.com/michaelforney/samurai.git --depth 1 Install a template:
cd samurai
export DEBFULLNAME="John Frum"
dh_make --createorig -p samurai_1.9.0 -c apache -e my@mail.org -s $ dh_auto_build --list | grep Auto-selected
Auto-selected: makefile Create debian/samurai.install
echo -e 'LICENSE usr/share/licenses/samurai' >> debian/samurai.install $ cat debian/samurai.install
LICENSE usr/share/licenses/samurai Append 7 lines to debian/rules with echo command
echo -e "# For HTML docs are missing\nexport DH_ALWAYS_EXCLUDE=doc:doc-base\n# Patching Makefile with sed\noverride_dh_auto_build:\n\tsed -i -e 's/usr\/local/usr/g' Makefile\n\tdh_auto_build --\n" >> debian/rules $ cat -A debian/rules |grep Patching -A5 -B2
# For HTML docs are missing$
export DH_ALWAYS_EXCLUDE=doc:doc-base$
# Patching Makefile with sed$
override_dh_auto_build:$
^Ised -i -e 's/usr\/local/usr/g' Makefile$
^Idh_auto_build --$
$ $ tail -7 debian/rules
# For HTML docs are missing
export DH_ALWAYS_EXCLUDE=doc:doc-base
# Patching Makefile with sed
override_dh_auto_build:
sed -i -e 's/usr\/local/usr/g' Makefile
dh_auto_build --Edit debian/control
nano debian/control$ cat debian/control
Source: samurai
Section: devel
Priority: optional
Maintainer: John Frum <my@mail.org>
Rules-Requires-Root: no
Build-Depends:
debhelper-compat (= 13),
Standards-Version: 4.6.2
Homepage: https://github.com/michaelforney/samurai
#Vcs-Browser: https://salsa.debian.org/debian/samurai
#Vcs-Git: https://salsa.debian.org/debian/samurai.git
Package: samurai
Architecture: amd64
Depends:
${shlibs:Depends},
${misc:Depends},
Description: samurai is a ninja-compatible build tool written in C99
• with a focus on simplicity, speed, and portability.
• samurai implements the ninja build language through version 1.9.0 except for MSVC dependency handling (deps = msvc).
• It uses the same format for .ninja_log and .ninja_deps as ninja, currently version 5 and 4 respectively.
• It is feature-complete and supports most of the same options as ninja. Create Debian source package
dpkg-source -b . Build Debian binary package (deb)
dpkg-buildpackage -us -uc -b $ ls -1 ../*.deb
../samurai_1.9.0-1_amd64.deb
../samurai-dbgsym_1.9.0-1_amd64.deb Install samurai
sudo dpkg -i ../samurai_1.9.0-1_amd64.deb $ samu --version
1.9.0
$ man samu Build-Depends:
$ objdump -p /usr/bin/samu | grep NEEDED
NEEDED libc.so.6
$ apt-file find /usr/lib/x86_64-linux-gnu/libc.so | grep dev
libc6-dev: /usr/lib/x86_64-linux-gnu/libc.so Now you can build wxMaxima with the help of samurai.
A static muon is not easy to compile on Devuan, but the newest version of static muon executable with embedded samurai is already available for download.
$ ldd muon-v0.5.0-amd64-linux
not a dynamic executable
$ file muon-v0.5.0-amd64-linux
muon-v0.5.0-amd64-linux: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=1a2a3022413581300d66c86f02329ed4aa782022, stripped Enable portable CMake 4.0.2
export PATH="$HOME/.CTools/cmake-4.0.2/bin:$PATH"$ cmake --version
cmake version 4.0.21. Generate the Buildsystem
cmake -S wxmaxima -B build -G Ninja -DCMAKE_BUILD_TYPE="Release" -DCPACK_DEBIAN_PACKAGE_MAINTAINER=Daedalus -DCMAKE_INSTALL_PREFIX='/usr' -DwxWidgets_CONFIG_EXECUTABLE=/usr/bin/wx-config -DWXM_INTERPROCEDURAL_OPTIMIZATION=ON -Wno-dev $ ls -1
build
wxmaxima
$ ls build | grep ninja
build.ninja 2. Compile wxMaxima with samu
samu -C build3. Make a Debian package with CPack
$ ls build | grep Config.cmake
CPackConfig.cmake
CPackSourceConfig.cmake cpack --config build/CPackConfig.cmake -G DEB $ cpack --config build/CPackConfig.cmake -G DEB
CPack: Create package using DEB
CPack: Install projects
CPack: - Install project: wxMaxima []
CPack: Create package
CPackDeb: - Generating dependency list
CPack: - package: /home/.../wxmaxima_25.04.0-1_amd64.deb generated.$ ls *.deb
wxmaxima_25.04.0-1_amd64.deb Install wxMaxima
sudo dpkg -i wxmaxima_25.04.0-1_amd64.deb$ wxmaxima --version
wxMaxima 25.04.0 (Git version: 6bc13e5)I want to thank you, the sound is really good, everything works perfectly !
If you enjoy it, you may say thanks to the creator of the magic fftrate codec, Sergei Petrov.
_https://github.com/PetrovSE/fftrate
There is a belief that fftrate may cure deafness. It may not always work. If it does not, the victims of pulseaudio may not have any chance to regain hearing loss. It seems impossible to cure deafness: "there are no known treatments to restore hearing, because auditory hair cells in mammals, unlike those in birds or fish, do not regenerate once lost."
_https://www.hsci.harvard.edu/major-step-toward-treatment-leading-form-hearing-loss
There might be obstacles on the road to freedom. You may get problems like this:
$ dpkg-buildpackage -b
...
fatal error: toml++/toml.hpp: No such file or directory
2 | #include "toml++/toml.hpp" To overcome this obstacle you can simply borrow "toml++/toml.hpp" from Debian testing and compile the package you need on Devuan stable. For some strange reason, this method usually works.
You can find "toml++/toml.hpp" in a Debian (testing=trixie) package:
Package: libtomlplusplus-dev (3.4.0+ds-0.2 and others)
_https://packages.debian.org/trixie/libtomlplusplus-dev
$ tree -L 4 libtomlplusplus-dev_3.4.0+ds-0.2+b1_amd64
libtomlplusplus-dev_3.4.0+ds-0.2+b1_amd64
├── DEBIAN
│ ├── control
│ └── md5sums
└── usr
├── include
│ └── toml++
│ ├── impl
│ ├── toml.h
│ └── toml.hpp
├── lib
│ └── x86_64-linux-gnu
│ ├── cmake
│ ├── libtomlplusplus.so -> libtomlplusplus.so.3
│ └── pkgconfig
└── share
├── doc
│ └── libtomlplusplus-dev
└── doc-base
└── libtomlplusplus-dev.tomlplusplus You can download this package, and extract "usr" to a folder like this:
$HOME/.CTools/LIBS/
$HOME/.CTools/LIBS/usr/include/toml++/toml.hpp Then you can add "$HOME/.CTools/LIBS/usr/include" to $CPLUS_INCLUDE_PATH
The secret knowledge is here:
_https://gcc.gnu.org/onlinedocs/cpp/Environment-Variables.html
It is very simple:
$ echo $CPLUS_INCLUDE_PATH
# It is empty
$ export CPLUS_INCLUDE_PATH="$HOME/.CTools/LIBS/usr/include" Verify the INCLUDE_PATH for g++ with a secret command:
echo | gcc -Wp,-v -xc++ - -fsyntax-only$ echo | gcc -Wp,-v -xc++ - -fsyntax-only
ignoring duplicate directory "/usr/include/x86_64-linux-gnu/c++/12"
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/12/include-fixed"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/12/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/home/<YOUR USER NAME>/.CTools/LIBS/usr/include
/usr/include/c++/12
/usr/include/x86_64-linux-gnu/c++/12
/usr/include/c++/12/backward
/usr/lib/gcc/x86_64-linux-gnu/12/include
/usr/local/include
/usr/include/x86_64-linux-gnu
/usr/include
End of search list. Now everything works. The "fatal error" had gone away.
The question remains: why does this method work. It looks like they do not update software on Debian stable. They have restricted resources, and, of course, they have to fix problems caused by systemd, pipewire and pulseaudio.