Compare commits

...

12 Commits

Author SHA1 Message Date
ff5f94b34a settings: update devices list when devices changed
When a new device is connected/disconnected update audio devices list in
the media settings.

This commit also bumps jami-daemon to support DevicesChanged events on
Windows.

Gitlab: #689
Gitlab: #1878
Change-Id: Ibb607939897853794fdbd09eab72f378257d458c
2025-04-24 13:14:28 -04:00
def2e19abe packaging: stop using dpkg-sig
The dpkg-sig tool appears to no longer be maintained and, as far as I
can tell, was never actually used by Debian or Ubuntu to verify the
integrity of packages. Both distributions no longer include the dpkg-sig
package in their newest releases [1, 2].

[1] https://tracker.debian.org/pkg/dpkg-sig
[2] https://manpages.ubuntu.com/manpages/jammy/en/man1/dpkg-sig.1.html

Change-Id: I356ff7eafb340a49622cc37899dad7ef84dbd100
2025-04-24 11:35:52 -04:00
69430c4af3 packaging: fix Qt build on Debian testing
Change-Id: I798cdcf297ac3c0b448b4f61e192edd177e7fcbf
2025-04-24 10:13:21 -04:00
911fdbc9e5 frameless: fix participant overlay actions
Fixed click actions on the overlay for group calls.

Gitlab: #1990
Change-Id: I2331c6f8b34f0b2c2a89ecb52bb65c3563d50f17
2025-04-23 14:54:05 -04:00
80b3336f1b misc: bump daemon
Change-Id: I86ab9faec20b702091136063e5e86d70f89c81f7
2025-04-22 13:43:48 -04:00
f8bafd4154 packaging: remove Fedora 37 and 38 (EOL)
Change-Id: I8d25303236781cad8f97b2f6f35ee159d814cdb6
2025-04-22 13:39:48 -04:00
b8b06ccfa1 packaging: remove openSUSE Leap 15.4 (EOL)
Change-Id: I7d4dac8a9a8463e402b4eaff501bbab4fb368661
2025-04-21 10:30:45 -04:00
6cb5a8206a packaging: add openSUSE Leap 15.6
Change-Id: Iacd096705f8e88bc886715d04a378e66c4042ede
2025-04-21 10:30:37 -04:00
ae1a2462e2 packaging: add Ubuntu 25.04
Change-Id: I19a0d3e5de48a4e85822d5fcd00f83af0da16e1a
2025-04-18 11:16:41 -04:00
31581db7f5 misc: bump daemon
Brings in some build fixes. Also prevents applying the qmsetup patch
on Windows, and calls build-windows.py --init with the qt parameter
which is required if when using Qt installed in a non-standard location.

Change-Id: I40facbdc93289792130a15b0f4151f78137bc1ef
2025-04-16 17:16:47 -04:00
c323dcfe13 bump daemon
Change-Id: I30104807a42b70d9e3d4dbbc9baff3ffea9ec923
2025-04-16 13:31:00 -04:00
8a31aca346 JamiStrings.qml: cleanup
other → {source, new}

Change-Id: I60f4b81a8fc2a47395f73768caed383e0a597b64
2025-04-13 03:29:00 -04:00
15 changed files with 96 additions and 266 deletions

View File

@ -98,7 +98,9 @@ endif()
# then call find_package again. Unfortunately, even the second call to find_package sometimes
# fails due to qmsetup having been installed in the wrong directory. The following patch
# ensures that qmsetup is always installed in the directory where find_package looks for it.
list(APPEND QWINDOWKIT_PATCHES ${EXTRA_PATCHES_DIR}/0001-fix-qm_install_package-function.patch)
if(NOT WIN32)
list(APPEND QWINDOWKIT_PATCHES ${EXTRA_PATCHES_DIR}/0001-fix-qm_install_package-function.patch)
endif()
# qwindowkit (frameless window)
add_fetch_content(

View File

@ -374,7 +374,7 @@ def run_install(args):
# Prepare the build-windows.py script call
build_windows = 'extras/scripts/build-windows.py'
# Initialize build environment
execute_script([f'python {build_windows} --init'])
execute_script([f'python {build_windows} --init --qt={args.qt}'])
# Construct build command with options
build_cmd = [

2
daemon

Submodule daemon updated: a0eab28c23...95832cfc9d

View File

@ -167,14 +167,13 @@ DISTRIBUTIONS := \
ubuntu_22.04 \
ubuntu_24.04 \
ubuntu_24.10 \
fedora_37 \
fedora_38 \
ubuntu_25.04 \
fedora_39 \
fedora_40 \
fedora_41 \
alma_9 \
opensuse-leap_15.4 \
opensuse-leap_15.5 \
opensuse-leap_15.6 \
snap
IS_SHELL_INTERACTIVE := $(shell [ -t 0 ] && echo yes)

View File

@ -1,106 +0,0 @@
FROM fedora:37
RUN dnf clean all
RUN dnf update -y
RUN dnf install -y dnf-command\(builddep\) rpmdevtools && \
dnf install -y mock
RUN dnf groupinstall -y "X Software Development"
RUN dnf install -y \
git \
rpm-build \
tar \
make \
autoconf \
automake \
nasm \
speexdsp-devel \
pulseaudio-libs-devel \
libcanberra-devel \
libcurl-devel \
libtool \
mesa-libgbm-devel \
mesa-dri-drivers \
dbus-devel \
expat-devel \
pcre-devel \
yaml-cpp-devel \
libXext-devel \
libXfixes-devel \
yasm \
python2.7 \
python3-html5lib \
speex-devel \
gsm-devel \
chrpath \
check \
astyle \
uuid-c++-devel \
gettext-devel \
gcc-c++ \
which \
alsa-lib-devel \
systemd-devel \
libuuid-devel \
uuid-devel \
gnutls-devel \
nettle-devel \
opus-devel \
patch \
jsoncpp-devel \
libnatpmp-devel \
webkitgtk4-devel \
cryptopp-devel \
libva-devel \
libvdpau-devel \
msgpack-devel \
NetworkManager-libnm-devel \
openssl-devel \
clutter-devel \
clutter-gtk-devel \
libappindicator-gtk3-devel \
libnotify-devel \
libupnp-devel \
qrencode-devel \
libargon2-devel \
libsndfile-devel \
libdrm \
gperf \
bison \
clang \
clang-devel \
llvm-devel \
nodejs \
flex \
gstreamer1 gstreamer1-devel \
gstreamer1-plugins-base-devel \
gstreamer1-plugins-good \
gstreamer1-plugins-bad-free-devel \
nss-devel \
libxcb* \
libxkb* \
libX11-devel \
vulkan-devel \
libXrender-devel \
xcb-util-* \
xz \
xkeyboard-config \
libnotify \
wget \
libstdc++-static \
sqlite-devel \
perl-generators \
perl-English \
libxshmfence-devel \
ninja-build \
clang \
cmake \
fmt-devel \
pipewire-devel \
cups-devel #Chromium for Qt
ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh
CMD ["/opt/build-package-rpm.sh"]

View File

@ -1,106 +0,0 @@
FROM fedora:38
RUN dnf clean all
RUN dnf update -y
RUN dnf install -y dnf-command\(builddep\) rpmdevtools && \
dnf install -y mock
RUN dnf groupinstall -y "X Software Development"
RUN dnf install -y \
git \
rpm-build \
tar \
make \
autoconf \
automake \
nasm \
speexdsp-devel \
pulseaudio-libs-devel \
libcanberra-devel \
libcurl-devel \
libtool \
mesa-libgbm-devel \
mesa-dri-drivers \
dbus-devel \
expat-devel \
pcre-devel \
yaml-cpp-devel \
libXext-devel \
libXfixes-devel \
yasm \
python2.7 \
speex-devel \
gsm-devel \
chrpath \
check \
astyle \
uuid-c++-devel \
gettext-devel \
gcc-c++ \
which \
alsa-lib-devel \
systemd-devel \
libuuid-devel \
uuid-devel \
gnutls-devel \
nettle-devel \
opus-devel \
patch \
jsoncpp-devel \
libnatpmp-devel \
webkitgtk4-devel \
cryptopp-devel \
libva-devel \
libvdpau-devel \
msgpack-devel \
NetworkManager-libnm-devel \
openssl-devel \
clutter-devel \
clutter-gtk-devel \
libappindicator-gtk3-devel \
libnotify-devel \
libupnp-devel \
qrencode-devel \
libargon2-devel \
libsndfile-devel \
libdrm \
gperf \
bison \
clang \
clang-devel \
llvm-devel \
nodejs \
flex \
gstreamer1 gstreamer1-devel \
gstreamer1-plugins-base-devel \
gstreamer1-plugins-good \
gstreamer1-plugins-bad-free-devel \
nss-devel \
libxcb* \
libxkb* \
libX11-devel \
vulkan-devel \
libXrender-devel \
xcb-util-* \
xz \
xkeyboard-config \
libnotify \
wget \
libstdc++-static \
sqlite-devel \
perl-generators \
perl-English \
libxshmfence-devel \
ninja-build \
clang \
cmake \
fmt-devel \
python3-html5lib \
cups-devel \
pipewire-devel
ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-rpm.sh
CMD ["/opt/build-package-rpm.sh"]

View File

@ -1,10 +1,9 @@
FROM opensuse/leap:15.4
FROM opensuse/leap:15.6
RUN zypper refresh
RUN zypper --gpg-auto-import-keys refresh
RUN zypper --non-interactive install -y \
dnf \
dnf-command\(builddep\) \
rpmdevtools \
Mesa-dri-devel Mesa-dri \
git \
@ -29,11 +28,11 @@ RUN zypper --non-interactive install -y \
speex-devel \
libgsm-devel \
chrpath \
check \
check-devel \
astyle \
gettext-devel \
gettext-tools \
which \
alsa-lib-devel \
alsa-devel \
systemd-devel \
libuuid-devel \
uuid-devel \
@ -44,9 +43,10 @@ RUN zypper --non-interactive install -y \
libcryptopp-devel \
libva-devel \
libvdpau-devel \
msgpack-devel \
msgpack-c-devel \
msgpack-cxx-devel \
clutter-devel \
openssl-devel \
libopenssl-devel \
clutter-gtk-devel \
libnma-devel \
libcryptopp-devel \
@ -55,20 +55,20 @@ RUN zypper --non-interactive install -y \
libgsm-devel \
gtk3-devel \
libappindicator-devel \
sqlite-devel \
ffmpeg-4-libavutil-devel \
sqlite3-devel \
gtk3-devel\
qrencode-devel \
python310 \
python3-python-dateutil \
python3-html5lib \
libsndfile-devel \
libdrm \
libdrm-devel \
gperf \
bison \
flex \
ffmpeg ffmpeg-devel \
nodejs18 \
ffmpeg \
ffmpeg-devel \
nodejs20 \
mozilla-nss-devel \
python-xml \
python3-six \
@ -85,7 +85,7 @@ RUN zypper --non-interactive install -y \
xorg-x11-devel \
xz \
xkeyboard-config \
libnotify \
libnotify-devel \
argon2-devel \
libxshmfence-devel \
xproto-devel \
@ -102,7 +102,7 @@ RUN zypper --non-interactive install -y \
wget \
pipewire-devel
# openSUSE Leap 15.4 comes with Python 3.6 by default,
# openSUSE Leap 15.6 comes with Python 3.6 by default,
# but we need at least 3.7 to compile Qt 6.6.1
RUN rm /usr/bin/python3 && ln -s /usr/bin/python3.10 /usr/bin/python3
@ -113,10 +113,4 @@ ADD extras/packaging/gnu-linux/scripts/build-package-rpm.sh /opt/build-package-r
ENV CC=gcc
ENV CXX=g++
# Setting this variable so that FFmpeg gets built without pipewiregrab
# (see daemon/contrib/bootstrap and daemon/contrib/src/ffmpeg/rules.mak)
# We rely on PipeWire for screen sharing on Wayland, but the version available on openSUSE Leap 15.4 is too old.
ENV DISABLE_PIPEWIRE=true
CMD ["/opt/build-package-rpm.sh"]

View File

@ -0,0 +1,29 @@
FROM ubuntu:25.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get clean
RUN apt-get update && \
apt-get install -y -o Acquire::Retries=10 \
devscripts \
equivs \
python-is-python3 \
wget
ADD extras/packaging/gnu-linux/scripts/prebuild-package-debian.sh /opt/prebuild-package-debian.sh
COPY extras/packaging/gnu-linux/rules/debian-qt/control /tmp/builddeps/debian/control
RUN /opt/prebuild-package-debian.sh qt-deps
COPY extras/packaging/gnu-linux/rules/debian/control /tmp/builddeps/debian/control
RUN /opt/prebuild-package-debian.sh jami-deps
# Remove the libre2-dev package in order to force Qt to build using the bundled
# version of the RE2 library. This is necessary because the system version of the
# library on Ubuntu 25.04 (libre2-11) is not compatible with the one used in
# Qt 6.6.1 due to an API change:
# https://codereview.qt-project.org/c/qt/qtwebengine/+/516094
RUN apt-get remove -y libre2-dev libre2-11
ADD extras/packaging/gnu-linux/scripts/build-package-debian.sh /opt/build-package-debian.sh
CMD ["/opt/build-package-debian.sh"]

View File

@ -103,6 +103,8 @@ if [ -f /etc/os-release ]; then
ENDTAG="ubuntu_24.04"
elif [ "${UBUNTU_CODENAME}" = "oracular" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_24.10" ]; then
ENDTAG="ubuntu_24.10"
elif [ "${UBUNTU_CODENAME}" = "plucky" ] || [ "${ID}_${VERSION_ID}" = "ubuntu_25.04" ]; then
ENDTAG="ubuntu_25.04"
elif [ "${ID}" = "debian" ] && \
[ "$(command -v lsb_release)" ] && \
[ "$(lsb_release -rs)" = "testing" ]; then

View File

@ -47,7 +47,11 @@ if [ ! -f "${qt_deb_path}" ] || [ "${FORCE_REBUILD_QT}" = "true" ]; then
# HACK: For now on ubuntu 24.04 there is no python3.10 package
# So create a PyEnv environment to install the required packages
if cat /etc/os-release | grep -Eq "24.04"; then
# NOTE: We use this on Ubuntu 25.04 and Debian 13 ("trixie") too
# because otherwise we get a ModuleNotFoundError when building
# Qt 6.6.1 (specifically the chromium submodule in QtWebEngine)
# due to the version of python used (3.13) being too recent.
if cat /etc/os-release | grep -Eq "24.04|25.04|trixie"; then
apt-get install git gcc make python3-pip libssl-dev curl libreadline-dev -y
curl https://pyenv.run | bash
export PYENV_ROOT="$HOME/.pyenv"

View File

@ -101,12 +101,6 @@ if [ ! -f "${RPM_PATH}" ]; then
# Cache the built Qt RPM package.
if [[ "${DISTRIBUTION:0:4}" == "rhel" ]]; then
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.el8.x86_64.rpm "${RPM_PATH}"
elif [[ "${DISTRIBUTION}" == "fedora_36" ]]; then
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc36.x86_64.rpm "${RPM_PATH}"
elif [[ "${DISTRIBUTION}" == "fedora_37" ]]; then
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc37.x86_64.rpm "${RPM_PATH}"
elif [[ "${DISTRIBUTION}" == "fedora_38" ]]; then
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc38.x86_64.rpm "${RPM_PATH}"
elif [[ "${DISTRIBUTION}" == "fedora_39" ]]; then
cp /root/rpmbuild/RPMS/x86_64/jami-libqt-$QT_MAJOR_MINOR_PATCH-*.fc39.x86_64.rpm "${RPM_PATH}"
elif [[ "${DISTRIBUTION}" == "fedora_40" ]]; then

View File

@ -80,9 +80,6 @@ EOF
find ./extras/packaging/gnu-linux/packages -type f -name '*.ddeb' -print0 | xargs -0 -I{} mv {} {}.deb
for package in ./extras/packaging/gnu-linux/packages/${DISTRIBUTION}*/*.deb; do
echo "## signing: ${package} ##"
dpkg-sig -k ${KEYID} --sign builder ${package}
echo "## including ${package} ##"
package_name=$(dpkg -I ${package} | grep -m 1 Package: | awk '{print $2}')
package_arch=$(dpkg -I ${package} | grep -m 1 Architecture: | awk '{print $2}')

View File

@ -72,6 +72,9 @@ Item {
}
}
QWKSetParentHitTestVisible {
}
TextMetrics {
id: nameTextMetrics
text: bestName

View File

@ -71,19 +71,19 @@ Item {
property string transferTo: qsTr("Transfer to")
// Device import/linking
property string scanToImportAccount: qsTr("Scan this QR code on your other device to proceed with importing your account.")
property string scanToImportAccount: qsTr("To continue the import account operation, scan the following QR code on the source device.")
property string waitingForToken: qsTr("Please wait…")
property string scanQRCode: qsTr("Scan QR code")
property string connectingToDevice: qsTr("Action required.\nPlease confirm account on the source device.")
property string connectingToDevice: qsTr("Action required. Please confirm account on the source device.")
property string confirmAccountImport: qsTr("Authenticating device")
property string transferringAccount: qsTr("Transferring account…")
property string cantScanQRCode: qsTr("If you are unable to scan the QR code, enter this token on your other device to proceed.")
property string cantScanQRCode: qsTr("If you are unable to scan the QR code, enter the following token on the source device.")
property string optionConfirm: qsTr("Confirm")
property string optionTryAgain: qsTr("Try again")
property string importFailed: qsTr("Import failed")
property string importFailed: qsTr("An error occurred while importing the account.")
property string importFromAnotherAccount: qsTr("Import from another account")
property string connectToAccount: qsTr("Connect to account")
property string authenticationError: qsTr("An authentication error occurred. Please check credentials and try again.")
property string authenticationError: qsTr("An authentication error occurred while linking the device. Please check credentials and try again.")
// AccountMigrationDialog
property string authenticationRequired: qsTr("Authentication required")
@ -535,10 +535,10 @@ Item {
property string enableAutoUpdates: qsTr("Enable/Disable automatic updates")
property string updatesTitle: qsTr("Updates")
property string updateDialogTitle: qsTr("Update")
property string updateFound: qsTr("A new version of Jami is available.\nDo you want to update Jami now?\nTo continue, click Update.")
property string updateNotFound: qsTr("No new version of Jami was found")
property string updateCheckError: qsTr("An error occurred while checking for a new version.")
property string updateNetworkError: qsTr("A network error occurred.")
property string updateFound: qsTr("A new version of the Jami application is available. Do you want to update now? To continue, click Update.")
property string updateNotFound: qsTr("The application is up to date.")
property string updateCheckError: qsTr("An error occurred while checking for updates.")
property string updateNetworkError: qsTr("A network error occurred while checking for updates.")
property string updateSSLError: qsTr("An SSL error occurred.")
property string updateDownloadCanceled: qsTr("Installer download was canceled by user.")
property string updateDownloading: "Downloading"
@ -606,7 +606,7 @@ Item {
property string linkDeviceScanQR: qsTr("On the new device, initiate a new account.\nSelect Add account -> Connect from another device.\nWhen ready, scan the QR code.")
property string linkDeviceEnterManually: qsTr("Alternatively you could enter the authentication code manually.")
property string linkDeviceEnterCodePlaceholder: qsTr("Enter authentication code")
property string linkDeviceAllSet: qsTr("You are all set!\nYour account is successfully imported on the new device!")
property string linkDeviceAllSet: qsTr("The account was imported successfully.")
property string linkDeviceFoundAddress: qsTr("New device found at address below. Is that you?\nClicking on confirm will continue transfering account.")
property string linkDeviceNewDeviceIP: qsTr("New device IP address: %1")
property string linkDeviceCloseWarningTitle: qsTr("Do you want to exit?")

View File

@ -25,7 +25,7 @@ import "../../commoncomponents"
SettingsPageBase {
id: root
property int itemWidth: 188
property int itemWidth: 250
title: JamiStrings.audio
flickableContent: ColumnLayout {
@ -45,16 +45,34 @@ SettingsPageBase {
target: UtilsAdapter
function onChangeLanguage() {
inputAudioModel.reset();
outputAudioModel.reset();
ringtoneAudioModel.reset();
rootLayout.resetDeviceModels();
rootLayout.resetDeviceIndices();
}
}
function resetDeviceModels() {
inputAudioModel.reset();
outputAudioModel.reset();
ringtoneAudioModel.reset();
}
function resetDeviceIndices() {
inputComboBoxSetting.modelIndex = inputComboBoxSetting.comboModel.getCurrentIndex();
outputComboBoxSetting.modelIndex = outputComboBoxSetting.comboModel.getCurrentIndex();
ringtoneComboBoxSetting.modelIndex = ringtoneComboBoxSetting.comboModel.getCurrentIndex();
}
Connections {
target: AvAdapter
function onAudioDeviceListChanged(inputs, outputs) {
rootLayout.resetDeviceModels();
rootLayout.resetDeviceIndices();
}
}
function populateAudioSettings() {
inputComboBoxSetting.modelIndex = inputComboBoxSetting.comboModel.getCurrentIndex();
outputComboBoxSetting.modelIndex = outputComboBoxSetting.comboModel.getCurrentIndex();
ringtoneComboBoxSetting.modelIndex = ringtoneComboBoxSetting.comboModel.getCurrentIndex();
rootLayout.resetDeviceIndices();
if (audioManagerComboBoxSetting.comboModel.rowCount() > 0) {
audioManagerComboBoxSetting.modelIndex = audioManagerComboBoxSetting.comboModel.getCurrentSettingIndex();
}