AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1234742
Accepted
Gregory Opera
Gregory Opera
Asked: 2020-05-04 04:17:52 +0800 CST2020-05-04 04:17:52 +0800 CST 2020-05-04 04:17:52 +0800 CST

Modo automático claro/escuro?

  • 772

Alguém encontrou uma maneira de alternar automaticamente entre os modos "claro" e "escuro" ainda, com relação ao "Tema da janela" nas configurações do Ubuntu (Configurações → Aparência → Tema da janela → Claro / Padrão / Escuro )?

Escavar as configurações todas as manhãs ou noites é uma verdadeira dor. Seria ótimo poder alternar automaticamente para o modo "escuro" ao pôr do sol e alternar automaticamente para o modo "claro" ao nascer do sol.

gnome gnome-shell
  • 3 3 respostas
  • 12464 Views

3 respostas

  • Voted
  1. Best Answer
    sk22
    2020-12-05T08:24:54+08:002020-12-05T08:24:54+08:00

    Para o GNOME, existe esta extensão de shell: Night Theme Switcher

    Ele tem muitas opções e já funciona fora da caixa, sem precisar configurar nada, mas a configuração também é simples!

    Captura de tela da guia Agendar

    Captura de tela da guia do tema GTK

    • 18
  2. Shubhzgang
    2020-05-04T07:51:31+08:002020-05-04T07:51:31+08:00

    O comando do terminal para alterar o tema é:

    gsettings set org.gnome.desktop.interface gtk-theme Yaru-dark
    

    para o tema Yaru-escuro, e

    gsettings set org.gnome.desktop.interface gtk-theme Yaru-light
    

    para o tema Yaru-luz.

    Agora, existe algo chamado cron-job para agendar trabalhos (basicamente executar algo, repetidamente em um horário específico). Assim, você pode escrever um cron-job para executar esses comandos em horários especificados (algo como mudar para tema escuro às 21h e tema claro às 6h).

    Adicione o seguinte a um arquivo chamado script.sh:

    #!/bin/bash
    echo export DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS > lightscript.sh
    echo export DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS > darkscript.sh
    echo "gsettings set org.gnome.desktop.interface gtk-theme Yaru-light" >> lightscript.sh
    echo "gsettings set org.gnome.desktop.interface gtk-theme Yaru-dark" >> darkscript.sh
    chmod 755 lightscript.sh
    chmod 755 darkscript.sh
    
    currenttime=$(date +%H:%M)
    if [[ "$currenttime" > "21:00" ]] || [[ "$currenttime" < "06:00" ]]; then
      ./darkscript.sh
    else
      ./lightscript.sh
    fi
    

    Torne o arquivo executável em execução:

    chmod 755 /path/to/script.sh
    

    ou:

    chmod +x /path/to/script.sh
    

    Execute gnome-session-propertiesno terminal. Adicione um novo programa de inicialização clicando em adicionar no lado direito e selecionando o script.sharquivo navegando e salve-o com algum nome e comentário. Isso dirá ao GNOME para criar lightscript.she darkscript.shsempre que você fizer login pela GUI.

    Adicione seu trabalho (alterar tema) crontabusando o comando:

    crontab -e
    

    e escolhendo um editor adequado ou você pode ir /var/spool/cron/crontabse editar o arquivo com seu nome de usuário. Acessar o arquivo dessa maneira requer sudoprivilégios. Adicione as duas linhas a seguir ( /path/to/substituídas pelo caminho real):

    0 6 * * * /path/to/lightscript.sh
    0 21 * * * /path/to/darkscript.sh
    

    Vai dizer:

    crontab: installing new crontab
    

    após sair do comando. Você também pode verificar com:

    crontab -l
    

    Isso deve servir. As duas linhas acima dizem cronpara executar lightscript.shàs 6h e darkscript.shàs 21h todos os dias.

    Estamos fazendo esse desvio em vez de apenas adicionar:

    0 6 * * * gsettings set org.gnome.desktop.interface gtk-theme Yaru-light
    

    para crontabporque isso requer que a DBUS_SESSION_BUS_ADDRESSvariável seja definida corretamente.

    • 9
  3. Nilesh
    2022-05-11T20:30:02+08:002022-05-11T20:30:02+08:00

    Podemos conseguir isso com a ajuda da respostacrontab de @shubhzgang .

    #!/bin/bash
    
    # Script that auto switches Ubuntu themes to Dark or Light, 
    # depending on the time of day
    
    # Copy this script file to /usr/local/bin/my-auto-theme
    # Add following lines to crontab -e
    # 0 9 * * * bash /usr/bin/local/my-auto-theme light
    # 0 17 * * * bash /usr/bin/local/my-auto-theme dark
    # @reboot bash /usr/bin/local/my-auto-theme
    
    set_theme() {
        if [[ "$1" == "dark" ]]; then
            new_gtk_theme="Yaru-dark"
        elif [[ "$1" == "light" ]]; then
            new_gtk_theme="Yaru-light"
        else
            echo "[!] Unsupported theme: $1"
            return
        fi
        
        # https://askubuntu.com/a/1234819/895417
        export DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS
        current_gtk_theme=$(gsettings get org.gnome.desktop.interface gtk-theme)
        # echo "[.] Currently using ${current_gtk_theme}"
        if [[ "${current_gtk_theme}" == "'${new_gtk_theme}'" ]]; then
            echo "[i] Already using gtk '${new_gtk_theme}' theme"
        else
            echo "[-] Setting gtk theme to ${new_gtk_theme}"
            gsettings set org.gnome.desktop.interface gtk-theme ${new_gtk_theme}
            echo "[✓] gtk theme changed to ${new_gtk_theme}"
        fi
    }
    
    # If script run without argument
    if [[ -z "$1" ]]; then
        currenttime=$(date +%H:%M)
        if [[ "$currenttime" > "17:00" || "$currenttime" < "09:00" ]]; then
            set_theme dark
        else
            set_theme light
        fi
    else
        set_theme $1
    fi
    

    Adicionamos @rebootpara que o script seja executado mesmo se o PC for desligado no momento do disparo do cron.

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve