Kali Linux 自定义GDM3登录背景图片和LOGO

[toc]

Kali Linux 自定义GDM3登录背景图片和LOGO

目标

    1. 更改 gdm3 登录页面背景图片
    1. 更改 gdm3 登录页面显示LOGO

预备

  • Kali Linux (操作系统)
  • GDM3 (显示管理器)
  • Gnome 桌面环境(可选)
  • Python3 (脚本语言, 以root或sudo权限执行)

更改 GDM3登录页面背景图片

#!/usr/bin/env python3
# -coding:utf-8 -*-
# Desc: change gdm3 background
# Date: 2020-11-22
# Email: pydes@qq.com

# TODO: 导入相关模块
import os 
import subprocess
import re 
import shutil

# TODO: 配置
## 脚本目录路径 
current_dir = os.path.abspath(os.curdir)
## gnome-shell-theme.gresource 路径 
gnome_shell_resouce_path = '''/usr/share/gnome-shell/gnome-shell-theme.gresource'''
## 临时存储主题文件目录
gnome_shell_workdir = os.path.join(current_dir, 'ShellTheme')
## 提取的主题文件目录
gnome_shell_theme_dir = os.path.join(gnome_shell_workdir, 'org/gnome/shell/theme/')
## 主题资源配置文件
gnome_shell_resource_xml = os.path.join(gnome_shell_workdir, 'org/gnome/shell/theme/gnome-shell-theme.gresource.xml')
## 主题样式配置文件
gnome_shell_theme_gnome_shell_css = os.path.join(gnome_shell_workdir, 'org/gnome/shell/theme/gnome-shell.css')
## 更改成的背景图片的路径
background_png_path = '''/home/Pydes/Pictures/wallpaper/background.png''' 
print('>_ Png Path: {}'.format(background_png_path))

## 锁屏对话界面样式, 在这里设置显示的背景图片
lockDialogGroupConent = '''lockDialogGroup {
    background: #2e3436 url(file://%s);
    background-repeat: repeat;
    background-color: #41494c;
}
''' %(background_png_path)

# TODO: 获取原GDM配置资源列表
def gresource_list():
    cmd = '''gresource list {}'''.format(gnome_shell_resouce_path)
    gresource_list = subprocess.getoutput(cmd).split() 
    return gresource_list

# TODO: 创建临时存储对应目录
def make_gresource_dir():
    gresource_dir_source_list = []
    get_gresource_list = gresource_list()
    for each_path in get_gresource_list:
        get_base_dir = os.path.dirname(each_path)
        get_base_dir_path = gnome_shell_workdir+get_base_dir
        gresource_dir_source_list.append(get_base_dir_path)
    get_gresource_dirs = set(gresource_dir_source_list)
    for each_dir in get_gresource_dirs:
        if os.path.exists(each_dir):
            pass 
        else:
            os.makedirs(each_dir)
    return get_gresource_dirs

# TOOD: 解压资源文件到临时存储目录
def extract_gst():
    get_gresource_list = gresource_list()
    for each_gresource in get_gresource_list:
        cmd = '''gresource extract %s %s > %s%s''' %(gnome_shell_resouce_path, each_gresource, gnome_shell_workdir,  each_gresource)
        print(cmd)
        run_cmd = subprocess.getoutput(cmd)
        print(run_cmd)
    return get_gresource_list

# TODO: 遍历解压出来的主题目录文件
def walk_theme_path():
    theme_path_list = []
    for root, dirs, files in os.walk(gnome_shell_theme_dir):
        for file in files:
            file_path = os.path.join(root, file)
            theme_path_list.append(file_path)
    return theme_path_list

# TODO: 生成新的资源配置文件 gnome-shell-theme.gresource.xml
def create_gnome_shell_theme_gresource_xml():
    get_file_list = walk_theme_path()
    format_file_name_string = ''
    for each_file_name in get_file_list:
        format_file_name_string = format_file_name_string+ '<file>'+each_file_name.replace(gnome_shell_theme_dir,'')+'</file>\n'
    gnome_shell_theme_gresource_xml_content = '''<?xml version="1.0" encoding="UTF-8"?><gresources>
  <gresource prefix="/org/gnome/shell/theme">'''+format_file_name_string+'''</gresource>
</gresources>'''
    with open(gnome_shell_resource_xml, 'w+') as gnome_shell_resource_xml_file:
        gnome_shell_resource_xml_file.write(gnome_shell_theme_gresource_xml_content)
    return (gnome_shell_resource_xml, gnome_shell_theme_gresource_xml_content)

# TODO: 更改原GDM默认样式内容,写入自定义的背景图片路径
def change_gnome_shell_css_content():
    gnome_shell_css_content = ''
    with open(gnome_shell_theme_gnome_shell_css, 'r') as gnome_shell_css_file:
        gnome_shell_css_content = gnome_shell_css_file.read()
    sub_string = r'(lockDialogGroup[\s+]\{[^}]*[?=\}])'
    result_string = re.sub(sub_string, lockDialogGroupConent,gnome_shell_css_content)
    with open(gnome_shell_theme_gnome_shell_css, 'w+') as gnome_shell_css_file:
        gnome_shell_css_file.write(result_string)
    return result_string

# TODO: 打包新的主题目文件
def compile_theme():
    cmd = '''glib-compile-resources gnome-shell-theme.gresource.xml'''
    os.chdir(os.path.join(gnome_shell_workdir, 'org/gnome/shell/theme'))
    run_cmd = subprocess.getoutput(cmd)
    return run_cmd

# TODO: 备份旧的主题文件并将新的文件存放来原主题文件路径下 
def copy_back_gresouce_xml():
    if os.path.isfile(gnome_shell_resouce_path):
        bak_path = gnome_shell_resouce_path+'_bak'
        move_action = shutil.move(gnome_shell_resouce_path, bak_path)
        print(move_action)
    new_gnome_shell_theme_gresource = os.path.join(gnome_shell_theme_dir, 'gnome-shell-theme.gresource')
    move_action = shutil.move(new_gnome_shell_theme_gresource, gnome_shell_resouce_path)
    return move_action

# TODO: 重新启动 GDM 服务
def restart_gdm_service():
    cmd = '''systemctl restart gdm'''
    run_cmd = subprocess.getoutput(cmd)
    return run_cmd


# TODO: Test
#print(gresource_list())
#print(make_gresource_dir())
#print(extract_gst())
#print(walk_theme_path())
#print(create_gnome_shell_theme_gresource_xml())
#print(change_gnome_shell_css_content())
#print(compile_theme())
#print(copy_back_gresouce_xml())
#print(restart_gdm_service())
  • 按以上步骤执行对应的程序函数后,系统回退回到登录界面,此时显示的登录界面背景图片则已经变更成功。
  • 但登录界面上的 LOGO还是会显示 Kali Linux的图标。

更改GDM3登录页面LOGO

# 以管理员权限执行以下步骤

# TODO: 创建 gmd 文件
sudo vim /etc/dconf/profile/gdm

## gdm 内容 start
user-db:user
system-db:gdm
file-db:/usr/share/gdm/greeter-dconf-defaults
## gdm 内容 end

# TODO: 创建 LOGO 配置文件
sudo mkdir -p /etc/dconf/db/gdm.d/
sudo vim /etc/dconf/db/gdm.d/01-logo

## 01-logo 内容  start 
[org/gnome/login-screen]
logo='/usr/share/pixmaps/logo/greeter-logo.png'
## 01-logo 内容  end

# TODO: 更新变更内容 
dconf update 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容