• 时间:2018-07-16 记录:byzqy

介绍:

  在管理多台计算机时,将每台计算机的ID或者计算机名醒目的显示在电脑桌面,往往是一个不错的选择。下面记录一下在Ubuntu 16.04上使用Python2.7如何实现这一功能。

工具/原料:

  操作系统:Ubuntu 16.04 ,

  编辑工具:gedit,

  开发语言:Python 2.7

  python库:Pillow-5.2.0-cp27-cp27mu-manylinux1_x86_64.whl

  Pillow是Python里的图像处理库(PIL:Python Image Library),提供了了广泛的文件格式支持,强大的图像处理能力,主要包括图像储存、图像显示、格式转换以及基本的图像处理操作等。

代码/逻辑:

  1、创建python脚本,脚本包含两个动作:利用电脑自带图片合成新的图片、将新的图片设置为当前桌面背景;

  2、创建desktop文件和bash脚本,用来执行调用python脚本,实现鼠标双击图标运行,方便操作;

  3、修改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

备注:

  1、以上文件(脚本)在使用时,记得要打开可执行权限:在文件上鼠标右键,点击属性勾选可执行权限。否则无法使用;

  2、文件中出现的CustomWallpaper/ChangeWallpaper和CustomWallpaper/Temp是我在/home/user目录下创建的文件夹,前者存放脚本,后者存放新的桌面背景;

  3、有时候会出现开机后电脑桌面没有更换的情况,观察发现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--

Ubuntu在桌面壁纸上显示计算机名的更多相关文章

  1. Windows Server 2012 R2在桌面上显示计算机/网络图标

    原文 Windows Server 2012 R2在桌面上显示计算机/网络图标 从Windows2012开始,微软取消了服务器桌面个性化选项,如何重新调出配置界面,可以使用微软命令调出.具体方法如下: ...

  2. Xshell连接Ubuntu服务器连接不上 显示拒绝了密码

    确保下方两个都安装了 sudo apt-get install openssh-server sudo apt-get install ssh 修改 vim /etc/ssh/sshd_config ...

  3. 显示、更改ubuntu linux主机名(计算机名)

    在bash中输入hostname可以显示计算机名.Linux和windows都可以使用这条指令. 主机名保存在/etc/hostname文件中 需要进入Root权限才可以修改该文件. sudo ged ...

  4. 烂泥:学习ubuntu远程桌面(一):配置远程桌面

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 公司服务器目前安装的都是ubuntu 14.04系统,而且由于业务需要,需要使用到ubuntu的远程桌面功能.所以本篇文章都是围绕ubuntu的远程桌面来 ...

  5. Windows Server 2012 r2 显示计算机图标

    在 Windows Server 2012 R2 系统中,微软取消了服务器桌面个性化选项,如何重新调出配置界面,在桌面上显示计算机图标,本文为大家介绍一下! Win2012我的电脑怎么显示到桌面? 一 ...

  6. c# Windows Service 桌面上显示UI

    介绍 本文的目的是说明如何从Windows Vista中的服务正确启动交互式进程,以及演示如何以完全管理员权限启动该进程.交互式过程是能够在桌面上显示UI的过程. 本文介绍如何创建一个名为Loader ...

  7. Windows 10 如何在桌面上显示“此电脑”和“控制面板”

    新电脑安装好 Windows 10 系统,默认在桌面上是不显示 "此电脑" 和 "控制面板" 图标的. 如果是 Windows 10 家庭版,桌面一般只显示&q ...

  8. eclipse上传显示svn上传者名

    这里来记录下eclipse上传显示svn上传者名. 如图所示,修改即可.

  9. iPhone 上显示桌面版页面

    在用智能电话的浏览器打开页面时,很多网站会根据浏览器的屏幕大小自动调整显示布局,或跳转到移动设备使用的专用面上来优化显示.一些情况下,这种优化可能不是用户希望的,比如优化后的页面缺少桌面版的功能. 这 ...

随机推荐

  1. 新iPhone有望加入指纹解锁,你会买吗?

    苹果新款iPhone即将在9月份正式发布,或命名为iPhone 13或者iPhone 12s.据外媒报道,新一代iPhone的屏幕和相机都将迎来重大升级,同时还将首次加入屏下指纹解锁技术.你期待吗? ...

  2. 【洛谷P1281 书的复制】二分+动态规划

    分析 两个做法,一个DP,一个是二分. 二分:也就是二分枚举每个人分到的东西. DP:区间DP F[I][J]表示前i本书分给j个人用的最短时间 由于每一次j的状态由比j小的状态得出,所以要先枚举j, ...

  3. THE MINTO PYRAMID PRINCIPLE

    金字塔原理:(重点突出,逻辑清晰.层次分明,简单易懂的思考方式.沟通方式.规范的动作.) 结构:结论先行,以上统下,归类分组,逻辑递进.先重要后次要,先总结后具体,先框架后细节,先结论后原因,先结果后 ...

  4. 【阅读笔记】Java核心技术卷一 #1.Chapter3

    3 Java的基本程序设计结构 3.1 一个简单的 Java 应用程序(略) 3.2 注释(略) 3.3 数据类型 8种基本类型 byte,short,int,long float,double ch ...

  5. php获取当前用户ip

    function wcs_get_onlineip() { $onlineip = ''; if(getenv('HTTP_CLIENT_IP') && strcasecmp(gete ...

  6. Java 使用 Apache commons-math3 线性拟合、非线性拟合实例(带效果图)

    Java 使用 CommonsMath3 的线性和非线性拟合实例,带效果图 例子查看 GitHub Gitee 运行src/main/java/org/wfw/chart/Main.java 即可查看 ...

  7. Mybatis-初见

    目录 介绍 示例 搭建环境 创建一个模块 CURD 万能Map 配置解析 环境配置 environments 属性 properties 类型别名 typeAliases 其他配置 映射器 mappe ...

  8. Vue学习笔记(一)简单使用和插值操作

    目录 一.Vue是什么 二.Vue简单体验 1. 声明式渲染 2. vue列表展示 3. 处理用户输入(事件监听) 三.插值操作 1. Mustache语法 2. 常用v-指令 v-once v-ht ...

  9. C++ //运算符重载 +号

    1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 //1.成员函数重载 +号 6 cla ...

  10. 10 个超棒的 JavaScript 简写技巧

    今天我要分享的是10个超棒的JavaScript简写方法,可以加快开发速度,让你的开发工作事半功倍哦. 开始吧! 1. 合并数组 普通写法: 我们通常使用Array中的concat()方法合并两个数组 ...