Update use of media_dir following change in Libervia Media:

Libervia Media is now a Python package instead of files to put in a directory to specify
in settings. The discovery is now automatic, removing the need for settings and enabling
easier installation. Furthermore, it should now work even if the package is zipped.
`libervia_media` can now be specified as a dependency for frontends requiring it.
This commit is contained in:
Goffi 2026-01-13 10:57:19 +01:00
commit 919cafc68c
8 changed files with 12 additions and 20 deletions

View file

@ -54,8 +54,8 @@ class Const:
## Configuration ##
CONFIG_PATHS = [
# /etc/_ is used for system-related settings (e.g. when media_dir is set by the
# distribution and has not reason to change, or in a Docker image)
# /etc/_ is used for system-related settings (when a value is set by the
# distribution, or in a Docker image)
Path("/etc/_"),
Path("/etc/"),
Path.home(),
@ -523,7 +523,6 @@ class Const:
# BaseDirectory = None
# Const.DEFAULT_CONFIG = {
# "local_dir": "/data/data/org.libervia.cagou/app",
# "media_dir": "/data/data/org.libervia.cagou/files/app/media",
# # FIXME: temporary location for downloads, need to call API properly
# "downloads_dir": os.path.join(
# Environment.getExternalStoragePublicDirectory(

View file

@ -28,7 +28,7 @@ from typing import Optional, List, Tuple, Dict, cast
from libervia import backend
from libervia.backend.core.i18n import _, D_, language_switch
from libervia.backend.core import patches
from libervia.backend.models.tor import TorData, TorMode
from libervia.backend.models.tor import TorData
patches.apply()
from twisted.application import app, service

View file

@ -18,7 +18,6 @@ import sys
import os
import os.path
import json
from pathlib import Path
from zope.interface import implementer
from twisted.names import client as dns_client
from twisted.python.procutils import which
@ -28,13 +27,12 @@ from twisted.internet import protocol
from twisted.internet import abstract
from twisted.internet import error as int_error
from twisted.internet import _sslverify
from libervia.backend import G
from libervia.backend.core.i18n import _, D_
from libervia.backend.core.constants import Const as C
from libervia.backend.core.log import getLogger
from libervia.backend.core import exceptions
from libervia.backend.tools.common import async_process
from libervia.backend.memory import params
from libervia import media
log = getLogger(__name__)
@ -283,8 +281,7 @@ class AndroidPlugin(object):
self.am = activity.getSystemService(Context.AUDIO_SERVICE)
# sound notification
media_dir = G.config.common.media_dir
assert media_dir is not None
media_dir = media.get_path()
notif_path = media_dir / "sounds" / "notifications" / "music-box.mp3"
self.notif_player = MediaPlayer()
self.notif_player.setDataSource(str(notif_path))

View file

@ -1,7 +1,7 @@
#!/usr/bin/env python3
# SAT: a jabber client
# Libervia XMPP client.
# Copyright (C) 2009, 2010, 2011, 2012, 2013 Jérôme Poisson (goffi@goffi.org)
# Copyright (C) 2013 Adrien Cossa (souliane@mailoo.org)
@ -24,6 +24,7 @@ from libervia.backend.core import exceptions
from libervia.backend.test import helpers, helpers_plugins
from libervia.backend.plugins import plugin_misc_radiocol as plugin
from libervia.backend.plugins import plugin_misc_room_game as plugin_room_game
from libervia import media
from .constants import Const
from twisted.words.protocols.jabber.jid import JID
@ -76,8 +77,7 @@ class RadiocolTest(helpers.SatTestCase):
self.host.get_client(profile) # init self.host.profiles[profile]
self.songs = []
self.playlist = []
assert self.host.memory.config.common.media_dir is not None
self.sound_dir = str(self.host.memory.config.common.media_dir / "/test/sound/")
self.sound_dir = str(media.get_path() / "/test/sound/")
try:
for filename in os.listdir(self.sound_dir):
if filename.endswith(".ogg") or filename.endswith(".mp3"):

View file

@ -37,6 +37,7 @@ from jinja2 import utils
from jinja2 import TemplateNotFound
from jinja2 import pass_context
from jinja2.loaders import split_template_path
from libervia import media
from lxml import etree
from markupsafe import Markup as safe
import pygments
@ -518,7 +519,7 @@ class Renderer:
self.env.filters["media_type_sub"] = self.media_type_sub
# custom tests
self.env.tests["in_the_past"] = self._in_the_past
self.fa_svgs_path = Path(host.media_dir, "fonts/fontawesome/svgs")
self.fa_svgs_path = media.get_path() / "fonts/fontawesome/svgs"
# policies
self.env.policies["ext.i18n.trimmed"] = True

View file

@ -236,10 +236,6 @@ class TorSettings(ConfigOptions):
class CommonSettings(ConfigOptions):
# "media_dir": "/usr/share/" + Const.APP_NAME_FILE + "/media",
media_dir: DirectoryPath | None = Field(
default=None, description="Directory for media files"
)
local_dir: DirectoryPathAuto = Field(
default=xdg_data_home / C.APP_NAME_FILE,
description="Local directory for Libervia data",

View file

@ -151,7 +151,6 @@ class LiberviaCli:
self.console = console.Console(theme=C.THEME_DEFAULT)
self.settings = main_config
self.cli_settings = main_config.get_settings(CLISettings)
self.media_dir = main_config.common.media_dir
self.set_color_theme()
bridge_module = dynamic_import.bridge(bridge_name, "libervia.frontends.bridge")
if bridge_module is None:

View file

@ -48,6 +48,7 @@ from PyQt6.QtWidgets import (
QWidget,
)
import gi
from libervia import media
from libervia.backend.core.i18n import _
from libervia.frontends.tools import aio, display_servers, webrtc
@ -204,8 +205,7 @@ class AVCallUI(QMainWindow):
@classmethod
async def run(cls, parent, call_data):
"""Run PyQt loop and show the app"""
media_dir = parent.host.settings.common.media_dir
icons_path = media_dir / "fonts/fontawesome/svgs/solid"
icons_path = media.get_path() / "fonts/fontawesome/svgs/solid"
app = QApplication([])
av_call_gui = cls(parent.host, icons_path)
av_call_gui.show()