0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

wallpaper enginをnixosで動かす wallpaper engin for Kde

0
Last updated at Posted at 2026-02-03

やっぱり背景は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
# 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ファイルを作っていた有志には感謝しかない。この人にハートを。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?