やっぱり背景はwallpaper enginがいいなあ、なぁんて思っていると、KDEにサイドパーティ製の変換ライブラリがあるではないですか。
公式githubを見に行くとarchやdebian系はできるみたいですが、nixosがなかったので頑張って探してみました。今回は有志がいてよかったです。
日本の記事はまずなかったのと、検索に少し時間がかかったので備忘録として記録します。
インストール方法
wallpaper enginのインストール
Steamからwallpaper enginのプロパティのベータでwindows 7を選択してください。←重要
すんなりとwallpaper enginが動きます。
僕の環境だと~/.local/share/Steam/steamapps/workshop/content/にwallpaperのファイルがありました。
見つけたら保存しておいてください。
nixファイルの作成
次にnixファイルを作成してください。
# wallpaper.nix
{ config, lib, pkgs, ...}:
let
# glslangのサブモジュール問題を解決するための定義
glslang-submodule = pkgs.stdenv.mkDerivation {
name = "glslang";
installPhase = ''
mkdir -p $out
'';
src = pkgs.fetchFromGitHub {
owner = "KhronosGroup";
repo = "glslang";
rev = "c34bb3b6c55f6ab084124ad964be95a699700d34";
sha256 = "IMROcny+b5CpmzEfvKBYDB0QYYvqC5bq3n1S4EQ6sXc=";
};
};
# プラグイン本体のビルド定義
wallpaper-engine-kde-plugin = pkgs.stdenv.mkDerivation rec {
pname = "wallpaperEngineKde";
version = "96230de92f1715d3ccc5b9d50906e6a73812a00a";
src = pkgs.fetchFromGitHub {
owner = "Jelgnum";
repo = "wallpaper-engine-kde-plugin";
rev = version;
hash = "sha256-vkWEGlDQpfJ3fAimJHZs+aX6dh/fLHSRy2tLEsgu/JU=";
fetchSubmodules = true;
};
nativeBuildInputs = with pkgs; [
cmake
kdePackages.extra-cmake-modules
glslang-submodule
pkg-config
gst_all_1.gst-libav
shaderc
ninja
python3
];
buildInputs = with pkgs; [
mpv
lz4
vulkan-headers
vulkan-tools
vulkan-loader
]
++ (with kdePackages; with qt6Packages; [
qtbase
qt6.full
kpackage
kdeclarative
libplasma
qtwebsockets
qtwebengine
qtwebchannel
qtmultimedia
qtdeclarative
])
++ [(pkgs.python3.withPackages (python-pkgs: [ python-pkgs.websockets ]))];
cmakeFlags = [ "-DUSE_PLASMAPKG=OFF" ];
dontWrapQtApps = true;
postPatch = ''
rm -rf src/backend_scene/third_party/glslang
ln -s ${glslang-submodule.src} src/backend_scene/third_party/glslang
'';
meta = with lib; {
description = "Wallpaper Engine KDE plasma plugin";
license = licenses.gpl2Plus;
platforms = platforms.linux;
};
};
in
{
options.nixos = {
pkgs.wallpaper-engine-kde-plugin = {
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Enable wallpaper-engine-kde-plugin.";
};
};
};
config = lib.mkIf (config.nixos.pkgs.wallpaper-engine-kde-plugin.enable) {
environment.systemPackages = with pkgs; [
wallpaper-engine-kde-plugin
kdePackages.qtwebsockets
kdePackages.qtwebchannel
kdePackages.qtwebengine
kdePackages.qtwebview
(python3.withPackages (python-pkgs: [ python-pkgs.websockets ]))
kdePackages.qtimageformats # WebP, TIFF, TGAなどをサポート
kdePackages.kimageformats # さらに多くの形式(EPS, XCFなど)をサポート
kdePackages.libkdcraw # RAW画像などをサポート(念のため)
];
# 重要
# ここを自分の設定に直して。
system.activationScripts = {
wallpaper-engine-kde-plugin.text = ''
target_user="あなたのユーザー名"
wallpaperenginetarget="/share/plasma/wallpapers/com.github.catsout.wallpaperEngineKde"
# ユーザーディレクトリのパスを作成
mkdir -p /home/$target_user/.local/share/plasma/wallpapers
# 権限修正(rootで実行されるため)
chown -R $target_user:users /home/$target_user/.local/share/plasma
# シンボリックリンクの作成(既存なら上書き)
ln -sf ${wallpaper-engine-kde-plugin}$wallpaperenginetarget /home/$target_user/.local$wallpaperenginetarget
# 念のため所有権を再帰的に適用
chown -R $target_user:users /home/$target_user/.local/share/plasma/wallpapers/com.github.catsout.wallpaperEngineKde
'';
};
};
}
しっかりと自分のディレクトリに合わせてtarget_userを変更してください。←重要
config.nixでインポートするのを忘れずに。
いつもどおりのコマンド。
sudo nixos-rebuild switch
うまくインストールされたらコマンドを打ってください。
kbuildsycoca6
KDE
これでKDE上にプラグインとしてwallpaper engin for kdeがインストールされています。
ファイル選択して設定します。
.local/share/Steamを選んでください。すると自動でworkshopにつながって壁紙一覧が出てきます。
やってみた感想
mp4はもちろんwebやceaneも動きました。でも、壁紙によってはキャラクターだけ出現しなかったりするみたいです。
おそらくファイル名が自動で読み込めなくて失敗してる可能性が高いので、また気が向いたら修正の方法を記事に書きます。
終わり
nixファイルを作っていた有志には感謝しかない。この人にハートを。