Pull to refresh

himawari8 wallpaper для linux

Reading time 3 min
Views 8.1K
Почитал я недавно про скрипт на PowerShell, который ставил фотки со спутника обоями на рабочий стол. Погуглив, не нашёл реализации под linux — коя ниже.



Возможные проблемы


По мелочи: сервер не всегда загружает изображения прямо совсем новые, так что есть шанс наткнуться на пустоту. Поэтому в скрипте я получаю фотки прошлого дня: nowday=$(date +%d -d -1day)

UPD: пофикшено, проблема была в ненастроеном часовом поясе.

Сервер загружает новый пак фотографий раз в десять минут и требует округления времени до десятков. Поэтому

nowtime=$(date +%H%M | sed -r 's/.$//')
nowtime=$nowtime"000"


Особые проблемы тут в одном месте: в установке обоев на рабочий стол.

Для xfce4


Общий синтаксис


xfconf-query -c xfce4-desktop -p %desktoppath% -s %image%

Получение параметров


Открываешь /home/user/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml

Предположим, что там что-то типа:

<channel name="xfce4-desktop" version="1.0">
  <property name="backdrop" type="empty">
    <property name="screen0" type="empty">
      <property name="monitorVGA-0" type="empty">
        <property name="workspace0" type="empty">
          <property name="color-style" type="int" value="2"/>
          <property name="image-style" type="int" value="5"/>
          <property name="last-image" type="string" value="/home/user/pictures/my_standart_wallpaper.png"/>
        </property>
      </property>
    </property>
  </property>
</channel>

Значит, вместо %desktoppath% надо указать /backdrop/screen0/monitorVGA-0/workspace0/last-image

Ну, а %image% — полный путь к файлу нового изображения.

Другие X-системы


?

Код


Код на bash
Спасибо за фиксы Self_Perfection и SleepingLion

github
# This script get images from himawari8 sputnik, combine it with imagemagick and set result as wallpaper. Works with xfce, gnome, i3
# ./earthwallpaper <resolution>
# <resolution> can be 4, 8, 16 or 20 : bigger number - better resolution. Default is 4
# Deps: imagemagick wget
# github: https://github.com/snowinmars/scripts/blob/master/earth_wallpaper.sh
# e-mail: marcor@yandex.ru

#!/bin/bash

delay=900 # seconds

while true
do
	echo $DESKTOP_SESSION
	width=550
	numblocks=${1:-4}
	xsystem=${2:-xfce4}
	level=$numblocks'd' #Level can be 4d, 8d, 16d, 20d
	
	timestamp=$(date -d -4hours +%Y/%m/%d/%H%M | sed -r 's/.$/000/') # delay is for timezone
	
	username=$(getent passwd $UID | sed -e 's/\:.*//')
	workdir="/home/"$username"/.earthwallpaper"

	if [ ! -d $workdir ]; then
		mkdir -p $workdir
	fi

	cd $workdir

	site="http://himawari8-dl.nict.go.jp/himawari8/img/D531106"

	url="$site/$level/$width/$timestamp"

		for (( i=0; i<=$numblocks-1; ++i))
		do
		    for (( j=0; j<=$numblocks-1; ++j))
			do
				sourceurl="$url"$(printf '_%d_%d.png' "$i" "$j")
				#sourceurl="$url$dash$i$dash$j.png"
				#desturl="$url$dash"
				desturl="piece_"$numblocks"_"$(printf '%02d_%02d.png' "$i" "$j")
				echo Downloading $sourceurl to $desturl
			    wget $sourceurl -O $workdir/$desturl
			done
			convert -append piece_$numblocks*_*.png img_$numblocks"_"$(printf '%02d' "$i").png
			rm piece_$numblocks*_*.png
		done
	convert +append img_$numblocks"_"*.png "out_"$numblocks".png"
	rm img_$numblocks"_"*.png

	# if it isn't working - write me on e-mail
	case $DESKTOP_SESSION in
		"xfce") 
			xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorVGA-0/workspace0/last-image -s $workdir/out_$numblocks.png 
		;;
		"gnome")
			gconftool-2 -t str -s /desktop/gnome/background/picture_filename $workdir/out_$numblocks.png
		;;
		"i3")
			feh --bg-scale ~/Pictures/image.jpg # set
			echo "exec feh --bg-scale ~/Pictures/image.jpg" >> ~/.config/i3/config # set for autoload
		;;
		*)
			echo Unknown graphical system, can\'t set wallpaper. You can do it manually from $workdir
		;;
	esac

	echo Done, waiting $delay seconds
	sleep $delay
done


Похожее


С авторами не связывался, но, думаю, в открытый доступ они это не просто так грузили.

Tags:
Hubs:
+6
Comments 29
Comments Comments 29

Articles