Ubuntu在桌面壁纸上显示计算机名
- 时间: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在桌面壁纸上显示计算机名的更多相关文章
- Windows Server 2012 R2在桌面上显示计算机/网络图标
原文 Windows Server 2012 R2在桌面上显示计算机/网络图标 从Windows2012开始,微软取消了服务器桌面个性化选项,如何重新调出配置界面,可以使用微软命令调出.具体方法如下: ...
- Xshell连接Ubuntu服务器连接不上 显示拒绝了密码
确保下方两个都安装了 sudo apt-get install openssh-server sudo apt-get install ssh 修改 vim /etc/ssh/sshd_config ...
- 显示、更改ubuntu linux主机名(计算机名)
在bash中输入hostname可以显示计算机名.Linux和windows都可以使用这条指令. 主机名保存在/etc/hostname文件中 需要进入Root权限才可以修改该文件. sudo ged ...
- 烂泥:学习ubuntu远程桌面(一):配置远程桌面
本文由秀依林枫提供友情赞助,首发于烂泥行天下 公司服务器目前安装的都是ubuntu 14.04系统,而且由于业务需要,需要使用到ubuntu的远程桌面功能.所以本篇文章都是围绕ubuntu的远程桌面来 ...
- Windows Server 2012 r2 显示计算机图标
在 Windows Server 2012 R2 系统中,微软取消了服务器桌面个性化选项,如何重新调出配置界面,在桌面上显示计算机图标,本文为大家介绍一下! Win2012我的电脑怎么显示到桌面? 一 ...
- c# Windows Service 桌面上显示UI
介绍 本文的目的是说明如何从Windows Vista中的服务正确启动交互式进程,以及演示如何以完全管理员权限启动该进程.交互式过程是能够在桌面上显示UI的过程. 本文介绍如何创建一个名为Loader ...
- Windows 10 如何在桌面上显示“此电脑”和“控制面板”
新电脑安装好 Windows 10 系统,默认在桌面上是不显示 "此电脑" 和 "控制面板" 图标的. 如果是 Windows 10 家庭版,桌面一般只显示&q ...
- eclipse上传显示svn上传者名
这里来记录下eclipse上传显示svn上传者名. 如图所示,修改即可.
- iPhone 上显示桌面版页面
在用智能电话的浏览器打开页面时,很多网站会根据浏览器的屏幕大小自动调整显示布局,或跳转到移动设备使用的专用面上来优化显示.一些情况下,这种优化可能不是用户希望的,比如优化后的页面缺少桌面版的功能. 这 ...
随机推荐
- 基于 apache-arrow 的 duckdb rust 客户端
背景 duckdb 是一个 C++ 编写的单机版嵌入式分析型数据库.它刚开源的时候是对标 SQLite 的列存数据库,并提供与 SQLite 一样的易用性,编译成一个头文件和一个 cpp 文件就可以在 ...
- python中浮点数比较判断!为什么不能用==
问题:浮点数比较为什么不能用==来写? 答:计算机里面的数字是由二进制保存的,在计算机内部有些数字不能准确的保存,于是就保存了一个最靠近的数字. 计算机表示浮点数(float或double类型)都有一 ...
- 第五篇--Chorme浏览器主页被篡改
解决方法:关闭谷歌浏览器,右击桌面快捷方式,查看属性,然后将target后面的网址删掉.并且任务栏的google打开方式,最好也把流氓网址删掉.之后就正常了.
- Linux符号描述
& 表示任务在后台执行,如要在后台运行redis-server,则有 redis-server &&& 表示前一条命令执行成功时,才执行后一条命令 ,如 echo ...
- Qt Creator 入门
Qt 的入门我觉得可以直接从窗口开始,而不是什么"Hello World!".因为Qt 是一个基于图形界面的编程软件,图形界面编程是其核心所在.很久以前,那时候还是Shell编程, ...
- 搭建MySQL主从实现Django读写分离
一.MySQL主从搭建 主从配置原理: 主库写日志到 BinLog 从库开个 IO 线程读取主库的 BinLog 日志,并写入 RelayLog 再开一个 SQL 线程,读 RelayLog 日志,回 ...
- 记一次jenkins svn构建过程
本文主要参考:maven实战第11章Hudson持续集成 安装Hudson,Hudson插件下载不了,尝试结果未果,转而使用Jenkins 放入tomcat的webapp目录,在bin下点击start ...
- 大数据学习(07)——Hadoop3.3高可用环境搭建
前面用了五篇文章来介绍Hadoop的相关模块,理论学完还得操作一把才能加深理解.这一篇我会花相当长的时间从环境搭建开始,到怎么在使用Hadoop,逐步介绍Hadoop的使用. 本篇分这么几段内容: 规 ...
- 【GCC编译器】Swing Modulo Scheduling
1. SMS 在 GCC 中的实现 1.1. 一些基本概念 (1)软流水(Software pipelining )是一种通过重叠不同迭代的指令,使其并行执行,从而改进循环中指令调度的技术.关键思想是 ...
- dio框架访问云函数参数传递问题(以腾讯云中的云函数为例子)第一部
dd云函数其实比较普及,这里以腾讯云的云函数为例,传递参数完成简单的账号注册. 一.第一步先注册腾讯云账号,这里不过多阐述,接着点击 控制台 进入开发者界面.(注意提前进行实名认证) 二.开发者界面如 ...