如果你觉得Ubuntu的默认背景色看起来怪怪的,那就开始动手换掉它吧。
Ubuntu的默认背景色的值是#2c001e,此处对比网页白色背景,为了看着效果一样把色值调亮了 |
主要出现的位置有多处,对应需要不同的方法:
以下步骤均在Ubuntu18.04.5上测试。其他版本上请小心驾驶,谨防翻车。
准备一张和显示器分辨率相同的png格式的图片wallpaper.png,运行如下命令。
sudo cp -i wallpaper.png /usr/share/backgrounds/
sudo chmod 644 /usr/share/backgrounds/wallpaper.png
sudo chown root /usr/share/backgrounds/wallpaper.png
sudo chgrp root /usr/share/backgrounds/wallpaper.png
运行
sudo gedit /etc/default/grub
找到GRUB_GFXMODE所在行
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480
修改GRUB_GFXMODE为你的分辨率,并去掉它前面的#。保存退出。
GRUB_GFXMODE=1920x1080
放置你的图片并更新grub
sudo ln -s /usr/share/backgrounds/wallpaper.png /boot/grub/
sudo update-grub
运行
sudo ln -sf /usr/share/backgrounds/wallpaper.png /usr/share/plymouth/themes/ubuntu-logo/wallpaper.png
sudo gedit /usr/share/plymouth/themes/ubuntu-logo/ubuntu-logo.script
在最后添加三行,保存退出
wallpaper_image = Image("wallpaper.png");
wallpaper_sprite = Sprite(wallpaper_image);
wallpaper_sprite.SetZ(-100);
运行
sudo gedit /etc/alternatives/gdm3.css
找到
#lockDialogGroup {
background: #2c001e url(resource:///org/gnome/shell/theme/noise-texture.png);
修改为
#lockDialogGroup {
background: url(file:///usr/share/backgrounds/wallpaper.png);
找到
.login-dialog-user-list:expanded .login-dialog-user-list-item:selected {
background-color: #dd4814;
color: #ffffff; }
.login-dialog-user-list:expanded .login-dialog-user-list-item:logged-in {
border-right: 2px solid #dd4814; }
修改为透明,避免选择用户的框的背景与后面的整个背景不协调
.login-dialog-user-list:expanded .login-dialog-user-list-item:selected {
background-color: transparent;
color: #ffffff; }
.login-dialog-user-list:expanded .login-dialog-user-list-item:logged-in {
border-right: 2px solid transparent; }
运行
ln -s /usr/share/backgrounds/wallpaper.png ~/Pictures/
桌面鼠标右键→更改背景→背景/锁定屏幕→图片→选择双击
推荐使用terminator
sudo apt-get install terminator
terminator
右键→配置文件首选项→配置→default→背景→透明背景→0.80
1) 问题描述:
登录成功后,从输入密码界面切换到桌面时,会有一个短暂的过度动画,该动画会以#2c001e为背景色闪现一下,逼死强迫症。
无语的是,这个颜色值硬编码在js脚本里,这个脚本又被打包进了二进制库文件,没有设置接口。
那干脆就直接对这个库文件开刀了
2) 解决思路
查看/usr/lib/gnome-shell/libgnome-shell.so,可以找到以下明文内容。SystemBackground直接把0x2c001eff作为背景色。
修改代码里的0x2c001eff或者file也许就能改掉Ubuntu那糟糕的颜色。
var DEFAULT_BACKGROUND_COLOR = (Desktop.is("ubuntu")) ? Clutter.Color.from_pixel(0x2c001eff) : Clutter.Color.from_pixel(0x2e3436ff);
...
var SystemBackground = new Lang.Class({
Name: 'SystemBackground',
_init() {
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/noise-texture.png');
if (_systemBackground == null) {
_systemBackground = new Meta.Background({ meta_screen: global.screen });
_systemBackground.set_color(DEFAULT_BACKGROUND_COLOR);
_systemBackground.set_file(file, GDesktopEnums.BackgroundStyle.WALLPAPER);
3) 操作步骤
尽管直接修改颜色值能去掉#2c001e,但是新的颜色值依然和桌面壁纸不协调,过渡时还可能会闪一下。所以尝试其他方法。
阅读代码发现SystemBackground还读取了一个文件作为输入。于是修改其文件路径从而修改背景SystemBackground。
(注意:文件路径长度必须匹配原来的,否则无法正常开机进入桌面。比如原来的路径长的是52个字符,新的也要是52,不够就重命名图片文件用0补齐。)
运行
sudo cp -i /usr/lib/gnome-shell/libgnome-shell.so /tmp/libgnome-shell-bak.so
sudo apt -y install vim
sudo ln -sf /usr/share/backgrounds/wallpaper.png /usr/share/backgrounds/wallpaper00000000.png
sudo vim -b /usr/lib/gnome-shell/libgnome-shell.so
找到
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/noise-texture.png');
修改为
let file = Gio.File.new_for_uri('file:///usr/share/backgrounds/wallpaper00000000.png');
至此,输入密码后,进入桌面时,只有一个从中间放大的动画,再也不见基佬紫。
如果不幸失败了无法进入桌面,请尝试恢复备份:
sudo cp /tmp/libgnome-shell-bak.so /usr/lib/gnome-shell/libgnome-shell.so