Tips en Trucs 2024

Fooyin – aanpasbare muziekspeler

Fooyin wordt aangeprezen als een aanpasbare muziekspeler. Het woord aanpasbaar is anders dan wat het normaal betekent. In Fooyin kunnen we kiezen welke widgets worden weergegeven, zodat de hele gebruikersinterface naar hartenlust kan worden aangepast.

Fooyin is gebaseerd op Qt 6.6.1, geschreven in C++ en gepubliceerd onder een open source licentie. Fooyin gebruikt TagLib, een bibliotheek voor het lezen en bewerken van de meta-gegevens van populaire audioformaten.

Fooyin kenmerken

Fooyin ondersteunt gapless afspelen. Gapless afspelen is het ononderbroken afspelen van opeenvolgende audiotracks, zodat bij het afspelen relatieve tijdsafstanden in de originele audiobron behouden blijven over de trackgrenzen. Dit is een essentiële functie als je naar klassiek, elektronische muziek, conceptalbums en progressieve rock luistert. Het implementeren van gapless afspelen is niet triviaal en veel Linux muziekspelers hebben deze functionaliteit niet.

Welke andere functies ondersteunt fooyin?

Fooyin Ember

Fooyin installeren

Om Fooyin te gebruiken moeten we het zelf compileren. Daarbij zijn veel afhankelijkheden nodig, waarvan sommige aanwezig waren op mijn Debian-systeem. Installeer de afhankelijkheden met de opdracht:

dany@pindabook:~$ sudo apt install g++ git cmake pkg-config ninja-build libasound2-dev qcoro-qt6-dev libtag1-dev qt6-base-dev qt6-svg-dev qt6-tools-dev libavcodec-dev libavfilter-dev libavformat-dev libavutil-dev libswresample-dev
[sudo] wachtwoord voor root: 
Pakketlijsten worden ingelezen... Klaar
Boom van vereisten wordt opgebouwd... Klaar
De statusinformatie wordt gelezen... Klaar 
g++ is reeds de nieuwste versie (4:12.2.0-3).
g++ staat ingesteld op handmatig geïnstalleerd.
git is reeds de nieuwste versie (1:2.39.2-1.1).
git staat ingesteld op handmatig geïnstalleerd.
De volgende extra pakketten zullen geïnstalleerd worden:
  assistant-qt6 cmake-data designer-qt6 libb2-1 libclang-cpp15 libclang1-15 libgl-dev libglx-dev libgumbo1
  libjsoncpp25 liblitehtml0 libopengl-dev libpkgconf3 libpostproc-dev libpthread-stubs0-dev libqcoro6core0
  libqcoro6dbus0 libqcoro6network0 libqcoro6qml0 libqcoro6quick0 libqcoro6websockets0 libqt6concurrent6
  libqt6core6 libqt6dbus6 libqt6designer6 libqt6designercomponents6 libqt6gui6 libqt6help6 libqt6network6
  libqt6opengl6 libqt6opengl6-dev libqt6openglwidgets6 libqt6printsupport6 libqt6qml6 libqt6qmlmodels6
  libqt6quick6 libqt6quickwidgets6 libqt6sql6 libqt6sql6-sqlite libqt6svg6 libqt6svgwidgets6 libqt6test6
  libqt6uitools6 libqt6websockets6 libqt6widgets6 libqt6xml6 librhash0 libswscale-dev libts0 libvulkan-dev
  libx11-dev libxau-dev libxcb1-dev libxdmcp-dev linguist-qt6 pkgconf pkgconf-bin qcoro-doc qdbus-qt6 qmake6
  qmake6-bin qt6-base-dev-tools qt6-documentation-tools qt6-gtk-platformtheme qt6-l10n-tools qt6-qpa-plugins
  qt6-tools-dev-tools qt6-translations-l10n qt6-websockets-dev x11proto-dev xorg-sgml-doctools xtrans-dev
  zlib1g-dev
Voorgestelde pakketten:
  cmake-doc cmake-format elpa-cmake-mode libasound2-doc qt6-qmltooling-plugins libx11-doc libxcb-doc
De volgende NIEUWE pakketten zullen geïnstalleerd worden:
  assistant-qt6 cmake cmake-data designer-qt6 libasound2-dev libavcodec-dev libavfilter-dev libavformat-dev
  libavutil-dev libb2-1 libclang-cpp15 libclang1-15 libgl-dev libglx-dev libgumbo1 libjsoncpp25 liblitehtml0
  libopengl-dev libpkgconf3 libpostproc-dev libpthread-stubs0-dev libqcoro6core0 libqcoro6dbus0 libqcoro6network0
  libqcoro6qml0 libqcoro6quick0 libqcoro6websockets0 libqt6concurrent6 libqt6core6 libqt6dbus6 libqt6designer6
  libqt6designercomponents6 libqt6gui6 libqt6help6 libqt6network6 libqt6opengl6 libqt6opengl6-dev
  libqt6openglwidgets6 libqt6printsupport6 libqt6qml6 libqt6qmlmodels6 libqt6quick6 libqt6quickwidgets6 libqt6sql6
  libqt6sql6-sqlite libqt6svg6 libqt6svgwidgets6 libqt6test6 libqt6uitools6 libqt6websockets6 libqt6widgets6
  libqt6xml6 librhash0 libswresample-dev libswscale-dev libtag1-dev libts0 libvulkan-dev libx11-dev libxau-dev
  libxcb1-dev libxdmcp-dev linguist-qt6 ninja-build pkg-config pkgconf pkgconf-bin qcoro-doc qcoro-qt6-dev
  qdbus-qt6 qmake6 qmake6-bin qt6-base-dev qt6-base-dev-tools qt6-documentation-tools qt6-gtk-platformtheme
  qt6-l10n-tools qt6-qpa-plugins qt6-svg-dev qt6-tools-dev qt6-tools-dev-tools qt6-translations-l10n
  qt6-websockets-dev x11proto-dev xorg-sgml-doctools xtrans-dev zlib1g-dev
0 opgewaardeerd, 87 nieuw geïnstalleerd, 0 te verwijderen en 0 niet opgewaardeerd.
Er moeten 67,6 MB aan archieven opgehaald worden.
Na deze bewerking zal er 312 MB extra schijfruimte gebruikt worden.
Wilt u doorgaan? [J/n] 
Ophalen:1 http://deb.debian.org/debian bookworm/main amd64 libgumbo1 amd64 0.10.1+dfsg-5 [109 kB]
Ophalen:2 http://deb.debian.org/debian bookworm/main amd64 liblitehtml0 amd64 0.6-1 [188 kB]
Ophalen:3 http://deb.debian.org/debian bookworm/main amd64 libb2-1 amd64 0.98.1-1.1 [40,9 kB]
...
Ophalen:85 http://deb.debian.org/debian bookworm/main amd64 qt6-tools-dev-tools amd64 6.4.2~rc1-2 [251 kB]
Ophalen:86 http://deb.debian.org/debian bookworm/main amd64 qt6-tools-dev amd64 6.4.2~rc1-2 [67,7 kB]
Ophalen:87 http://deb.debian.org/debian bookworm/main amd64 qt6-translations-l10n all 6.4.2-1 [1.647 kB]
67,6 MB opgehaald in 6s (11,4 MB/s)               
Extraheren van sjablonen uit pakketten: 100%
Voorheen niet geselecteerd pakket libgumbo1:amd64 wordt geselecteerd.
(Database wordt ingelezen ... 182949 bestanden en mappen momenteel geïnstalleerd.)
Uitpakken van .../00-libgumbo1_0.10.1+dfsg-5_amd64.deb wordt voorbereid...
Bezig met uitpakken van libgumbo1:amd64 (0.10.1+dfsg-5) ...
...
Voorheen niet geselecteerd pakket qt6-translations-l10n wordt geselecteerd.
Uitpakken van .../86-qt6-translations-l10n_6.4.2-1_all.deb wordt voorbereid...
Bezig met uitpakken van qt6-translations-l10n (6.4.2-1) ...
Instellen van libb2-1:amd64 (0.98.1-1.1) ...
Instellen van libavutil-dev:amd64 (7:5.1.4-0+deb12u1) ...
Instellen van libvulkan-dev:amd64 (1.3.239.0-1) ...
...
Instellen van qt6-tools-dev:amd64 (6.4.2~rc1-2) ...
Instellen van qt6-websockets-dev:amd64 (6.4.2-1) ...
Instellen van qcoro-qt6-dev:amd64 (0.8.0-1) ...

Kloon vervolgens de GitHub repository van het project:

dany@pindabook:~$ git clone --recursive https://github.com/ludouzi/fooyin.git
Cloning into 'fooyin'...
remote: Enumerating objects: 27523, done.
remote: Counting objects: 100% (3404/3404), done.
remote: Compressing objects: 100% (893/893), done.
remote: Total 27523 (delta 2557), reused 3328 (delta 2502), pack-reused 24119
Receiving objects: 100% (27523/27523), 11.72 MiB | 9.92 MiB/s, done.
Resolving deltas: 100% (21852/21852), done.

Open de nieuw aangemaakte map:

dany@pindabook:~$ cd fooyin

Met CMake genereren we een build(compileer)-omgeving:

dany@pindabook:~/fooyin$ cmake -S . -G Ninja -B build
-- The CXX compiler identification is GNU 12.2.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE  
-- Performing Test HAVE_STDATOMIC
-- Performing Test HAVE_STDATOMIC - Success
-- Found WrapAtomic: TRUE  
-- Found OpenGL: /usr/lib/x86_64-linux-gnu/libOpenGL.so   
-- Found WrapOpenGL: TRUE  
-- Could NOT find XKB (missing: XKB_LIBRARY XKB_INCLUDE_DIR) (Required is at least version "0.5.0")
-- Found WrapVulkanHeaders: /usr/include  
-- Found Taglib: /usr/lib/x86_64-linux-gnu/libtag.so (found version "1.13") 
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.8.1") 
-- Checking for module 'libavcodec'
--   Found libavcodec, version 59.37.100
-- Checking for module 'libavformat'
--   Found libavformat, version 59.27.100
-- Checking for module 'libavdevice'
--   Package 'libavdevice', required by 'virtual:world', not found
-- Checking for module 'libavutil'
--   Found libavutil, version 57.28.100
-- Checking for module 'libavfilter'
--   Found libavfilter, version 8.44.100
-- Checking for module 'libswscale'
--   Found libswscale, version 6.7.100
-- Checking for module 'libswresample'
--   Found libswresample, version 4.7.100
-- Checking for module 'libpostproc'
--   Found libpostproc, version 56.6.100
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.13") 
-- Found FFmpeg: /usr/lib/x86_64-linux-gnu/libavcodec.so;/usr/lib/x86_64-linux-gnu/libavformat.so;/usr/lib/x86_64-linux-gnu/libavutil.so  
-- Using 3rd-party KDSingleApplication
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
-- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR
-- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
-- 
-- ******** Fooyin Configuration ********
-- General:
--   Fooyin version        : 0.4.5
--   CMake version         : 3.25.1
--   CMake command         : /usr/bin/cmake
--   System                : Linux
--   C++ compiler          : /usr/bin/c++
--   C++ compiler version  : 12.2.0
--   CXX flags             : 
--   Build type            : Release
-- 
-- Install location:
--   Install prefix        : /usr/local
--   Binary install dir    : bin
--   Library install dir   : lib/fooyin
--   Plugin install dir    : lib/fooyin/plugins
-- 
-- Options:
--   BUILD_SHARED_LIBS     : ON
--   BUILD_TESTING         : OFF
--   BUILD_PLUGINS         : ON
--   BUILD_ALSA            : ON
--   BUILD_TRANSLATIONS    : ON
--   BUILD_CCACHE          : ON
--   BUILD_PCH             : OFF
--   BUILD_WERROR          : OFF
--   BUILD_ASAN            : OFF
--   INSTALL_FHS           : ON
--   INSTALL_HEADERS       : OFF
-- Configuring done
-- Generating done
-- Build files have been written to: /home/dany/fooyin/build

Compileer Fooyin met:

dany@pindabook:~/fooyin$ cmake --build build
[1/289] Generating data/fooyin_id.qm
Updating '/home/dany/fooyin/build/data/fooyin_id.qm'...
    Generated 45 translation(s) (33 finished and 12 unfinished)
    Ignored 537 untranslated source text(s)
[2/289] Generating data/fooyin_en_US.qm
Updating '/home/dany/fooyin/build/data/fooyin_en_US.qm'...
    Generated 549 translation(s) (541 finished and 8 unfinished)
    Ignored 33 untranslated source text(s)
[3/289] Generating data/fooyin_it.qm
Updating '/home/dany/fooyin/build/data/fooyin_it.qm'...
    Generated 124 translation(s) (75 finished and 49 unfinished)
    Ignored 458 untranslated source text(s)
[4/289] Generating data/fooyin_th.qm
Updating '/home/dany/fooyin/build/data/fooyin_th.qm'...
    Generated 102 translation(s) (51 finished and 51 unfinished)
    Ignored 480 untranslated source text(s)
[5/289] Generating data/fooyin_sk.qm
Updating '/home/dany/fooyin/build/data/fooyin_sk.qm'...
    Generated 309 translation(s) (262 finished and 47 unfinished)
    Ignored 273 untranslated source text(s)
[6/289] Generating data/fooyin_zh_CN.qm
Updating '/home/dany/fooyin/build/data/fooyin_zh_CN.qm'...
    Generated 547 translation(s) (538 finished and 9 unfinished)
    Ignored 35 untranslated source text(s)
[289/289] Linking CXX shared module run/lib/fooyin/plugins/fyplugin_wavebar.so

De laatste stap is het installeren van fooyin:

dany@pindabook:~/fooyin$ sudo cmake --install build
[sudo] wachtwoord voor root: 
-- Install configuration: "Release"
-- Installing: /usr/local/lib/fooyin/libfooyin_utils.so.0.0.0
-- Set runtime path of "/usr/local/lib/fooyin/libfooyin_utils.so.0.0.0" to "$ORIGIN/"
-- Installing: /usr/local/lib/fooyin/libfooyin_core.so.0.0.0
-- Set runtime path of "/usr/local/lib/fooyin/libfooyin_core.so.0.0.0" to "$ORIGIN/"
-- Installing: /usr/local/lib/fooyin/libfooyin_gui.so.0.0.0
-- Set runtime path of "/usr/local/lib/fooyin/libfooyin_gui.so.0.0.0" to "$ORIGIN/"
-- Installing: /usr/local/lib/fooyin/plugins/fyplugin_alsa.so
-- Set runtime path of "/usr/local/lib/fooyin/plugins/fyplugin_alsa.so" to "$ORIGIN/../"
-- Installing: /usr/local/lib/fooyin/plugins/fyplugin_filters.so
-- Set runtime path of "/usr/local/lib/fooyin/plugins/fyplugin_filters.so" to "$ORIGIN/../"
-- Installing: /usr/local/lib/fooyin/plugins/fyplugin_mpris.so
-- Set runtime path of "/usr/local/lib/fooyin/plugins/fyplugin_mpris.so" to "$ORIGIN/../"
-- Installing: /usr/local/lib/fooyin/plugins/fyplugin_tageditor.so
-- Set runtime path of "/usr/local/lib/fooyin/plugins/fyplugin_tageditor.so" to "$ORIGIN/../"
-- Installing: /usr/local/lib/fooyin/plugins/fyplugin_wavebar.so
-- Set runtime path of "/usr/local/lib/fooyin/plugins/fyplugin_wavebar.so" to "$ORIGIN/../"
-- Installing: /usr/local/share/fooyin/translations/fooyin_en_US.qm
-- Installing: /usr/local/share/fooyin/translations/fooyin_id.qm
-- Installing: /usr/local/share/fooyin/translations/fooyin_it.qm
-- Installing: /usr/local/share/fooyin/translations/fooyin_sk.qm
-- Installing: /usr/local/share/fooyin/translations/fooyin_th.qm
-- Installing: /usr/local/share/fooyin/translations/fooyin_zh_CN.qm
-- Installing: /usr/local/share/doc/fooyin/LICENSE
-- Installing: /usr/local/share/doc/fooyin/README
-- Installing: /usr/local/share/applications/org.fooyin.fooyin.desktop
-- Installing: /usr/local/share/metainfo/org.fooyin.fooyin.metainfo.xml
-- Installing: /usr/local/share/icons/hicolor/16x16/apps/org.fooyin.fooyin.png
-- Installing: /usr/local/share/icons/hicolor/22x22/apps/org.fooyin.fooyin.png
-- Installing: /usr/local/share/icons/hicolor/32x32/apps/org.fooyin.fooyin.png
-- Installing: /usr/local/share/icons/hicolor/48x48/apps/org.fooyin.fooyin.png
-- Installing: /usr/local/share/icons/hicolor/64x64/apps/org.fooyin.fooyin.png
-- Installing: /usr/local/share/icons/hicolor/128x128/apps/org.fooyin.fooyin.png
-- Installing: /usr/local/share/icons/hicolor/256x256/apps/org.fooyin.fooyin.png
-- Installing: /usr/local/share/icons/hicolor/512x512/apps/org.fooyin.fooyin.png
-- Installing: /usr/local/share/icons/hicolor/scalable/apps/org.fooyin.fooyin.svg
-- Installing: /usr/local/bin/fooyin
-- Set runtime path of "/usr/local/bin/fooyin" to "$ORIGIN/../lib/fooyin"
Start Fooyin via de Programmastarter > Multimedia > fooyin (fooyin Music Player).

Fooyin gebruiken

Bij de eerste start krijg je een dialoogvenster voor snelle instellingen. Daarmee kun je kiezen tussen verschillende weergaven. Er is ook een weergave Empty (Leeg). Met deze laatste kun je je eigen lay-out samenstellen door de weer te geven widgets en hun positie te kiezen.

Fooyin Quick Setup

In plaats van de interface aan te passen (kies Simple), heb ik eerst mappen toegevoegd aan de bibliotheek. Klik op Library / Configure. Je kunt meerdere bibliotheeklocaties toevoegen.

Hier is een afbeelding van de Simple-weergave.

Fooyin Simple

Via met menu View en de opdracht Quick Setup kan je snel een andere weergave selecteren.

Zoals de Vision-weergave.

Fooyin Vision

En de Obsidian-weergave.

Fooyin Obsidian

En als laatste weergave Ember.

Fooyin Ember

Met de Ember-weergave zitten de bedieningselementen voor de speler, de volumeregelaar, de zoekbalk en de zoekbalk ingeklemd in de bovenste helft van het venster. Als je ze liever ergens anders hebt, is dat geen probleem. Aangezien fooyin volledige controle biedt over de gebruikersinterface, kunnen we met een paar klikken zelf een weergave maken en elk gewenst element toevoegen en positioneren in de interface.

Naast verschillende weergaven kan je Fooyin configureren via het menu Edit > Settings.

Fooyin Settings

Fooyin verwijderen