読者です 読者をやめる 読者になる 読者になる

ひこぽんのーと

覚書と雑記です。

Marcoでworkspace毎に背景を変える方法のこと

ubuntu プログラム

ウィンドウマネージャの話です。

workspace毎に背景を変えたかった。
Compizを使えばできるけど、ヤツはあまり好みではないので、
Marcoでできないかと色々調べてみるものの、
ツールのたぐいは拾えなかった。

古い話で"Wallpapoz"なんかが出てきたけれど、
今のバージョンではそのままは動かなそう。

たまたま、Ubuntu MATE コミュニティでこんな記事を拾った。

ここにLinux Mint 17 Mateで動いたよっていうスクリプトがあったので、
参考までにダンロードして読んでみた。

仕掛けとしては2点。

  • xpropコマンドでworkspace切り替え時のイベントを拾う。
  • gsettingsコマンドを使って背景設定のプロパティ"org.mate.background"の"picture-filename"値を書き換える。

そのスクリプトを参考にWorkspace1〜Workspace4に切り替えると
背景が変わるスクリプトを書いてみた。(というよりパクリや)

#!/bin/bash
# Script to change the desktop image when switching workspaces.
# Tested on Ubuntu MATE 16.04

IMG0=/usr/share/backgrounds/mate/abstract/Flow.png
IMG1=/usr/share/backgrounds/mate/abstract/Silk.png
IMG2=/usr/share/backgrounds/mate/abstract/Spring.png
IMG3=/usr/share/backgrounds/mate/abstract/Waves.png
IMGBG=${IMG0}
xprop -root -spy _NET_CURRENT_DESKTOP | (
   while read -r; do
      DESK=${REPLY:${#REPLY}-1:1}
      if [ "$DESK" == "0" ]; then
        IMGBG=${IMG0}
      elif [ "$DESK" == "1" ]; then
        IMGBG=${IMG1}
      elif [ "$DESK" == "2" ]; then
        IMGBG=${IMG2}
      elif [ "$DESK" == "3" ]; then
        IMGBG=${IMG3}
      else
        IMGBG=${IMG0}
      fi
      gsettings set org.mate.background picture-filename ${IMGBG}
   done
   )

パスはハードコードだし、シェルとしてはいまいちかもしれないけれど、
自動起動アプリケーションに登録しておけば、
workspaceを切り替えると背景も変わることが確認できた。

あとは、画像選択とかをGUIからできるようにpythonあたりで組めば、
使い勝手は良くなるか。

エッセンスは確認できたので、今日はこれまで。