Cinnamon 6.4の変更
Manjaro Cinnamonの公式イメージ画像
去年の12月はじめ頃だったか,ManjaroのCinnamonが6.4系にアップデートされて大きく変わった。
個人的に気になったのが音量調整の段階が5%づつに固定されてしまった点だ。この5%という値はソースの中にハードコードされていて変更できないらしい。
そこで該当するパッケージ(cinnamon-settings-daemon)を改変してインストールしなおすことにした。環境はManjaro Cinnamonだが,手順はすべてのArch系ディストリビューションに適用できると思う。
インストール手順
手順は以下の通り
ソースファイルを入手,改変
PKGBUILDを入手,改変
パッケージのチェックサムを改変
ビルドしてインストール
CinnamonはLinux Mintで開発されているデスクトップ環境のため,見つかる情報のほぼすべてがMintのもので,そのままArchに適用することはできない。ただしパッケージのソースコードを修正してからビルドして再インストールするという手順に変わりはない。
ArchのパッケージをビルドするときはPKGBUILDというbashスクリプトが使われる。PKGBUILDにはソースファイルのありかや依存情報などインストールに必要な情報が含まれていて,PKGBUILDさえどうにかすればなんでもpacmanで管理できるというのがArchのいいところだと思う。
ソースファイルの入手と改変
パッケージ詳細ページからアップストリームのリポジトリはすぐに見つけられる。
あとから細々したファイルが増えるので空のディレクトリ内に移動してクローンする。
$ mkdir csd
$ cd csd
$ git clone https://github.com/linuxmint/cinnamon-settings-daemon改変するのはcinnamon-settings-daemon > plugins > media-keysの中にあるcsd-media-keys-manager.cというファイル。
この中のVOLUME_STEPを5から任意の値に変更する。今回は以前までのデフォルトの1にした。この程度の変更ならsedを使ってsed -i -e "s/VOLUME_STEP 5/VOLUME_STEP 1/" cinnamon-settings-daemon/plugins/media-keys/csd-media-keys-manager.cとしてもいい。
#define VOLUME_STEP 1保存して終了。
ここでパッケージをtar.gz形式で圧縮しておく。
$ tar -czvf cinnamon-settings-daemon.tar.gz cinnamon-settings-daemonPKGBUILDの入手と改変
PKGBUILDもパッケージ詳細ページのSource Filesというリンクから探すことができる。
PKGBUILDを見つけたらページ右側にソースファイルを表示するボタンがあるのでそれをクリックして開き,そのURLをwgetでダウンロードする。(それかCtrl + Sしてブラウザで保存するのでもいい。)
$ wget "https://gitlab.archlinux.org/archlinux/packaging/packages/cinnamon-settings-daemon/-/raw/main/PKGBUILD"ダウンロードできたらsourceのディレクトリを書き換える。
まずローカルにあるファイルからビルドするので必ずsource=("${pkgname}.tar.gz")となるように。あとは全体的に${pkgname}-${pkgver}というバージョン固有の記述がないかも注意すること。
# Maintainer: Bruno Pagani <archange@archlinux.org>
# Contributor: Eli Schwartz <eschwartz@archlinux.org>
# Contributor: Alexandre Filgueira (faidoc) <alexfilgueira@antergos.com>
# Contributor: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
pkgname=cinnamon-settings-daemon
pkgver=6.6.2
pkgrel=1
pkgdesc='Settings daemon for Cinnamon'
arch=(x86_64)
url='https://github.com/linuxmint/cinnamon-settings-daemon'
license=('GPL-2.0-or-later AND LGPL-2.0-or-later')
depends=(
cairo
cinnamon-desktop
dconf
fontconfig
gcc-libs
gdk-pixbuf2
glib2
glibc
gtk3
hicolor-icon-theme
lcms2
libcanberra-pulse
libcolord
libcups
libgudev
libnotify
libwacom
libx11
libxext
libxi
nspr
nss
pango
polkit
pulse-native-provider
systemd-libs
upower
)
optdepends=('cinnamon-translations: i18n')
makedepends=(
git
glib2-devel
meson
)
# ↓ ここの行を書き換える
# source=("git+https://github.com/linuxmint/cinnamon-settings-daemon.git#tag=$pkgver")
source=("${pkgname}.tar.gz")
# ↓ ここの行は次のステップで書き換える
b2sums=('177f73765b4788ce41243c82090acd47f372496c4364c3818186695e0ad9002911fd9f41ae24192799d1692c27d9601745762a76ffd1d339b54fcfee09d8a99c')
build() {
arch-meson $pkgname build \
--libexecdir=lib/$pkgname
meson compile -C build
}
package() {
meson install -C build --destdir="$pkgdir"
}ここで一旦変更内容を保存しておく。
チェックサムの改変
makepkg -gで新しいパッケージのチェックサムを出力する。
$ makepkg -g
# ==> Retrieving sources...
# -> Found cinnamon-settings-daemon.tar.gz
# ==> Generating checksums for source files...
# b2sums=('b31dccff126dba8823089d883380eccff0da7ae40609c6b648c67a06e37057656ece7482f7c00cf80830d95e6f91d510b86f1619e5754b02a729582046f78ed9')PKGBUILDのb2sums=('......')という行をここで得たb2sumsの内容で置き換える。
ArchWikiはpacman-contribに含まれるupdpkgsumsというチェックサムを更新できる便利なツールを使えと案内しているが,以下のようにパッケージにCR+LFが含まれているとエラーが出てしまった。
$ updpkgsums cinnamon-settings-daemon.tar.gz
# /usr/bin/makepkg: line 1255: warning: command substitution: ignored null byte in input
# ==> ERROR: cinnamon-settings-daemon.tar.gz contains CRLF characters and cannot be sourced.
# ==> ERROR: Failed to generate new checksumsgrepするとたしかにCR+LFが含まれているらしいことはわかった。
$ grep -lzUP '\r\n' ./*
# => cinnamon-settings-daemon.tar.gzただしソースファイルには見当たらないし,sedで無理やり除去してもビルドできないしで今回は対応を諦めた。
このパッケージ以外でも同様のエラーが発生することは確認したので原因はこんど暇なときに調べます。初級Linuxerへの道は遠い。
ビルドしてインストール
PKGBUILDに新しいチェックサムを適用したらmakepkg -siでビルドしてインストールできる。
$ makepkg -siインストールしたらシステムの再起動を行うこと。
以下のようなエラーが出たらbuild()のディレクトリ名が${pkgname}-${pkgver}のままになっておりgit cloneしたディレクトリ名と異なっているので${pkgname}だけになるようPKGBUILDを修正する。
ERROR: Neither source directory 'cinnamon-settings-daemon-6.4.3' nor build directory 'build' contain a build file meson.build.
==> ERROR: A failure occurred in build().
Aborting...
OSDに音量のパーセンテージ表示が出るようにする。
新しいCinnamonではウィンドウの手前に出るOSDウィンドウから音量のパーセンテージ表示がなくなった。地味に困るのでついでに直す。
$ sudo cp /usr/share/cinnamon/js/ui/osdWindow.js /usr/share/cinnamon/js/ui/osdWindow.orig
$ sudo nano /usr/share/cinnamon/js/ui/osdWindow.jsif (this._level.visible) {の次の行にthis.setLabel(value.toString() + ' %');を挿入する。
setLevel(value) {
this._level.visible = value != null;
if (this._level.visible) {
/* ↓を挿入 */
this.setLabel(value.toString() + ' %');
/* ↑を挿入 */
value = value / 100;
if (this.visible)
this._level.ease_property('value', value, {
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
duration: LEVEL_ANIMATION_TIME,
});
else
this._level.value = value;
}
}Cinnamonを再起動する。
$ cinnamon-dbus-command RestartCinnamon 1これでOK
追記() : 正しくスタイルが当たっておらず音量バーが表示されていませんでした。
正しく表示できた場合,このようになります。
参考にさせていただいたサイト
更新履歴
: 画像を追加。あたらしいPKGBUILDで内容を書き換え。わかりにくい記述を修正。