You are not logged in.
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
exit
Now, 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},
pulseaudio
Then, 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:
fakeroot
Download 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-xhdpi
Install Firefox theme to debdir:
cp -r src/other/firefox ../debdir/usr/share/docs/whitesur-gtk-theme
cd ..
#ls -1
debdir
WhiteSur-gtk-theme
Download WhiteSur icon theme sourcedir:
git clone https://github.com/vinceliuice/WhiteSur-icon-theme.git --depth=1
# ls -1
debdir
WhiteSur-gtk-theme
WhiteSur-icon-theme
Install 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
exit
Install WhiteSur-Dark theme
sudo dpkg -i whitesur-gtk-theme_2025.05.29-1_all.deb
Enable WhiteSur-Dark theme
mate-appearance-properties
Theme ➔ WhiteSur-Dark-solid-green
Configure 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 -lGL
Otherwise, you may get errors like this:
dependency GL found: NO
OpenGL Spectrum Analyzer: false
A 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-dev
Download 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/DEBIAN
Create 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.2
1. 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 build
3. 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.
Knowledge and ignorance—
a man who knows them both together,
Passes beyond death by ignorance,
and by knowledge attains immortality.
Isha Upanishad, Verse 12
The road to freedom is short and straightforward. Read PKGBUILs of AUR packages, and do the same on Devuan.
It doesn't always work. Sometimes it is much better with Debian sources, if you know the secret commands. Debian packaging is a sacred ritual, not a secular one. It requires initiation into secret knowledge. If you are not initiated, you are doomed to dwell in ignorance and doubt. In essence, initiation is a rite of passage marking entrance into a sort of esoteric society. In particular, it signifies a transformation in which the initiate is 'reborn' into a new role.
Step 1: Install a secret package
sudo apt-get install packaging-dev
Step 2: Download the source you need. For example:
Debian testing (Trixie)
_https://packages.debian.org/source/testing/gnuplotSource Package: gnuplot (6.0.2+dfsg1-1)
Debian Package Source Repository (Browsable)
https://salsa.debian.org/science-team/gnuplot
mkdir BUILD_GIT
cd BUILD_GIT
git clone https://salsa.debian.org/science-team/gnuplot.git --depth 1
$ ls
gnuplot
$ du -sh *
17M gnuplot
Step 3: Install "Build-Depends"
cd gnuplot
mk-build-deps
$ ls *.deb
gnuplot-build-deps_6.0.2+dfsg1-1_all.deb
Install gnuplot-build-deps*.deb
sudo dpkg -i gnuplot-build-deps_6.0.2+dfsg1-1_all.deb
You may notice a problem:
$ sudo dpkg -i gnuplot-build-deps_6.0.2+dfsg1-1_all.deb
...
dpkg: error processing package gnuplot-build-deps (--install):
dependency problems - leaving unconfigured
Fix it with a magic command:
sudo apt -f install
It may remove "emacs-gtk" and install "emacs-nox" instead. You can reinstall it later, or remove them both.
Emacs - Installation options on Linux and Lucid Emacs vs. XEmacs
_https://youtu.be/ugFtz7XOOWU?t=25s
$ mv -v gnuplot-build-deps_6.0.2+dfsg1-1_all.deb ../
Step 4: Prepare the source
Execute secret commands:
export QUILT_PATCHES=debian/patches
quilt push -a
The output on terminal should look like this:
$ quilt push -a
Applying patch 04_fix_libexecdir.diff
patching file src/Makefile.am
...
Applying patch 50_no-webp_figures-in-documentation.patch
patching file docs/Makefile.am
Now at patch 50_no-webp_figures-in-documentation.patch
Step 5: Build GnuPlot
dpkg-buildpackage -b
$ ls -1 ../*.deb
../gnuplot_6.0.2+dfsg1-1_all.deb
../gnuplot-build-deps_6.0.2+dfsg1-1_all.deb
../gnuplot-data_6.0.2+dfsg1-1_all.deb
../gnuplot-doc_6.0.2+dfsg1-1_all.deb
../gnuplot-nox_6.0.2+dfsg1-1_amd64.deb
../gnuplot-nox-dbgsym_6.0.2+dfsg1-1_amd64.deb
../gnuplot-qt_6.0.2+dfsg1-1_amd64.deb
../gnuplot-qt-dbgsym_6.0.2+dfsg1-1_amd64.deb
../gnuplot-x11_6.0.2+dfsg1-1_amd64.deb
../gnuplot-x11-dbgsym_6.0.2+dfsg1-1_amd64.deb
Step 6: Install GnuPlot
cd ../
sudo dpkg -i gnuplot_6.0.2+dfsg1-1_all.deb gnuplot-data_6.0.2+dfsg1-1_all.deb gnuplot-qt_6.0.2+dfsg1-1_amd64.deb
Step 7: Test
You can test GnuPlot with Maxima
$ maxima
(%i1) plot2d([tanh(20*sin(x))], [x,-10*%pi,10*%pi], [y,-1.1,1.1], [plot_format, gnuplot])$
(%i3) quit();
You can export plots from GnuPlot window to SVG format. It works with gnuplot-qt
Click on "Export" icon (the top left corner of GnuPlot window), and select "Export to SVG" in drop down menu.
Doing Graphics with Maxima - Maxima Tutorial
http://www.bildungsgueter.de/MaximaEN/Pages/GraphicsSurvey01.htm
$ inxi -b | grep Host -A1 Host: devuan Kernel: 6.1.0-34-amd64 arch: x86_64 bits: 64 Desktop: MATE v: 1.26.0 Distro: Devuan GNU/Linux 5 (daedalus)
NOTE: It is "portable standalone" in the sense that it does not require installation.
Just click on it and use. You can also start it from terminal, or create a deskto launcher wxMaxima.desktop
$ ./_CPack_Packages/Linux/DEB/wxMaxima-25.04.0-Linux/usr/bin/wxmaxima --version
wxMaxima 25.04.0 (Git version: 735a94e3a)
_https://github.com/wxMaxima-developers/wxmaxima/releases/tag/Version-25.04.0
wxMaxima 25.04.0 Latest
A bugfix releasehttps://github.com/wxMaxima-developers/wxmaxima.git
Build dependencies
To build wxMaxima-25.04.0.deb, we need CMake 4.0.1
There is a portable standalone version of CMake 4.0.1 in GitHub.
The manual for it is here:https://dev1galaxy.org/viewtopic.php?id=7161
You can simply download and unpack it into your home folder, for example:
$ ls -1 $HOME/.CTools/ cmake-4.0.1 meson-1.7.2
Download portable CMake v4.0.1:
https://github.com/Kitware/CMake/releases/download/v4.0.1/cmake-4.0.1-linux-x86_64.tar.gz
Install "build-essential", build dependencies, etc.:
sudo apt install build-essential debhelper sudo apt install libwxgtk3.2-dev xvfb netcat-openbsd xauth desktop-file-utils appstream-util libwxgtk-webview3.2-dev libwebkit2gtk-4.0-dev sudo apt install fakeroot dpkg-repack git sed tree maxima appstream pandoc po4a imagemagick doxygen texlive-xetex
Clone the source from git:
mkdir wxmaxima2504_build
cd wxmaxima2504_build
git clone https://github.com/wxmaxima-developers/wxmaxima.git
$ ls
wxmaxima
Project: wxMaxima-25.04.0 (GitHub)
Create DEB_config.cmake
nano ./wxmaxima/DEB_config.cmake
$ cat ./wxmaxima/DEB_config.cmake
# these are cache variables, so they could be overwritten with -D,
set(CPACK_PACKAGE_NAME ${PROJECT_NAME}
CACHE STRING "The resulting package name"
)
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJECT_DESCRIPTION}
CACHE STRING "Package description for the package metadata"
)
set(CPACK_VERBATIM_VARIABLES TRUE)
set(CPACK_PACKAGING_INSTALL_PREFIX "/usr")
set(CPACK_PACKAGE_VERSION "${WXMAXIMA_VERSION}")
set(CPACK_DEBIAN_PACKAGE_RELEASE "1")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER Devuan
CACHE STRING "Package MAINTAINER"
)
# AUTO-Deps: autogenerate dependency information
set (CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
list(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS maxima)
set(CPACK_DEBIAN_PACKAGE_RECOMMENDS "maxima-doc, fonts-inter, fonts-inter-variable, fonts-texgyre, fonts-texgyre-math, fonts-dejavu")
set(CPACK_DEBIAN_PACKAGE_SUGGESTS "fonts-jsmath, texlive-latex-extra, ibus-gtk3")
set(CPACK_DEBIAN_PACKAGE_SECTION math)
set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
# set(CPACK_SOURCE_GENERATOR "TBZ2;TGZ;TXZ;TZ")
list(APPEND CPACK_SOURCE_IGNORE_FILES "/\.git*")
include(CPack)
Find the "CMakeLists" of the main project:
$ ls ./wxmaxima | grep CMakeLists
CMakeLists.txt
To enable the DEB_config.cmake in the main project, append these lines:
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
include(DEB_config.cmake)
to the end of the file ./wxmaxima/CMakeLists.txt. This can be done with a text editor, or echo command:
$ echo -e '\n\nset(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})\ninclude(DEB_config)' >> ./wxmaxima/CMakeLists.txt
$ tail -3 ./wxmaxima/CMakeLists.txt
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
include(DEB_config)
Enable portable CMake 4.0.1
$ cmake --version
cmake version 3.25.1
export PATH="$HOME/.CTools/cmake-4.0.1/bin:$PATH"
$ cmake --version
cmake version 4.0.1
1. Generate the Project Buildsystem
cmake -S wxmaxima -B build -DCMAKE_BUILD_TYPE="Release" -DCPACK_DEBIAN_PACKAGE_MAINTAINER=Daedalus -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_CXX_STANDARD=14 -DCMAKE_CXX_COMPILER=g++ -DwxWidgets_CONFIG_EXECUTABLE=/usr/bin/wx-config -Wno-dev
$ ls -1
build
wxmaxima
2. Build the Project
cmake --build build
3. Make the Debian package with CPack
$ ls ./build | grep Config.cmake
CPackConfig.cmake
CPackSourceConfig.cmake
$ cpack --config build/CPackConfig.cmake -G DEB
CPack: Create package using DEB
CPack: Install projects
CPack: - Run preinstall target for: wxMaxima
CPack: - Install project: wxMaxima []
CPack: Create package
CPackDeb: - Generating dependency list
CPack: - package: /home/.../wxmaxima2504_build/wxmaxima_25.04.0-1_amd64.deb generated.
Generate the source package with CPack
$ cpack -G TGZ -DCPACK_PACKAGING_INSTALL_PREFIX="/" --config build/CPackSourceConfig.cmake
CPack: Create package using TGZ
CPack: Install projects
CPack: - Install directory: /home/igor/Desktop/Builds/Builds_wxMaxima/Build_wxmaxima_25.01.0_GIT/wxmaxima2504_build/wxmaxima
CPack: Create package
CPack: - package: /home/.../wxmaxima2504_build/wxMaxima-25.04.0-Source.tar.gz generated.
$ ls -1
build
_CPack_Packages
wxmaxima
wxmaxima_25.04.0-1_amd64.deb
wxMaxima-25.04.0-Source.tar.gz
$ dpkg-deb -f *.deb
Architecture: amd64
Depends: maxima, libc6 (>= 2.34), libgcc-s1 (>= 3.0), 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)
Description: wxMaxima is a document based interface for the computer algebra system Maxima.
Homepage: https://wxmaxima-developers.github.io/wxmaxima/
Maintainer: Daedalus
Package: wxmaxima
Priority: optional
Recommends: maxima-doc, fonts-inter, fonts-inter-variable, fonts-texgyre, fonts-texgyre-math, fonts-dejavu
Section: math
Suggests: fonts-jsmath, texlive-latex-extra, ibus-gtk3
Version: 25.04.0-1
Installed-Size: 15154
Install wxMaxima
sudo dpkg -i wxmaxima_25.04.0-1_amd64.deb
$ wxmaxima --version
wxMaxima 25.04.0 (Git version: 735a94e3a)
$ apt show wxmaxima
Package: wxmaxima
Version: 25.04.0-1
Status: install ok installed
Priority: optional
Section: math
Maintainer: Daedalus
Installed-Size: 15.5 MB
Depends: maxima, libc6 (>= 2.34), libgcc-s1 (>= 3.0), 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)
Recommends: maxima-doc, fonts-inter, fonts-inter-variable, fonts-texgyre, fonts-texgyre-math, fonts-dejavu
Suggests: fonts-jsmath, texlive-latex-extra, ibus-gtk3
Homepage: https://wxmaxima-developers.github.io/wxmaxima/
Download-Size: unknown
APT-Manual-Installed: yes
APT-Sources: /var/lib/dpkg/status
Description: wxMaxima is a document based interface for the computer algebra system Maxima.
The project directory wxmaxima2504_build:
$ ls -1
build
_CPack_Packages
wxmaxima
wxmaxima_25.04.0-1_amd64.deb
wxMaxima-25.04.0-Source.tar.gz
./_CPack_Packages/Linux/DEB/wxMaxima-25.04.0-Linux/usr/bin/wxmaxima
Just click on it and use.
$ ./_CPack_Packages/Linux/DEB/wxMaxima-25.04.0-Linux/usr/bin/wxmaxima --version
wxMaxima 25.04.0 (Git version: 735a94e3a)
It should work on any Linux with "NEEDED" shared libraries installed:
$ readelf --dynamic ./_CPack_Packages/Linux/DEB/wxMaxima-25.04.0-Linux/usr/bin/wxmaxima | grep NEEDED
0x0000000000000001 (NEEDED) Shared library: [libwx_gtk3u_richtext-3.2.so.0]
0x0000000000000001 (NEEDED) Shared library: [libwx_gtk3u_aui-3.2.so.0]
0x0000000000000001 (NEEDED) Shared library: [libwx_gtk3u_webview-3.2.so.0]
0x0000000000000001 (NEEDED) Shared library: [libwx_baseu_net-3.2.so.0]
0x0000000000000001 (NEEDED) Shared library: [libwx_baseu_xml-3.2.so.0]
0x0000000000000001 (NEEDED) Shared library: [libwx_gtk3u_core-3.2.so.0]
0x0000000000000001 (NEEDED) Shared library: [libwx_baseu-3.2.so.0]
0x0000000000000001 (NEEDED) Shared library: [libstdc++.so.6]
0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
$ readelf --dynamic ./_CPack_Packages/Linux/DEB/wxMaxima-25.04.0-Linux/usr/bin/wxmaxima | grep NEEDED | sort | uniq -u | sed -e 's/ /\n/g' | sed -n '/\[l/p' | sed -e 's/\]/ /g' | sed -e 's/\[//g' | tee wxMaxima-git_DEPs_libs.txt
libc.so.6
libgcc_s.so.1
libm.so.6
libstdc++.so.6
libwx_baseu-3.2.so.0
libwx_baseu_net-3.2.so.0
libwx_baseu_xml-3.2.so.0
libwx_gtk3u_aui-3.2.so.0
libwx_gtk3u_core-3.2.so.0
libwx_gtk3u_richtext-3.2.so.0
libwx_gtk3u_webview-3.2.so.0
You can verify all dependencies, for example:
$ apt-file search libwx_gtk3u_richtext-3.2.so.0
libwxgtk3.2-1: /usr/lib/x86_64-linux-gnu/libwx_gtk3u_richtext-3.2.so.0
libwxgtk3.2-1: /usr/lib/x86_64-linux-gnu/libwx_gtk3u_richtext-3.2.so.0.2.0
$ apt info wxmaxima | grep Depends
Depends: maxima, libc6 (>= 2.34), libgcc-s1 (>= 3.0), 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)
Notice that wxMaxima is a GUI for Maxima. It does depends on Maxima, in this sense.
$ copyq --version
CopyQ Clipboard Manager 10.0.0
Qt: 5.15.8
KNotifications: 5.103.0
Compiler: GCC
Arch: x86_64-little_endian-lp64
OS: Devuan GNU/Linux 5 (daedalus)
$ copyq
Warning: [default] QtWarning: QSystemTrayIcon::setVisible: No Icon set
^C
$ copyq --start-server
$ dpkg -L copyq | grep desktop
/usr/share/applications/com.github.hluk.copyq.desktop
$ cat /usr/share/applications/com.github.hluk.copyq.desktop | grep Exec
Exec=copyq --start-server show
Workaround (start copyq in the tray):
Exec=bash -c 'killall copyq -wq; copyq --start-server &'
@Khylsdrak
CopyQ might be useful, although its manual (man copyq) seems misleading
_https://github.com/hluk/CopyQ/issues/225#issuecomment-1925401588
$ cat ~/.config/autostart/copyq-autostart.desktop
[Desktop Entry]
Type=Application
Exec=/usr/bin/copyq --start-server
Hidden=false
Name[en_US]=CopyQ autostart
Name=CopyQ
Comment[en_US]=Advanced clipboard manager
Comment=Advanced clipboard manager
# Workaround / fix for issue #1526 that prevents a proper autostart of the tray icon in GNOME
X-MATE-Autostart-Delay=3
cat /usr/share/applications/com.github.hluk.copyq.desktop | grep Desktop -A15
EDIT:
Create a new Desktop launcher for CopyQ with a text editor (nano or mousepad):
nano ~/.local/share/applications/copyq.desktop
mousepad ~/.local/share/applications/copyq.desktop
$ cat ~/.local/share/applications/copyq.desktop
[Desktop Entry]
Name=CopyQ
# Start CopyQ in the tray / Workaround for MATE Desktop
Exec=bash -c 'copyq && copyq exit && copyq --start-server' 2>/dev/null
# Exec=copyq --start-server show
Icon=copyq
GenericName=Clipboard Manager
# Workaround / fix for issue #1526 that prevents a proper autostart of the tray icon in GNOME
X-GNOME-Autostart-Delay=3
# The rest is taken from Klipper application.
Type=Application
Terminal=false
X-KDE-autostart-after=panel
X-KDE-StartupNotify=false
X-KDE-UniqueApplet=true
Categories=Qt;KDE;Utility;
Comment=A cut & paste history utility
Name[en_US]=CopyQ-fixed
mkdir wxmaxima_build
cd wxmaxima_build
git clone https://github.com/wxmaxima-developers/wxmaxima.git
$ ls
wxmaxima
Project: wxMaxima 25.01.0-DevelopmentSnapshot (git)
Create a sort of config for "CPack DEB Generator" with a text editor you like
nano ./wxmaxima/Packing.cmake
$ cat ./wxmaxima/Packing.cmake
# these are cache variables, so they could be overwritten with -D,
set(CPACK_PACKAGE_NAME ${PROJECT_NAME}
CACHE STRING "The resulting package name"
)
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJECT_DESCRIPTION}
CACHE STRING "Package description for the package metadata"
)
set(CPACK_DEBIAN_PACKAGE_MAINTAINER Devuan
CACHE STRING "Package MAINTAINER"
)
set(CPACK_PACKAGING_INSTALL_PREFIX "/usr")
set(CPACK_PACKAGE_VERSION "${WXMAXIMA_VERSION}-Devuan5")
set(CPACK_DEBIAN_PACKAGE_RELEASE "1")
# AUTO-Deps: autogenerate dependency information
set (CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
list(APPEND CPACK_DEBIAN_PACKAGE_DEPENDS maxima)
set(CPACK_DEBIAN_PACKAGE_RECOMMENDS "maxima-doc, fonts-inter, fonts-inter-variable, fonts-texgyre, fonts-texgyre-math, fonts-dejavu")
set(CPACK_DEBIAN_PACKAGE_SUGGESTS "fonts-jsmath, texlive-latex-extra, ibus-gtk3")
set(CPACK_DEBIAN_PACKAGE_SECTION math)
set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
# set(CPACK_SOURCE_GENERATOR "TBZ2;TGZ;TXZ;TZ")
set(CPACK_SOURCE_GENERATOR "TGZ")
set(CPACK_SOURCE_IGNORE_FILES
\\.git/
build/
".*~$"
)
set(CPACK_VERBATIM_VARIABLES YES)
include(CPack)
Find the config of the main project:
$ find . -maxdepth 2 -name 'CMakeLists*'
./wxmaxima/CMakeLists.txt
$ ls ./wxmaxima | grep CMakeLists
CMakeLists.txt
To enable the GPac config (Packing.cmake) in the config of the main project, append a "magic code"
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
include(Packing)
to the end of the file ./wxmaxima/CMakeLists.txt. This can be done with a text editor, or echo command:
$ echo -e '\n\nset(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})\ninclude(Packing)' >> ./wxmaxima/CMakeLists.txt
$ tail -3 ./wxmaxima/CMakeLists.txt
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
include(Packing)
Enable CMake 4.0.1
$ cmake --version
cmake version 3.25.1
export PATH="$HOME/.CTools/cmake-4.0.1/bin:$PATH"
$ cmake --version
cmake version 4.0.1
1. Generate the Project Buildsystem
cmake \
-S wxmaxima \
-B build \
-DCMAKE_BUILD_TYPE=None \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_CXX_STANDARD=14 \
-DCMAKE_CXX_COMPILER=g++ \
-DwxWidgets_CONFIG_EXECUTABLE=/usr/bin/wx-config \
-Wno-dev
$ ls -1
build
wxmaxima
2. Build the Project
cmake --build build
3. Make the Debian package of wxMaxima with CPack
$ ls ./build | grep Config.cmake
CPackConfig.cmake
CPackSourceConfig.cmake
$ cpack --config build/CPackConfig.cmake -G DEB
CPack: Create package using DEB
CPack: Install projects
CPack: - Run preinstall target for: wxMaxima
CPack: - Install project: wxMaxima []
CPack: Create package
CPackDeb: - Generating dependency list
CPack: - package: /home/.../wxmaxima_build/wxmaxima_25.01.0-DevelopmentSnapshot-Devuan5-1_amd64.deb generated.
Generate the source package of wxMaxima with CPack
$ cpack --config build/CPackSourceConfig.cmake
CPack: Create package using TGZ
CPack: Install projects
CPack: - Install directory: /home/.../wxmaxima_build/wxmaxima
CPack: Create package
CPack: - package: /home/.../wxmaxima_build/wxMaxima-25.01.0-DevelopmentSnapshot-Devuan5-Source.tar.gz generated.
$ ls -1
build
_CPack_Packages
wxmaxima
wxmaxima_25.01.0-DevelopmentSnapshot-Devuan5-1_amd64.deb
wxMaxima-25.01.0-DevelopmentSnapshot-Devuan5-Source.tar.gz
$ dpkg-deb -f *.deb
Architecture: amd64
Depends: maxima, libc6 (>= 2.34), libgcc-s1 (>= 3.0), 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)
Description: wxMaxima is a document based interface for the computer algebra system Maxima.
Homepage: https://wxmaxima-developers.github.io/wxmaxima/
Maintainer: Devuan
Package: wxmaxima
Priority: optional
Recommends: maxima-doc, fonts-inter, fonts-inter-variable, fonts-texgyre, fonts-texgyre-math, fonts-dejavu
Section: math
Suggests: fonts-jsmath, texlive-latex-extra, ibus-gtk3
Version: 25.01.0-DevelopmentSnapshot-Devuan5-1
Installed-Size: 15532
Install wxMaxima
sudo dpkg -i wxmaxima_25.01.0-DevelopmentSnapshot-Devuan5-1_amd64.deb
$ apt show wxmaxima
Package: wxmaxima
Version: 25.01.0-DevelopmentSnapshot-Devuan5-1
Status: install ok installed
Priority: optional
Section: math
Maintainer: Devuan
Installed-Size: 15.9 MB
Depends: maxima, libc6 (>= 2.34), libgcc-s1 (>= 3.0), 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)
Recommends: maxima-doc, fonts-inter, fonts-inter-variable, fonts-texgyre, fonts-texgyre-math, fonts-dejavu
Suggests: fonts-jsmath, texlive-latex-extra, ibus-gtk3
Homepage: https://wxmaxima-developers.github.io/wxmaxima/
Download-Size: unknown
APT-Manual-Installed: yes
APT-Sources: /var/lib/dpkg/status
Description: wxMaxima is a document based interface for the computer algebra system Maxima.
N: There is 1 additional record. Please use the '-a' switch to see it
Some bugs become visible, if you try a dark theme for wxMaxima worksheets.
A workaround is to disable "Intelligently hide cell brackets"wxMaxima → Edit → Configure → Worksheet: Disable (uncheck) "Intelligently hide cell brackets"
You may also try:
wxMaxima → View → "Invert worksheet brightness"
wxMaxima is a GUI for maxima. If maxima fails to work (as it usually happens on Fedora), wxMaxima does not react on maxima commands (e.g., 1 + 1). The Fedora users, of course, cannot understand what is going on. This is, largely because, perhaps, there are pipewire/pulseaudio users.
You may want to test maxima before testing wxMaxima. To open Maxima Shell, type the command maxima in the command-line terminal.
$ maxima Maxima 5.46.0 https://maxima.sourceforge.io using Lisp GNU Common Lisp (GCL) GCL 2.6.14 git tag Version_2_6_15pre3 Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. The function bug_report() provides bug reporting information. (%i1) A: (x-2)*(x-3); (%o1) (x - 3) (x - 2) (%i2) B: expand(A); 2 (%o2) x - 5 x + 6 (%i3) solve(B,x); (%o3) [x = 3, x = 2] (%i4) factor(B); (%o4) (x - 3) (x - 2) (%i5) subst(x=3,B); (%o5) 0 (%i6) subst(x=2,B); (%o6) 0 (%i7) quit();
Perhaps, mathematical knowledge may help to understand the problems of digital sound processing (e.g., resampling), but it may not liberate from ignorance. The cult of pulseaudio is a sort of Cargo cult, and therefore, it is doomed to persist despite any failures to materialize utopian dreams. If the particular "advanced projects" failed, the ends are still valid, and the dream as a vehicle of truth stays unimpaired. The "myth-dream" of the cult is, in essence, a self-generating "objective truth". The "myth-dream" of "advanced Linux sound system" will inevitably produce new sorts of pulseaudio/pipewire and other "advanced crap". The problem is that such myths generate the true knowledge which emerges as an imperative to action. The Cargo cult persists because it fails to fulfill its ends. The cult of systemd is the same thing.
In the context of Cargo the myth-dream is truth, and, moreover, the several truths contained in the myth-dream emerge as imperatives. Ideally, the task of the charismatic figure can be seen as an attempt to realize these imperatives in action. (Kenelm Burridge, Mambu (1960). pp. 249-250).