Como posso configurar as etapas de mudanças no tamanho da fonte no terminal?

4

Como posso configurar as etapas de alterações no tamanho da fonte no terminal? Agora eu uso 10pt e o próximo passo ao usar atalhos de teclado é muito grande. Como posso configurar o tamanho da etapa?

    
por don.joey 06.01.2017 / 15:58

1 resposta

4

O script abaixo definirá o tamanho da fonte, de todos os perfis de uma só vez, em etapas de 0,5. Você terá que ver se isso é suficiente para você; o terminal não reage em todas as etapas.

No meu caso, houve uma mudança visível de

10 --> 10.5 --> 11

10.5

11

mas aumentando a partir de

11 --> 11.5

não teve nenhum efeito até aumentar mais uma vez para

12

Isso provavelmente está relacionado ao tamanho da fonte, em relação ao tamanho da janela, que não permite floats, já que você está usando uma fonte monotype no terminal.

No entanto, o script oferece os tamanhos que existem nessa situação.

O script

#!/usr/bin/env python3
import subprocess
import sys
import ast

"""
Copyright (C) 2016  Jacob Vlijm
https://launchpad.net/~vlijm/+contactuser
This program is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or any later version. This
program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details. You
should have received a copy of the GNU General Public License along with this
program.  If not, see <http://www.gnu.org/licenses/>.
"""

arg = sys.argv[1]

k = ["/org/gnome/terminal/legacy/profiles:/:", "/use-system-font", "font"]

def get(cmd):
    return subprocess.check_output(cmd).decode("utf-8").strip()

def run(cmd):
    subprocess.Popen(cmd)

def set_size(profile):
    def_font = k[0]+profile+k[1]
    # first set use default font to false
    run(["dconf", "write", def_font, "false"])
    # read the current font
    currfont = ast.literal_eval(get(["dconf", "read", k[0]+profile+"/"+k[2]])).split()
    # read the current size
    currsize = float(currfont[-1])
    # set the newsize
    if arg == "up":
        newsize = currsize+0.5
    elif arg == "down":
        newsize = currsize-0.5
    run(["dconf", "write", k[0]+profile+"/"+k[2], "'"+currfont[0]+" "+str(newsize)+"'"])

# get profiles
prf = k[0][:-1]+"list"
# set fontsize up/down 0.5
for p in ast.literal_eval(get(["dconf", "read", prf])):
    set_size(p)

Como usar

  1. Copie o script em um arquivo vazio, salve-o como terminalfont.py
  2. Teste- execute o script pelos comandos:

    python3 /path/to/terminalfont.py up
    

    para aumentar o tamanho da fonte e

    python3 /path/to/terminalfont.py down
    

    para diminuir o tamanho da fonte

  3. Se tudo funcionar bem, adicione os dois comandos aos atalhos

Explicação

Infelizmente, não há chave disponível em gsettings para definir o tamanho da fonte do terminal. Precisamos usar dconf diretamente para ler e editar configurações.

Primeiramente, podemos buscar a lista de perfis pelo comando:

dconf read /org/gnome/terminal/legacy/profiles:/list

Quando tivermos a lista de perfis, o script primeiro desativa a utilização da fonte padrão (por perfil):

dconf write /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/use-system-font false

onde b1dcc9dd-5262-4d8d-a863-c897e6d979b9 é o ID do perfil

Posteriormente, lemos a fonte atual & amp; tamanho com o comando:

dconf read /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/font

... analisamos o tamanho da fonte, adicionamos ou subtraí 0.5 e definimos o novo tamanho por:

dconf write /org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/font 'Monospace 14.0'

Nota

Como mencionado, se isso for suficiente para você só pode ser testado por você. Se isso não acontecer, receio que não consigamos consertá-lo, porque o tamanho da fonte deve estar em certa proporção da janela do terminal em uma fonte de tipo mono.

    
por Jacob Vlijm 07.01.2017 / 14:17