Como mostrar o indicador do fuso horário atual perto do tempo na barra de menu?

3

Como mostrar o fuso horário atual próximo a hora e data na barra de menus do Ubuntu 16.10? Isso deve ser relevante para as outras versões também. É um recurso muito ausente, você pode facilmente ser confundido sem ele. Eu gostaria de obter algo como "Sex Dec 23 20:35:05 (Europa / Kiev)".

Além disso, seria bom poder personalizar essa cadeia arbitrariamente, diga "sexta-feira, 23.12.2016 - 20:35:05 (Europa / Kiev)". Obrigada!

Atualizar

Referindo-se a Como alterar o formato da data? pode-se fazer

gsettings set com.canonical.indicator.datetime time-format "'custom'"

gsettings set com.canonical.indicator.datetime custom-time-format "'%a, %d.%m.%y - %H:%M:%S (%Z)'"

que altera o indicador de data e hora do sistema para

Friday, 23.12.2016 - 20:35:05 (EET)

Como você pode ver, está tudo bem agora, além do nome do fuso horário. Eu defino meus fusos horários em Tempo & Configurações de data > Relógio > Escolha os locais . Então, se eu escrever timedatectl no terminal eu recebo

Time zone: Europe/Kiev (EET, +0200)

Portanto, existem várias opções para um nome de fuso horário e parece que é a função strftime que decide qual delas usar e que apenas alimentando-a com uma string de formato não há como obter um nome de fuso horário "Europa / Kiev" (apenas "EET" ou "+0200").

Existem formas de escolher o formato do nome de um fuso horário?

Talvez usando o script do Serg eu possa colocar o nome preferido ao lado do indicador do sistema?

Obrigado!

    
por vstepaniuk 23.12.2016 / 19:45

2 respostas

5

Introdução

O indicador apresentado abaixo exibe o fuso horário atual no painel superior. A maneira como funciona é bastante simples. As configurações de fuso horário são definidas no arquivo /etc/timezone . Tudo o que o indicador faz, é ler esse arquivo e atualizar as informações exibidas, se necessário.

Salve o código-fonte abaixo como ~/bin/timezone_indicator , execute chmod +x ~/bin/timezone_indicator para torná-lo executável e execute como ~/bin/timezone_indicator . Se você deseja que ele comece cada vez que você se autenticar automaticamente, abra o menu Startup Applications, e adicione o caminho completo para o indicador como um dos comandos lá.

Sinta-seàvontadeparatestaraalteraçãodofusohorário,conformemostradono link

Origem do script

Também disponível em GitHub :

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#
# Author: Serg Kolo , <[email protected]>
# Date: December 23, 2016
# Purpose: Indicator that displays timezone
# Written for:  https://askubuntu.com/q/863952/295286
# Tested on: Ubuntu 16.04 LTS
#
# Licensed under The MIT License (MIT).
# See included LICENSE file or the notice below.
#
# Copyright © 2016 Sergiy Kolodyazhnyy
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
import gi
gi.require_version('AppIndicator3', '0.1')
from gi.repository import GLib as glib
from gi.repository import AppIndicator3 as appindicator
from gi.repository import Gtk as gtk
from time import gmtime
import os

class TimezoneIndicator(object):

    def __init__(self):
        self.app = appindicator.Indicator.new(
            'timezone-ndicator', "",
            appindicator.IndicatorCategory.APPLICATION_STATUS)

        self.app.set_status(appindicator.IndicatorStatus.ACTIVE)
        self.app.set_icon('locale')

        self.app_menu = gtk.Menu()
        self.quit_app = gtk.MenuItem('Quit')
        self.quit_app.connect('activate', self.quit)
        self.quit_app.show()

        self.cache = None

        self.app_menu.append(self.quit_app)
        self.app.set_menu(self.app_menu)

        self.update_label()

    def run(self):
        gtk.main()

    def quit(self, data=None):
        gtk.main_quit()

    def update_label(self):
        timezone = None
        with open('/etc/timezone') as f: 
             timezone = f.read().strip()
        if timezone != self.cache:
             self.app.set_label(timezone,"")
        self.cache = timezone
        glib.timeout_add_seconds(1, self.callback)

    def callback(self):
        self.update_label()

def main():

    indicator = TimezoneIndicator()
    indicator.run()

if __name__ == '__main__':
    main()
    
por Sergiy Kolodyazhnyy 23.12.2016 / 21:29
1

Se você puder obter o fuso horário em um formato que esteja satisfeito com um comando de terminal, poderá instalar o Sysmonitor Indicator e adicione esse comando (como um script).

Você pode ir mais longe e desabilitar o relógio padrão (há uma opção para ocultá-lo). Seu script / comando exibiria a data / hora / horário ao seu gosto.

    
por Bernmeister 28.12.2016 / 23:57