Ubuntu在桌面壁紙上顯示計算機名

  • 時間:2018-07-16 記錄:byzqy

介紹:python

  在管理多臺計算機時,將每臺計算機的ID或者計算機名醒目的顯示在電腦桌面,每每是一個不錯的選擇。下面記錄一下在Ubuntu 16.04上使用Python2.7如何實現這一功能。linux

工具/原料:ubuntu

  操做系統:Ubuntu 16.04 ,bash

  編輯工具:gedit,socket

  開發語言:Python 2.7編輯器

  python庫:Pillow-5.2.0-cp27-cp27mu-manylinux1_x86_64.whl工具

  Pillow是Python裏的圖像處理庫(PIL:Python Image Library),提供了了普遍的文件格式支持,強大的圖像處理能力,主要包括圖像儲存、圖像顯示、格式轉換以及基本的圖像處理操做等。 字體

代碼/邏輯:this

  一、建立python腳本,腳本包含兩個動做:利用電腦自帶圖片合成新的圖片、將新的圖片設置爲當前桌面背景;spa

  二、建立desktop文件和bash腳本,用來執行調用python腳本,實現鼠標雙擊圖標運行,方便操做;

  三、修改ubuntu系統開機運行文件:/etc/rc.local,實現電腦開機自運行更換壁紙的python腳本。

文件:Create_Image.py

 1 import os
 2 import socket
 3 from PIL import Image,ImageDraw,ImageFont
 4 
 5 
 6 def ModifyImage(img_path, StationID):
 7   img = Image.open(img_path)
 8   print dir(img)
 9   draw = ImageDraw.Draw(img)
10   draw_font = ImageFont.truetype('/usr/share/fonts/truetype/ubuntu-font-family/Ubuntu-L.ttf', 280)
11   txtsize = draw_font.getsize(StationID)
12   imgsize = img.size
13   x = (imgsize[0] - txtsize[0]) / 2
14   y = (imgsize[1] - txtsize[1]) / 2
15   draw.text([x, y], StationID, font=draw_font)
16   img.save('/home/user/CustomWallpaper/Temp/warty-final-ubuntu-temp.png')
17   os.system('gsettings set org.gnome.desktop.background picture-uri file:/home/user/CustomWallpaper/Temp/warty-final-ubuntu-temp.png')
18 
19 
20 if __name__ == '__main__':
21   pc_name = socket.gethostname()
22   pc_name = pc_name.upper()
23   pc_name = pc_name.replace('-', '_')
24   ModifyImage('/usr/share/backgrounds/warty-final-ubuntu.png', pc_name)

文件:run_changewallpaper.sh

 1 #!/bin/bash -x
 2 CURR_DIR=`dirname $0`
 3 TEST_MODE=$1
 4 if [[ ! $CURR_DIR =~ ^/ ]]; then
 5   CURR_DIR="$PWD/$CURR_DIR"
 6 fi
 7 
 8 pkill -9f python
 9 cd $CURR_DIR
10 python ./Create_Image.py

文件:rc.local (修改後的)

 1 #!/bin/sh -e
 2 #
 3 # rc.local
 4 #
 5 # This script is executed at the end of each multiuser runlevel.
 6 # Make sure that the script will "exit 0" on success or any other
 7 # value on error.
 8 #
 9 # In order to enable or disable this script just change the execution
10 # bits.
11 #
12 # By default this script does nothing.
13 
14 #auto change wallpaper
15 /home/user/CustomWallpaper/ChangeWallpaper/run_changewallpaper.sh
16 #auto change wallpaper
17 
18 exit 0

打開終端(Terminal)輸入:sudo gedit /etc/rc.local ,在文本編輯器中打開系統文件rc.local,在文件中 exit 0 的上方添加以下內容:

#開機自動更換壁紙
/home/user/CustomWallpaper/ChangeWallpaper/run_changewallpaper.sh
#開機自動更換壁紙

文件:ChangeWallpaper.desktop

 1 #!/usr/bin/env xdg-open
 2 
 3 [Desktop Entry]
 4 Version=1.0
 5 Type=Application
 6 Terminal=true
 7 Exec=/home/user/CustomWallpaper/ChangeWallpaper/run_changewallpaper.sh
 8 Name=Change Wallpaper
 9 Comment=Change Wallpaper
10 Icon=/home/user/CustomWallpaper/ChangeWallpaper/wallpaper_128px.png
11 Name[zh_CN]=Change Wallpaper

此外,爲了方便操做和部署,還建立了幾個另外的desktop文件:

文件:Install Pillow.desktop (雙擊安裝pillow庫的快捷方式文件)

 1 #!/usr/bin/env xdg-open
 2 
 3 [Desktop Entry]
 4 Version=1.0
 5 Type=Application
 6 Terminal=true
 7 Exec=sudo pip install '/home/user/CustomWallpaper/ChangeWallpaper/Pillow-5.2.0-cp27-cp27mu-manylinux1_x86_64.whl'
 8 Name=Install Pillow
 9 Comment=Install Pillow
10 Icon=/home/user/CustomWallpaper/ChangeWallpaper/wallpaper_128px.png
11 Name[en]=Install Pillow

文件:Set Auto Start.desktop (用修改好的rc.local文件直接替換掉原來的文件)

 1 #!/usr/bin/env xdg-open
 2 
 3 [Desktop Entry]
 4 Version=1.0
 5 Type=Application
 6 Terminal=true
 7 Exec=sudo cp '/home/user/CustomWallpaper/ChangeWallpaper/rc.local' '/etc/rc.local'
 8 Name=Set Auto Ssart
 9 Comment=Set Auto Ssart
10 Icon=/home/user/CustomWallpaper/ChangeWallpaper/wallpaper_128px.png
11 Name[en]=Set Auto Ssart
12 Name[en_US]=Set Auto Start

備註:

  一、以上文件(腳本)在使用時,記得要打開可執行權限:在文件上鼠標右鍵,點擊屬性勾選可執行權限。不然沒法使用;

  二、文件中出現的CustomWallpaper/ChangeWallpaperCustomWallpaper/Temp是我在/home/user目錄下建立的文件夾,前者存放腳本,後者存放新的桌面背景;

  三、有時候會出現開機後電腦桌面沒有更換的狀況,觀察發現python腳本有運行,新的圖片也成功生成,可是設置爲當前壁紙的時候沒有成功,目前還沒找到緣由。遇到這種狀況須要手動運行一下ChangeWallpaper.desktop文件即可成功更換壁紙。

預覽:

 

更新:(2018-11-23)

上面的代碼中沒有設置字體的顏色,默認爲白色,固然也能夠自定義顏色,只需對代碼稍做修改:

fillcolor = 'lightcyan'
#red紅色/blue藍色/lightcyan淺藍色/grey灰色/black黑色/gold金色/limegreen暗綠/white白色/...
draw.text([x, y], StationID, font=draw_font, fill=fillcolor)

--the end--

相關文章
相關標籤/搜索