Copie o iniciador Unity de um usuário para todos os usuários

2

Gostaria de adicionar o estado da arte do iniciador do Unity como modelo para criar um estado de arte mínimo de outros usuários. Eu fui encontrado método como adicionar aplicativos em modelo, mas não método, como extrair as configurações do usuário atual.

Estou tentando garantir se apenas o esquema de edição é suficiente para definir a exibição do nome real do usuário registrado no indicador do painel.

    
por Peter Fodrek 22.09.2014 / 20:14

1 resposta

2

Você pode dividir os itens do iniciador do Unity em lançadores de aplicativos e outros itens; relacionados à rede, volumes montados e tal. O melhor é copiar apenas os lançadores de aplicativos para outros usuários, já que os outros podem ser específicos do usuário e / ou variar durante o processo.

Observe também que, se você copiar o conteúdo de um iniciador para outro usuário, possíveis arquivos locais .desktop (em ~/.local/share/applications ) de aplicativos instalados localmente, por exemplo, não aparecerão no iniciador Unity do usuário .

Lendo o conteúdo do lançador atual

Dito isto, você pode ler o conteúdo do lançador atual pelo comando:

gsettings get com.canonical.Unity.Launcher favorites

A saída é uma lista de todos os itens do seu lançador atual do Unity.

Definindo o conteúdo de um novo lançador

Para definir um novo conteúdo para o inicializador, o seguinte comando é usado:

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

Usando um script para copiar o iniciador para a conta de outro usuário

Se usarmos um script para buscar os itens do lançador do primeiro usuário, gravar o resultado em um arquivo e, em seguida, fazer login na conta de outro usuário para executar o script novamente (junto com o arquivo) para definir o conteúdo na conta de outro usuário, isso pode ser feito em pouquíssimo tempo. O script abaixo é feito para fazer as duas coisas, dependendo do argumento que você der (veja mais abaixo).

Como usar

  • Copie o script abaixo em um arquivo vazio, salve-o como copy_launcher.py
  • Abra uma janela de terminal na conta "usuário do modelo" e execute o script com o comando:

    python3 /path/to/copy_launcher.py get
    

    O get -argument do comando faz com que o script crie um arquivo de texto: saved_launcher.txt , com o conteúdo do seu iniciador atual do Unity. O arquivo é criado no mesmo diretório em que o script está localizado.

  • Copie o script e o arquivo saved_launcher.txt em (por exemplo) um pendrive, mas mantenha os dois arquivos juntos em um único diretório.
  • Faça login na conta de outro usuário, abra um terminal e execute o script pelo comando:

    python3 /path/to/copy_launcher.py set
    

    (pense no argumento set )

O script

#!/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()

Se você terminou, copiou o iniciador do Unity de um usuário para outro.

    
por Jacob Vlijm 24.09.2014 / 14:37