The officially official Devuan Forum!

You are not logged in.

#26 Re: Desktop and Multimedia » What is the procedure for sound out of alsa without pulseaudio? » 2025-06-03 12:22:47

ralph.ronnquist wrote:

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

#27 Re: Freedom Hacks » How to build a portable wxMaxima-25.04.0 and a Debian package for it. » 2025-06-03 03:56:34

Compiling wxMaxima_25.04.0 with GCC-15 on Devuan 5 Daedalus

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-gcc

Portable 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)

#28 Re: Freedom Hacks » How to change dependencies of a Debian package » 2025-06-02 21:29:14

@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.

#29 Re: Freedom Hacks » How to change dependencies of a Debian package » 2025-06-01 17:50:10

@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 2021

PubMed
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.

#30 Re: Freedom Hacks » How to change dependencies of a Debian package » 2025-06-01 14:04:57

$ 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.

#31 Re: Freedom Hacks » How to change dependencies of a Debian package » 2025-06-01 11:57:37

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.

#32 Re: Freedom Hacks » How to change dependencies of a Debian package » 2025-06-01 02:25:10

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.

#33 Re: Freedom Hacks » WhiteSur Dark GTK Theme for MATE Desktop » 2025-05-31 17:04:26

@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

#34 Re: Freedom Hacks » WhiteSur Dark GTK Theme for MATE Desktop » 2025-05-31 14:59:56

@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.

#35 Freedom Hacks » WhiteSur Dark GTK Theme for MATE Desktop » 2025-05-30 05:20:56

igorzwx
Replies: 5

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

#36 Re: Off-topic » libadwaita forked by Mint » 2025-05-28 17:22:56

@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.

#37 Re: Off-topic » libadwaita forked by Mint » 2025-05-28 12:20:43

@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

#38 Re: Freedom Hacks » [HowTo] audacious_4.5-devel-1_amd64.deb (meson+samu and muon+samu) » 2025-05-28 09:26:18

How to compile audacious with muon+samu

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" 

#39 Freedom Hacks » Bug in Devuan (pkgconf) » 2025-05-27 22:13:58

igorzwx
Replies: 0

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 

#40 Freedom Hacks » [HowTo] audacious_4.5-devel-1_amd64.deb (meson+samu and muon+samu) » 2025-05-26 23:17:19

igorzwx
Replies: 1
How to compile Audacious with meson and samurai

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 
How to compile Audacious-plugins

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. 

#41 Re: Freedom Hacks » ALSA without PulseAudio and PipeWire » 2025-05-22 07:35:30

UPDATE

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.

#42 Freedom Hacks » [HowTo] samurai_1.9.0-1_amd64.deb (ninja-compatible) patched with SED » 2025-05-22 07:27:07

igorzwx
Replies: 0

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 

#43 Re: Freedom Hacks » How to build a portable wxMaxima-25.04.0 and a Debian package for it. » 2025-05-22 07:21:15

How to build wxMaxima with samu

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)

#44 Re: Freedom Hacks » ALSA without PulseAudio and PipeWire » 2025-05-20 06:20:30

Khylsdrak wrote:

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

#45 Freedom Hacks » Hacking Build-Depends of Debian source packages » 2025-05-09 11:40:35

igorzwx
Replies: 0

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.

#46 Freedom Hacks » The road to freedom » 2025-05-07 01:52:20

igorzwx
Replies: 2

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/gnuplot

Source 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

#47 Freedom Hacks » How to build a portable wxMaxima-25.04.0 and a Debian package for it. » 2025-05-02 10:48:50

igorzwx
Replies: 2
$ 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)
How to build portable standalone wxMaxima-25.04.0 and wxMaxima-25.04.0.deb

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 release

https://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
■  What was built seems to be a sort of portable standalone wxMaxima.
./_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.

#48 Re: Off-topic » Lightweight system without (too) bloated software » 2025-04-26 18:08:49

CopyQ: persistent bugs
$ 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 &' 

#49 Re: Off-topic » Lightweight system without (too) bloated software » 2025-04-24 23:40:53

@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:

Workaround for MATE Desktop: Start CopyQ in the tray 

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 

#50 Re: Freedom Hacks » How to build wxMaxima_25.01.0.deb (DevelopmentSnapshot) from git » 2025-04-24 22:36:53

[CMake 4.0.1] Creating a Debian package for wxMaxima with CPack DEB Generator
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).

Board footer

Forum Software