将 Unity 启动器从一个用户复制到所有用户

将 Unity 启动器从一个用户复制到所有用户

我想添加 Unity 启动器的最新状态作为模板,以创建其他用户的最低限度的最新状态。我找到了将应用程序添加到模板的方法,但没有找到提取当前用户设置的方法。

我正在尝试确保仅编辑架构是否足以在面板指示器中设置登录用户真实姓名的显示。

答案1

您可以将 Unity 启动器的项目分为应用程序启动器和其他项目;网络相关、已安装卷等。最好只将应用程序启动器复制到其他用户,因为其他启动器可能是用户特定的和/或在过程中发生变化。

另请注意,如果你将启动器的内容复制给另一个用户,可能当地的~/.local/share/applications例如,本地安装的应用程序的.desktop 文件(在 中)将不会出现在其他用户的 Unity 启动器中。

读取当前启动器的内容

话虽如此,你可以通过以下命令读取当前启动器的内容:

gsettings get com.canonical.Unity.Launcher favorites

输出是当前 Unity 启动器中所有项目的列表。

设置新启动器的内容

启动器的新内容,使用以下命令:

gsettings set com.canonical.Unity.Launcher favorites <list_of_items>

使用脚本将启动器复制到另一个用户的帐户

如果我们使用脚本来拿来第一个用户的启动器项,将结果写入文件,然后登录另一个用户的帐户再次运行脚本(连同文件)以内容到其他用户的帐户中,这可以立即完成。下面的脚本可以同时执行这两项操作,具体取决于您给出的参数(请参阅下文)。

如何使用

  • 将以下脚本复制到一个空文件中,并将其另存为copy_launcher.py
  • 在“模型用户”帐户中打开一个终端窗口,并使用以下命令运行脚本:

    python3 /path/to/copy_launcher.py get
    

    该命令的-argumentget使脚本创建一个文本文件:saved_launcher.txt,其中包含当前 Unity 启动器的内容。该文件创建在与脚本所在的同一目录中。

  • 将脚本和saved_launcher.txt文件复制到(例如) USB 记忆棒上,但将两个文件保存在同一个目录中。
  • 登录其他用户的帐户,打开终端并通过以下命令运行脚本:

    python3 /path/to/copy_launcher.py set
    

    (注意争论)

剧本

#!/usr/bin/env python

import subprocess
import os
import sys

command = sys.argv[1]

curr_dir = os.path.dirname(os.path.abspath(__file__))
datafile = curr_dir+"/saved_launcher.txt"

def get_current():
    get_current = subprocess.check_output(["gsettings", "get", "com.canonical.Unity.Launcher", "favorites"]).decode("utf-8")
    return (str([item for item in eval(get_current) if item.startswith("application://")]),
            [item for item in eval(get_current) if not item.startswith("application://")])

def write_saved():
    current_launcher = get_current()[0]
    with open(datafile, "w") as saved:
        saved.write(current_launcher)

def read_saved():
    with open(datafile, "r") as saved:
        return eval(saved.read())

def set_launcher():
    app_section = read_saved(); fixed_section = get_current()[1]
    new_launcher = str(app_section+fixed_section)
    subprocess.Popen(["gsettings", "set", "com.canonical.Unity.Launcher", "favorites", new_launcher ])


if command == "set":
    set_launcher()
elif command == "get":
    write_saved()

如果您已完成,则您已将 Unity 启动器从一个用户复制到另一个用户。

相关内容