summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.build.yml225
-rw-r--r--.github/dependabot.yml8
-rwxr-xr-x.github/workflows/archlinux.sh47
-rwxr-xr-x.github/workflows/builds.sh65
-rw-r--r--.github/workflows/builds.yml94
-rwxr-xr-x.github/workflows/debian.sh73
-rwxr-xr-x.github/workflows/fedora.sh57
-rwxr-xr-x.github/workflows/mate-desktop.sh99
-rw-r--r--.github/workflows/release.yml39
-rwxr-xr-x.github/workflows/ubuntu.sh75
-rw-r--r--.travis.yml77
-rw-r--r--capplets/keybindings/eggcellrendererkeys.c35
-rw-r--r--capplets/keybindings/mate-keybinding-properties.ui2
-rw-r--r--capplets/keyboard/mate-keyboard-properties-dialog.ui20
-rw-r--r--capplets/keyboard/mate-keyboard-properties-xkb.c24
-rw-r--r--capplets/windows/window-properties.ui5
-rw-r--r--font-viewer/font-view.c41
-rw-r--r--font-viewer/meson.build1
-rw-r--r--mate-control-center.pot2
-rw-r--r--meson.build1
20 files changed, 660 insertions, 330 deletions
diff --git a/.build.yml b/.build.yml
deleted file mode 100644
index 06c41964..00000000
--- a/.build.yml
+++ /dev/null
@@ -1,225 +0,0 @@
-##########################################################
-# THE FOLLOWING LINES IS USED BY docker-build
-##########################################################
-requires:
- archlinux:
- # Useful URL: https://git.archlinux.org/svntogit/community.git/tree/mate-control-center
- - autoconf-archive
- - clang
- - file
- - gcc
- - git
- - gobject-introspection
- - intltool
- - itstool
- - libxss
- - libgtop
- - libmatekbd
- - make
- - marco
- - mate-common
- - mate-menus
- - polkit
- - udisks2
- - which
- - yelp-tools
-
- debian:
- # Useful URL: https://github.com/mate-desktop/debian-packages
- # Useful URL: https://salsa.debian.org/debian-mate-team/mate-control-center
- - autopoint
- - clang
- - clang-tools
- - cppcheck
- - curl
- - desktop-file-utils
- - git
- - gobject-introspection
- - intltool
- - libcanberra-gtk3-dev
- - libdconf-dev
- - libayatana-appindicator3-dev
- - libglib2.0-dev
- - libgtk-3-dev
- - libgtop2-dev
- - libmarco-dev
- - libmate-desktop-dev
- - libmate-menu-dev
- - libmatekbd-dev
- - libpango1.0-dev
- - librsvg2-bin
- - librsvg2-dev
- - libstartup-notification0-dev
- - libudisks2-dev
- - libx11-dev
- - libxcursor-dev
- - libxi-dev
- - libxklavier-dev
- - libxml2-dev
- - libxrandr-dev
- - libxss-dev
- - libxt-dev
- - libpolkit-gobject-1-dev
- - libsystemd-dev
- - make
- - mate-common
- - polkitd
- - pkexec
- - python3-lxml
- - shared-mime-info
- - xsltproc
- - yelp-tools
-
- fedora:
- # Useful URL: https://src.fedoraproject.org/cgit/rpms/mate-control-center.git
- - autoconf-archive
- - accountsservice-devel
- - cairo-gobject-devel
- - clang
- - clang-analyzer
- - cppcheck-htmlreport
- - dconf-devel
- - desktop-file-utils
- - gcc
- - git
- - gobject-introspection-devel
- - gtk3-devel
- - iso-codes-devel
- - itstool
- - libappindicator-gtk3-devel
- - libSM-devel
- - libXScrnSaver-devel
- - libcanberra-devel
- - libmatekbd-devel
- - libgtop2-devel
- - librsvg2-devel
- - librsvg2-tools
- - libudisks2-devel
- - make
- - marco-devel
- - mate-menus-devel
- - polkit-devel
- - python3-lxml
- - mate-common
- - redhat-rpm-config
- - startup-notification-devel
- - systemd-devel
- - which
-
- ubuntu:
- - autopoint
- - curl
- - clang
- - clang-tools
- - desktop-file-utils
- - git
- - gobject-introspection
- - intltool
- - libcanberra-gtk3-dev
- - libdconf-dev
- - libglib2.0-dev
- - libgtk-3-dev
- - libgtop2-dev
- - libmarco-dev
- - libmate-desktop-dev
- - libmate-menu-dev
- - libmatekbd-dev
- - libpango1.0-dev
- - librsvg2-bin
- - librsvg2-dev
- - libstartup-notification0-dev
- - libudisks2-dev
- - libx11-dev
- - libxcursor-dev
- - libxi-dev
- - libxklavier-dev
- - libxml2-dev
- - libxrandr-dev
- - libxss-dev
- - libxt-dev
- - libpolkit-gobject-1-dev
- - libsystemd-dev
- - make
- - mate-common
- - policykit-1
- - python3-lxml
- - shared-mime-info
- - xsltproc
- - yelp-tools
-
-variables:
- - 'CHECKERS="
- -enable-checker deadcode.DeadStores
- -enable-checker alpha.deadcode.UnreachableCode
- -enable-checker alpha.core.CastSize
- -enable-checker alpha.core.CastToStruct
- -enable-checker alpha.core.IdenticalExpr
- -enable-checker alpha.core.SizeofPtr
- -enable-checker alpha.security.ArrayBoundV2
- -enable-checker alpha.security.MallocOverflow
- -enable-checker alpha.security.ReturnPtrRange
- -enable-checker alpha.unix.SimpleStream
- -enable-checker alpha.unix.cstring.BufferOverlap
- -enable-checker alpha.unix.cstring.NotNullTerminated
- -enable-checker alpha.unix.cstring.OutOfBounds
- -enable-checker alpha.core.FixedAddr
- -enable-checker security.insecureAPI.strcpy"'
- - MATE_DESKTOP_VERSION=1.27.1
-
-before_scripts:
- - cd ${START_DIR}
- - if [ ! -f mate-desktop-${MATE_DESKTOP_VERSION}.tar.xz ];then
- - curl -Ls -o mate-desktop-${MATE_DESKTOP_VERSION}.tar.xz https://github.com/mate-desktop/mate-desktop/releases/download/v${MATE_DESKTOP_VERSION}/mate-desktop-${MATE_DESKTOP_VERSION}.tar.xz
- - fi
- - tar xf mate-desktop-${MATE_DESKTOP_VERSION}.tar.xz
- - cd mate-desktop-${MATE_DESKTOP_VERSION}
- - if [ ${DISTRO_NAME} == "debian" -o ${DISTRO_NAME} == "ubuntu" ];then
- - ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu
- - else
- - ./autogen.sh --prefix=/usr
- - fi
- - if [ ${TRAVIS} == "false" ]; then
- - make clean
- - fi
- - make
- - make install
-
- - cd ${START_DIR}
- - curl -Ls -o /usr/bin/gla11y https://github.com/hypra/gla11y/raw/v0.3/gla11y
- - chmod +x /usr/bin/gla11y
-
-build_scripts:
- - if [ ${DISTRO_NAME} == "debian" ];then
- - export CFLAGS+=" -Wsign-compare -Wunused-parameter"
- - cppcheck --enable=warning,style,performance,portability,information,missingInclude -i"mate-desktop-${MATE_DESKTOP_VERSION}" .
- - fi
-
- - NOCONFIGURE=1 ./autogen.sh
- - scan-build $CHECKERS ./configure --enable-compile-warnings=maximum
- - if [ ${DISTRO_NAME} == "debian" ];then
- - scan-build $CHECKERS --keep-cc --use-cc=clang --use-c++=clang++ -o html-report make -j $(( $CPU_COUNT + 1 ))
- - make clean
- - fi
- - scan-build $CHECKERS --keep-cc -o html-report make -j $(( $CPU_COUNT + 1 ))
-
-after_scripts:
- - if [ ${DISTRO_NAME} == "fedora" ];then
- - cppcheck --xml --output-file=cppcheck.xml --enable=warning,style,performance,portability,information,missingInclude -i"mate-desktop-${MATE_DESKTOP_VERSION}" .
- - cppcheck-htmlreport --title=${REPO_NAME} --file=cppcheck.xml --report-dir=cppcheck-htmlreport
- - ./gen-index -l 20 -i https://github.com/${OWNER_NAME}/mate-icon-theme/raw/master/mate/16x16/categories/preferences-desktop.png
- - fi
- - make distcheck
-
-releases:
- draft: false
- prerelease: false
- checksum: true
- file_glob: true
- files: mate-control-center-*.tar.xz
- github_release:
- tags: true
- overwrite: true
- base_version: 1.20.0
- notify_servers:
- - https://release.mate-desktop.org/release
-
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 00000000..80851cd3
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,8 @@
+# Enable dependabot to keep our GHA pins automatically
+# updated, so we don't fall too far behind in the future
+version: 2
+updates:
+ - package-ecosystem: github-actions
+ directory: "/"
+ schedule:
+ interval: weekly
diff --git a/.github/workflows/archlinux.sh b/.github/workflows/archlinux.sh
new file mode 100755
index 00000000..eac6d4fb
--- /dev/null
+++ b/.github/workflows/archlinux.sh
@@ -0,0 +1,47 @@
+#!/usr/bin/bash
+
+# Use grouped output messages
+infobegin() {
+ echo "::group::${1}"
+}
+infoend() {
+ echo "::endgroup::"
+}
+
+# Required packages on Archlinux
+requires=(
+ ccache # Use ccache to speed up build
+ clang # Build with clang on Archlinux
+ meson # Used for meson build
+)
+
+requires+=(
+ autoconf-archive
+ file
+ gcc
+ git
+ glib2-devel
+ gobject-introspection
+ intltool
+ itstool
+ libayatana-appindicator
+ libxss
+ libgtop
+ libmatekbd
+ make
+ marco
+ mate-common
+ mate-menus
+ polkit
+ udisks2
+ which
+ yelp-tools
+)
+
+infobegin "Update system"
+pacman --noconfirm -Syu
+infoend
+
+infobegin "Install dependency packages"
+pacman --noconfirm -S ${requires[@]}
+infoend
diff --git a/.github/workflows/builds.sh b/.github/workflows/builds.sh
new file mode 100755
index 00000000..24759fc8
--- /dev/null
+++ b/.github/workflows/builds.sh
@@ -0,0 +1,65 @@
+#!/usr/bin/bash
+
+set -e
+set -o pipefail
+
+CPUS=$(grep processor /proc/cpuinfo | wc -l)
+
+# Use grouped output messages
+infobegin() {
+ echo "::group::${1}"
+}
+infoend() {
+ echo "::endgroup::"
+}
+
+# Run meson first, then run autotools
+# Because meson dist requires a clean git workspace
+# Autotools will modify some files (such as po, etc.), making them dirty.
+if [ -f meson.build ]; then
+
+ infobegin "Configure (meson)"
+ meson setup _build --prefix=/usr
+ infoend
+
+ infobegin "Build (meson)"
+ meson compile -C _build
+ infoend
+
+ infobegin "Test (meson)"
+ ninja -C _build test
+ infoend
+
+ infobegin "Dist (meson)"
+ # Git safedirectory stop ninja dist
+ # https://github.com/git/git/commit/8959555cee7ec045958f9b6dd62e541affb7e7d9
+ # https://git-scm.com/docs/git-config/2.35.2#Documentation/git-config.txt-safedirectory
+ git config --global --add safe.directory ${PWD}
+ ninja -C _build dist
+ infoend
+fi
+
+if [ -f autogen.sh ]; then
+ infobegin "Configure (autotools)"
+ NOCONFIGURE=1 ./autogen.sh
+ ./configure --prefix=/usr --enable-compile-warnings=maximum || {
+ cat config.log
+ exit 1
+ }
+ infoend
+
+ infobegin "Build (autotools)"
+ make -j ${CPUS}
+ infoend
+
+ infobegin "Check (autotools)"
+ make -j ${CPUS} check || {
+ find -name test-suite.log -exec cat {} \;
+ exit 1
+ }
+ infoend
+
+ infobegin "Distcheck (autotools)"
+ make -j ${CPUS} distcheck
+ infoend
+fi
diff --git a/.github/workflows/builds.yml b/.github/workflows/builds.yml
new file mode 100644
index 00000000..4387c97c
--- /dev/null
+++ b/.github/workflows/builds.yml
@@ -0,0 +1,94 @@
+name: CI Build
+
+on:
+ push:
+ branches:
+ - master
+ pull_request:
+ branches:
+ - master
+ workflow_dispatch:
+
+# cancel already running builds of the same branch or pull request
+concurrency:
+ group: ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.head_ref || github.sha }}
+ cancel-in-progress: true
+
+env:
+ MATE_DESKTOP_VERSION: 1.28.2
+ CACHE_PATH: /tmp/.cache
+
+jobs:
+ build:
+ name: Build on ${{matrix.container}} (using ${{matrix.cc}})
+ runs-on: ubuntu-latest
+ container:
+ image: ${{matrix.container}}
+ volumes:
+ - /tmp/.cache
+ - /var/cache/apt
+
+ strategy:
+ fail-fast: false # don't cancel other jobs in the matrix if one fails
+ matrix:
+ container:
+ [
+ "debian:testing",
+ "fedora:latest",
+ "ubuntu:rolling",
+ "archlinux:latest",
+ ]
+ cc: ["gcc"]
+ cxx: ["g++"]
+ include:
+ - container: "archlinux:latest"
+ cc: "clang"
+ cxx: "clang++"
+
+ env:
+ # Speed up build with ccache
+ CC: ccache ${{ matrix.cc }}
+ CXX: ccache ${{ matrix.cxx }}
+ CONTAINER: ${{ matrix.container }}
+
+ steps:
+ - name: Setup environment variables
+ id: distro-name
+ shell: bash
+ run: |
+ split=(${CONTAINER//:/ })
+ distro=${split[0]}
+ short_sha=${SHA:0:8}
+ echo "DISTRO=$distro" | tee -a $GITHUB_ENV
+ - name: Install git command
+ shell: bash
+ run: |
+ echo "::group::Install git ..."
+ apt-get update -qq && apt-get install --assume-yes git || true
+ dnf update -y && dnf install -y git || true
+ pacman --noconfirm -Sy git || true
+ echo "::endgroup::"
+ - name: Repository checkout
+ uses: actions/checkout@v4
+ with:
+ submodules: "true"
+ - name: Install dependency packages
+ run: .github/workflows/${{ env.DISTRO }}.sh
+ - name: Enable ccache to speed up builds
+ uses: hendrikmuhs/[email protected]
+ with:
+ key: ${{ env.DISTRO }}-${{ matrix.cc }}
+
+ # INFO: M-C-C depends mate-desktop 1.27.1+, so we should install it from source.
+ - name: Cache mate-desktop binary packages
+ uses: actions/cache@v3
+ id: cache-mate-desktop
+ with:
+ path: ${{ env.CACHE_PATH }}
+ key: ${{ env.DISTRO }}-build-mate-desktop-${{env.MATE_DESKTOP_VERSION}}
+ - name: Built and install mate-desktop from source
+ run: .github/workflows/mate-desktop.sh ${{env.MATE_DESKTOP_VERSION}} ${{ env.CACHE_PATH }}
+ # INFO: M-C-C depends mate-desktop 1.27.1+, install finished.
+
+ - name: Build the source code
+ run: .github/workflows/builds.sh
diff --git a/.github/workflows/debian.sh b/.github/workflows/debian.sh
new file mode 100755
index 00000000..61510e36
--- /dev/null
+++ b/.github/workflows/debian.sh
@@ -0,0 +1,73 @@
+#!/usr/bin/bash
+
+# Use grouped output messages
+infobegin() {
+ echo "::group::${1}"
+}
+infoend() {
+ echo "::endgroup::"
+}
+
+# Required packages on Debian
+requires=(
+ ccache # Use ccache to speed up build
+ meson # Used for meson build
+)
+
+requires+=(
+ autoconf-archive
+ autopoint
+ cppcheck
+ curl
+ desktop-file-utils
+ gettext
+ git
+ gobject-introspection
+ intltool
+ make
+ mate-common
+ pkexec
+ polkitd
+ python3-lxml
+ shared-mime-info
+ xsltproc
+)
+
+dev_requires=(
+ libayatana-appindicator3-dev
+ libcanberra-gtk3-dev
+ libdconf-dev
+ libglib2.0-dev
+ libgtk-3-dev
+ libgtop2-dev
+ libmarco-dev
+ libmate-desktop-dev
+ libmate-menu-dev
+ libmatekbd-dev
+ libpango1.0-dev
+ libpolkit-gobject-1-dev
+ librsvg2-bin
+ librsvg2-dev
+ libstartup-notification0-dev
+ libsystemd-dev
+ libudisks2-dev
+ libx11-dev
+ libxcursor-dev
+ libxi-dev
+ libxklavier-dev
+ libxml2-dev
+ libxrandr-dev
+ libxss-dev
+ libxt-dev
+)
+
+infobegin "Update system"
+apt-get update -qq
+infoend
+
+infobegin "Install dependency packages"
+env DEBIAN_FRONTEND=noninteractive \
+ apt-get install --assume-yes \
+ ${requires[@]} \
+ ${dev_requires[@]}
+infoend
diff --git a/.github/workflows/fedora.sh b/.github/workflows/fedora.sh
new file mode 100755
index 00000000..9e9b1cd2
--- /dev/null
+++ b/.github/workflows/fedora.sh
@@ -0,0 +1,57 @@
+#!/usr/bin/bash
+
+# Use grouped output messages
+infobegin() {
+ echo "::group::${1}"
+}
+infoend() {
+ echo "::endgroup::"
+}
+
+# Required packages on Fedora
+requires=(
+ ccache # Use ccache to speed up build
+ meson # Used for meson build
+)
+
+requires+=(
+ autoconf-archive
+ accountsservice-devel
+ cairo-gobject-devel
+ cppcheck-htmlreport
+ dconf-devel
+ desktop-file-utils
+ gcc
+ git
+ gobject-introspection-devel
+ gtk3-devel
+ iso-codes-devel
+ itstool
+ libappindicator-gtk3-devel
+ libSM-devel
+ libXScrnSaver-devel
+ libcanberra-devel
+ libmatekbd-devel
+ libgtop2-devel
+ librsvg2-devel
+ librsvg2-tools
+ libudisks2-devel
+ make
+ marco-devel
+ mate-menus-devel
+ polkit-devel
+ python3-lxml
+ mate-common
+ redhat-rpm-config
+ startup-notification-devel
+ systemd-devel
+ which
+)
+
+infobegin "Update system"
+dnf update -y
+infoend
+
+infobegin "Install dependency packages"
+dnf install -y ${requires[@]}
+infoend
diff --git a/.github/workflows/mate-desktop.sh b/.github/workflows/mate-desktop.sh
new file mode 100755
index 00000000..ab4c6fda
--- /dev/null
+++ b/.github/workflows/mate-desktop.sh
@@ -0,0 +1,99 @@
+#!/usr/bin/bash
+
+set -e
+set -o pipefail
+
+NAME="mate-desktop"
+TEMP_DIR=$(mktemp -d)
+OS=$(cat /etc/os-release | grep ^ID | head -n 1 | awk -F= '{ print $2}')
+TAG=$1
+CACHE_DIR=$2
+
+# Use grouped output messages
+infobegin() {
+ echo "::group::${1}"
+}
+infoend() {
+ echo "::endgroup::"
+}
+
+# Required packages to build mate-desktop
+debian_requires=(
+ libgirepository1.0-dev
+ yelp-tools
+ iso-codes
+ gobject-introspection
+)
+
+fedora_requires=(
+ iso-codes
+ gobject-introspection
+)
+
+ubuntu_requires=(
+ libgirepository1.0-dev
+ yelp-tools
+ iso-codes
+ gobject-introspection
+)
+
+requires=$(eval echo '${'"${OS}_requires[@]}")
+
+infobegin "Install Depends for mate-desktop"
+case ${OS} in
+arch)
+ #pacman --noconfirm -Syu
+ #pacman --noconfirm -S ${requires[@]}
+ ;;
+debian | ubuntu)
+ apt-get update -qq
+ env DEBIAN_FRONTEND=noninteractive \
+ apt-get install --assume-yes --no-install-recommends ${requires[@]}
+ ;;
+fedora)
+ dnf update -y
+ dnf install -y ${requires[@]}
+ ;;
+esac
+infoend
+
+# Use cached packages first
+if [ -f $CACHE_DIR/${NAME}-${TAG}.tar.xz ]; then
+ echo "Found cache package, reuse it"
+ tar -C / -Jxf $CACHE_DIR/${NAME}-${TAG}.tar.xz
+else
+ git clone --recurse-submodules https://github.com/mate-desktop/${NAME}
+
+ # Foldable output information
+ infobegin "Configure"
+ cd ${NAME}
+ git checkout v${TAG}
+ if [[ ${OS} == "debian" || ${OS} == "ubuntu" ]]; then
+ ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/x86_64-linux-gnu || {
+ cat config.log
+ exit 1
+ }
+ else
+ ./autogen.sh --prefix=/usr || {
+ cat config.log
+ exit 1
+ }
+ fi
+ infoend
+
+ infobegin "Build"
+ make -j ${JOBS}
+ infoend
+
+ infobegin "Install"
+ make install
+ infoend
+
+ # Cache this package version
+ infobegin "Cache"
+ [ -d ${CACHE_DIR} ] || mkdir -p ${CACHE_DIR}
+ make install DESTDIR=${TEMP_DIR}
+ cd $TEMP_DIR
+ tar -J -cf $CACHE_DIR/${NAME}-${TAG}.tar.xz *
+ infoend
+fi
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 00000000..2134f9ac
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,39 @@
+name: Release Version
+on:
+ push:
+ tags:
+ - "v*.*.*"
+
+env:
+ MATE_DESKTOP_VERSION: 1.28.2
+ CACHE_PATH: /tmp/.cache
+
+jobs:
+ release:
+ name: Release New Version
+ runs-on: ubuntu-latest
+ steps:
+ - name: Repository checkout
+ uses: actions/checkout@v3
+ with:
+ submodules: "true"
+
+ - name: Install dependency packages
+ run: sudo .github/workflows/ubuntu.sh
+
+ - name: Install higher version Mate component packages
+ run: sudo .github/workflows/mate-desktop.sh ${{env.MATE_DESKTOP_VERSION}} ${{ env.CACHE_PATH }}
+
+ - name: Build the source code
+ run: .github/workflows/builds.sh
+
+ - name: Install GH CLI
+ uses: dev-hanz-ops/[email protected]
+ with:
+ gh-cli-version: 2.39.1
+
+ - name: Create github release
+ run: |
+ gh release create ${{ github.ref_name }} --title ${{ github.ref_name }} --generate-notes _build/meson-dist/*
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/ubuntu.sh b/.github/workflows/ubuntu.sh
new file mode 100755
index 00000000..ce200f7e
--- /dev/null
+++ b/.github/workflows/ubuntu.sh
@@ -0,0 +1,75 @@
+#!/usr/bin/bash
+
+# Use grouped output messages
+infobegin() {
+ echo "::group::${1}"
+}
+infoend() {
+ echo "::endgroup::"
+}
+
+# Required packages on Ubuntu
+requires=(
+ ccache # Use ccache to speed up build
+ meson # Used for meson build
+)
+
+requires+=(
+ autoconf-archive
+ autopoint
+ clang
+ clang-tools
+ cppcheck
+ curl
+ desktop-file-utils
+ gettext
+ git
+ gobject-introspection
+ intltool
+ make
+ mate-common
+ pkexec
+ polkitd
+ python3-lxml
+ shared-mime-info
+ xsltproc
+)
+
+dev_requires=(
+ libayatana-appindicator3-dev
+ libcanberra-gtk3-dev
+ libdconf-dev
+ libglib2.0-dev
+ libgtk-3-dev
+ libgtop2-dev
+ libmarco-dev
+ libmate-desktop-dev
+ libmate-menu-dev
+ libmatekbd-dev
+ libpango1.0-dev
+ libpolkit-gobject-1-dev
+ librsvg2-bin
+ librsvg2-dev
+ libstartup-notification0-dev
+ libsystemd-dev
+ libudisks2-dev
+ libx11-dev
+ libxcursor-dev
+ libxi-dev
+ libxklavier-dev
+ libxml2-dev
+ libxrandr-dev
+ libxss-dev
+ libxt-dev
+)
+
+infobegin "Update system"
+apt-get update -y
+infoend
+
+infobegin "Install dependency packages"
+env DEBIAN_FRONTEND=noninteractive \
+ apt-get install --assume-yes \
+ ${requires[@]} \
+ ${dev_requires[@]}
+infoend
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 95209182..00000000
--- a/.travis.yml
+++ /dev/null
@@ -1,77 +0,0 @@
-# vim: set ts=2 sts=2 sw=2 expandtab :
-dist: jammy
-language: shell
-os: linux
-services:
- - docker
-addons:
- apt:
- packages:
- - python3-pip
- - python3-setuptools
-
-branches:
- except:
- - gh-pages
-
-before_install:
- - curl -Ls -o docker-build https://github.com/mate-desktop/mate-dev-scripts/raw/master/travis/docker-build
- - curl -Ls -o gen-index https://github.com/mate-desktop/mate-dev-scripts/raw/master/travis/gen-index.sh
- - chmod +x docker-build gen-index
-
-install:
- - pip3 install PyGithub
- - ./docker-build --name ${DISTRO} --config .build.yml --install
-
-script:
- - ./docker-build --name ${DISTRO} --verbose --config .build.yml --build scripts
-
-notifications:
- irc:
- if: (tag OR branch = master) AND
- repo = "mate-desktop/mate-control-center"
- channels:
- - "irc.libera.chat#mate-dev"
- template:
- - "[%{repository_name}] %{author}: %{commit_subject}"
- - "[%{branch}] %{commit} %{message} %{build_url}"
- on_success: never
- on_failure: always
-
-deploy:
- - provider: pages
- edge:
- branch: v2.0.3-beta.4
- token: $GITHUB_TOKEN
- keep_history: false
- committer_from_gh: true
- target_branch: gh-pages
- local_dir: html-report
- strategy: git
- on:
- all_branches: true
- condition: ${DISTRO} =~ ^fedora.*$
- - provider: script
- edge:
- branch: v2.0.3-beta.4
- script: ./docker-build --verbose --config .build.yml --release github
- on:
- tags: true
- condition: "${TRAVIS_TAG} =~ ^v.*$ && ${DISTRO} =~ ^fedora.*$"
-
-after_success:
- - 'if [[ "$TRAVIS_SECURE_ENV_VARS" == "true" && "$TRAVIS_PULL_REQUEST" != "false" && ${DISTRO} =~ ^fedora.*$ ]]; then
- REPO_SLUG_ARRAY=(${TRAVIS_REPO_SLUG//\// });
- REPO_NAME=${REPO_SLUG_ARRAY[1]};
- URL="https://${REPO_NAME}.mate-desktop.dev";
- COMMENT="Code analysis completed";
- curl -H "Authorization: token $GITHUB_TOKEN" -X POST
- -d "{\"state\": \"success\", \"description\": \"$COMMENT\", \"context\":\"scan-build\", \"target_url\": \"$URL\"}"
- https://api.github.com/repos/${TRAVIS_REPO_SLUG}/statuses/${TRAVIS_PULL_REQUEST_SHA};
- fi'
-
-env:
-# - DISTRO="archlinux:latest"
- - DISTRO="debian:testing"
- - DISTRO="fedora:latest"
-# - DISTRO="ubuntu:rolling"
diff --git a/capplets/keybindings/eggcellrendererkeys.c b/capplets/keybindings/eggcellrendererkeys.c
index aa4c8e8a..5183fb7c 100644
--- a/capplets/keybindings/eggcellrendererkeys.c
+++ b/capplets/keybindings/eggcellrendererkeys.c
@@ -11,6 +11,8 @@
#define TOOLTIP_TEXT _("New shortcut...")
+static void update_text (EggCellRendererKeys *keys);
+
static void egg_cell_renderer_keys_finalize (GObject *object);
static void egg_cell_renderer_keys_init (EggCellRendererKeys *cell_keys);
static void egg_cell_renderer_keys_class_init (EggCellRendererKeysClass *cell_keys_class);
@@ -76,6 +78,8 @@ GType egg_cell_renderer_keys_get_type(void)
static void egg_cell_renderer_keys_init(EggCellRendererKeys* cell_keys)
{
+ g_signal_connect (cell_keys, "notify::visible", G_CALLBACK (update_text), NULL);
+
cell_keys->accel_mode = EGG_CELL_RENDERER_KEYS_MODE_GTK;
}
@@ -225,6 +229,27 @@ static gchar* convert_keysym_state_to_string(guint keysym, guint keycode, EggVir
}
}
+static void update_text (EggCellRendererKeys *keys)
+{
+ gboolean visible;
+
+ g_object_get (keys, "visible", &visible, NULL);
+
+ /* For screen reader's sake, make the text empty when hidden, otherwise a
+ * more or less random value is presented. This could also be fixed in the
+ * accessibility implementation side, but we rely on GTK's, so it's easier
+ * to clean it up here than modify GTK or subclass it further. */
+ if (! visible)
+ g_object_set (keys, "text", "", NULL);
+ else
+ {
+ /* sync string to the key values */
+ gchar *text = convert_keysym_state_to_string (keys->accel_key, keys->keycode, keys->accel_mask);
+ g_object_set (keys, "text", text, NULL);
+ g_free (text);
+ }
+}
+
static void
egg_cell_renderer_keys_get_property (GObject *object,
guint param_id,
@@ -627,6 +652,8 @@ egg_cell_renderer_keys_start_editing (GtkCellRenderer *cell,
keys);
eventbox = g_object_new (pointless_eventbox_subclass_get_type (),
+ "tooltip-text", _("Press the keys for the new accelerator, Backspace to clear, or Escape to cancel edition"),
+ "can-focus", TRUE,
NULL);
keys->edit_widget = eventbox;
g_object_add_weak_pointer (G_OBJECT (keys->edit_widget),
@@ -670,7 +697,6 @@ egg_cell_renderer_keys_start_editing (GtkCellRenderer *cell,
void egg_cell_renderer_keys_set_accelerator(EggCellRendererKeys* keys, guint keyval, guint keycode, EggVirtualModifierType mask)
{
- char *text;
gboolean changed;
g_return_if_fail (EGG_IS_CELL_RENDERER_KEYS (keys));
@@ -705,12 +731,7 @@ void egg_cell_renderer_keys_set_accelerator(EggCellRendererKeys* keys, guint key
g_object_thaw_notify (G_OBJECT (keys));
if (changed)
- {
- /* sync string to the key values */
- text = convert_keysym_state_to_string (keys->accel_key, keys->keycode, keys->accel_mask);
- g_object_set (keys, "text", text, NULL);
- g_free (text);
- }
+ update_text (keys);
}
void egg_cell_renderer_keys_get_accelerator(EggCellRendererKeys* keys, guint* keyval, EggVirtualModifierType* mask)
diff --git a/capplets/keybindings/mate-keybinding-properties.ui b/capplets/keybindings/mate-keybinding-properties.ui
index 7a986588..eb3a5a2f 100644
--- a/capplets/keybindings/mate-keybinding-properties.ui
+++ b/capplets/keybindings/mate-keybinding-properties.ui
@@ -336,7 +336,7 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
- <property name="label" translatable="yes">To edit a shortcut key, double-click on the corresponding row and type a new key combination, or press backspace to clear.</property>
+ <property name="label" translatable="yes">To edit a shortcut key, double-click or press Space or Enter on the corresponding row and type a new key combination, or press backspace to clear.</property>
<property name="wrap">True</property>
</object>
<packing>
diff --git a/capplets/keyboard/mate-keyboard-properties-dialog.ui b/capplets/keyboard/mate-keyboard-properties-dialog.ui
index bed5a44f..d59710ec 100644
--- a/capplets/keyboard/mate-keyboard-properties-dialog.ui
+++ b/capplets/keyboard/mate-keyboard-properties-dialog.ui
@@ -830,6 +830,22 @@
<property name="position">1</property>
</packing>
</child>
+ <child>
+ <object class="GtkCheckButton" id="chk_load_extra_items">
+ <property name="label" translatable="yes">_Include less-common layouts in the selections list</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="halign">start</property>
+ <property name="use-underline">True</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
<child>
<object class="GtkCheckButton" id="chk_separate_group_per_window">
<property name="label" translatable="yes">_Separate layout for each window</property>
@@ -843,7 +859,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
- <property name="position">2</property>
+ <property name="position">3</property>
</packing>
</child>
<child>
@@ -859,7 +875,7 @@
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
- <property name="position">3</property>
+ <property name="position">4</property>
</packing>
</child>
</object>
diff --git a/capplets/keyboard/mate-keyboard-properties-xkb.c b/capplets/keyboard/mate-keyboard-properties-xkb.c
index d1dd7925..831203f0 100644
--- a/capplets/keyboard/mate-keyboard-properties-xkb.c
+++ b/capplets/keyboard/mate-keyboard-properties-xkb.c
@@ -150,6 +150,18 @@ chk_separate_group_per_window_toggled (GSettings * settings,
}
static void
+chk_load_extra_items_toggled (GSettings * settings,
+ gchar * key,
+ GtkBuilder * dialog)
+{
+ matekbd_desktop_config_load_from_gsettings (&desktop_config);
+
+ xkl_config_registry_load (config_registry, desktop_config.load_extra_items);
+
+ xkb_layouts_fill_selected_tree (dialog);
+}
+
+static void
chk_new_windows_inherit_layout_toggled (GtkWidget *
chk_new_windows_inherit_layout,
GtkBuilder * dialog)
@@ -193,6 +205,18 @@ setup_xkb_tabs (GtkBuilder * dialog)
G_CALLBACK (chk_separate_group_per_window_toggled),
dialog);
+ g_settings_bind (xkb_general_settings,
+ "load-extra-items",
+ WID ("chk_load_extra_items"),
+ "active",
+ G_SETTINGS_BIND_DEFAULT);
+
+ g_signal_connect (xkb_general_settings,
+ "changed::load-extra-items",
+ G_CALLBACK (chk_load_extra_items_toggled),
+ dialog);
+
+
#ifdef HAVE_X11_EXTENSIONS_XKB_H
if (strcmp (xkl_engine_get_backend_name (engine), "XKB"))
#endif
diff --git a/capplets/windows/window-properties.ui b/capplets/windows/window-properties.ui
index 140ab21b..d480f960 100644
--- a/capplets/windows/window-properties.ui
+++ b/capplets/windows/window-properties.ui
@@ -51,12 +51,15 @@ Author: Robert Buj
<property name="modal">True</property>
<property name="icon-name">preferences-system-windows</property>
<property name="type-hint">normal</property>
+ <property name="border-width">5</property>
<signal name="response" handler="on_dialog_win_response" swapped="no"/>
<child internal-child="vbox">
<object class="GtkBox" id="main_vbox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
+ <property name="border-width">2</property>
+ <property name="spacing">2</property>
<child internal-child="action_area">
<object class="GtkButtonBox">
<property name="visible">True</property>
@@ -106,7 +109,7 @@ Author: Robert Buj
<object class="GtkNotebook" id="nb">
<property name="visible">True</property>
<property name="can-focus">True</property>
- <property name="border-width">6</property>
+ <property name="border-width">5</property>
<child>
<object class="GtkBox" id="behaviour_vbox">
<property name="visible">True</property>
diff --git a/font-viewer/font-view.c b/font-viewer/font-view.c
index 918d0087..406b051b 100644
--- a/font-viewer/font-view.c
+++ b/font-viewer/font-view.c
@@ -597,24 +597,33 @@ font_view_application_do_open (FontViewApplication *self,
font_view_ensure_model (self);
- self->info_button = gd_main_toolbar_add_button (GD_MAIN_TOOLBAR (self->toolbar),
- NULL, _("Info"),
- FALSE);
- g_signal_connect (self->info_button, "clicked",
- G_CALLBACK (info_button_clicked_cb), self);
+ if (self->info_button == NULL)
+ {
+ self->info_button = gd_main_toolbar_add_button (GD_MAIN_TOOLBAR (self->toolbar),
+ NULL, _("Info"),
+ FALSE);
+ g_signal_connect (self->info_button, "clicked",
+ G_CALLBACK (info_button_clicked_cb), self);
+ }
/* add install button */
- self->install_button = gd_main_toolbar_add_button (GD_MAIN_TOOLBAR (self->toolbar),
- NULL, _("Install"),
- FALSE);
- g_signal_connect (self->install_button, "clicked",
- G_CALLBACK (install_button_clicked_cb), self);
-
- self->back_button = gd_main_toolbar_add_button (GD_MAIN_TOOLBAR (self->toolbar),
- "go-previous-symbolic", _("Back"),
- TRUE);
- g_signal_connect (self->back_button, "clicked",
- G_CALLBACK (back_button_clicked_cb), self);
+ if (self->install_button == NULL)
+ {
+ self->install_button = gd_main_toolbar_add_button (GD_MAIN_TOOLBAR (self->toolbar),
+ NULL, _("Install"),
+ FALSE);
+ g_signal_connect (self->install_button, "clicked",
+ G_CALLBACK (install_button_clicked_cb), self);
+ }
+
+ if (self->back_button == NULL)
+ {
+ self->back_button = gd_main_toolbar_add_button (GD_MAIN_TOOLBAR (self->toolbar),
+ "go-previous-symbolic", _("Back"),
+ TRUE);
+ g_signal_connect (self->back_button, "clicked",
+ G_CALLBACK (back_button_clicked_cb), self);
+ }
gtk_widget_set_vexpand (self->toolbar, FALSE);
diff --git a/font-viewer/meson.build b/font-viewer/meson.build
index 6a85f8af..3636521f 100644
--- a/font-viewer/meson.build
+++ b/font-viewer/meson.build
@@ -8,6 +8,7 @@ deps = [
common_deps,
pango_dep,
fontconfig_dep,
+ freetype_dep,
libm,
]
executable(
diff --git a/mate-control-center.pot b/mate-control-center.pot
index a4c3f19e..17e47838 100644
--- a/mate-control-center.pot
+++ b/mate-control-center.pot
@@ -4334,7 +4334,7 @@ msgid "Europe/Kaliningrad"
msgstr ""
#: capplets/time-admin/src/time-zones.h:364
-msgid "Europe/Kiev"
+msgid "Europe/Kyiv"
msgstr ""
#: capplets/time-admin/src/time-zones.h:365
diff --git a/meson.build b/meson.build
index ca16c48b..fc28a15d 100644
--- a/meson.build
+++ b/meson.build
@@ -86,6 +86,7 @@ xi_dep = dependency('xi', version: '>= 1.5')
xext_dep = dependency('xext')
xscrnsaver_dep = dependency('xscrnsaver')
m_dep = cc.find_library('m')
+freetype_dep = dependency('freetype2')
enable_accountsservice = get_option('accountsservice')
accounts_dep = dependency('accountsservice', version: '>= 0.6.39', required: enable_accountsservice)