Kali Linux 自定義GDM3登錄背景圖片和LOGO

[toc]

Kali Linux 自定義GDM3登錄背景圖片和LOGO

目標(biāo)

    1. 更改 gdm3 登錄頁面背景圖片
    1. 更改 gdm3 登錄頁面顯示LOGO

預(yù)備

  • Kali Linux (操作系統(tǒng))
  • GDM3 (顯示管理器)
  • Gnome 桌面環(huán)境(可選)
  • Python3 (腳本語言搪锣, 以root或sudo權(quán)限執(zhí)行)

更改 GDM3登錄頁面背景圖片

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

# TODO: 導(dǎo)入相關(guān)模塊
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))

## 鎖屏對話界面樣式, 在這里設(shè)置顯示的背景圖片
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: 創(chuàng)建臨時存儲對應(yīng)目錄
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默認(rèn)樣式內(nèi)容进宝,寫入自定義的背景圖片路徑
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 服務(wù)
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())
  • 按以上步驟執(zhí)行對應(yīng)的程序函數(shù)后,系統(tǒng)回退回到登錄界面蜒茄,此時顯示的登錄界面背景圖片則已經(jīng)變更成功荣茫。
  • 但登錄界面上的 LOGO還是會顯示 Kali Linux的圖標(biāo)落剪。

更改GDM3登錄頁面LOGO

# 以管理員權(quán)限執(zhí)行以下步驟

# TODO: 創(chuàng)建 gmd 文件
sudo vim /etc/dconf/profile/gdm

## gdm 內(nèi)容 start
user-db:user
system-db:gdm
file-db:/usr/share/gdm/greeter-dconf-defaults
## gdm 內(nèi)容 end

# TODO: 創(chuàng)建 LOGO 配置文件
sudo mkdir -p /etc/dconf/db/gdm.d/
sudo vim /etc/dconf/db/gdm.d/01-logo

## 01-logo 內(nèi)容  start 
[org/gnome/login-screen]
logo='/usr/share/pixmaps/logo/greeter-logo.png'
## 01-logo 內(nèi)容  end

# TODO: 更新變更內(nèi)容 
dconf update 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末溅漾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子著榴,更是在濱河造成了極大的恐慌,老刑警劉巖屁倔,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脑又,死亡現(xiàn)場離奇詭異,居然都是意外死亡锐借,警方通過查閱死者的電腦和手機问麸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钞翔,“玉大人严卖,你說我怎么就攤上這事〔冀危” “怎么了哮笆?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長汰扭。 經(jīng)常有香客問我稠肘,道長,這世上最難降的妖魔是什么萝毛? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任项阴,我火速辦了婚禮,結(jié)果婚禮上笆包,老公的妹妹穿的比我還像新娘环揽。我一直安慰自己,他們只是感情好庵佣,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布歉胶。 她就那樣靜靜地躺著,像睡著了一般秧了。 火紅的嫁衣襯著肌膚如雪跨扮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音衡创,去河邊找鬼帝嗡。 笑死,一個胖子當(dāng)著我的面吹牛璃氢,可吹牛的內(nèi)容都是我干的哟玷。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼一也,長吁一口氣:“原來是場噩夢啊……” “哼巢寡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起椰苟,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤抑月,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后舆蝴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谦絮,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年洁仗,在試婚紗的時候發(fā)現(xiàn)自己被綠了层皱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡赠潦,死狀恐怖叫胖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情她奥,我是刑警寧澤瓮增,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站哩俭,受9級特大地震影響钉赁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜携茂,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一你踩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧讳苦,春花似錦带膜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亭饵。三九已至,卻和暖如春芭挽,著一層夾襖步出監(jiān)牢的瞬間滑废,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工袜爪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蠕趁,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓辛馆,卻偏偏與公主長得像俺陋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子昙篙,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容