如何在菜单栏中显示当前时区附近的时间指示器?

如何在Ubuntu 16.10的菜单栏中显示时间和日期附近的当前时区? 这也应该与其他版本相关。 这是一个非常缺失的function,没有它你很容易混淆。 我想得到类似“Fri Dec 23 20:35:05(欧洲/基辅)”的内容。

能够任意定制该字符串也很高兴,比如“星期五,2016年12月23日 – 20:35:05(欧洲/基辅)”。 谢谢!

更新

请参阅如何更改日期格式? 一个人可以做到

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)'"

它将系统时间和日期指示器更改为

星期五,23.12.2016 – 20:35:05(EET)

正如你所看到的,除了时区名称之外,现在一切都很好。 我在时间和日期设置>时钟>选择位置设置我的时区。 然后,如果我在终端写timedatectl我得到

时区:欧洲/基辅(EET,+ 0200)

因此,时区名称有几个选项,似乎是strftime函数决定使用哪一个,而且只需要用格式字符串提供它就无法获得时区名称“Europe / Kiev”(只有“EET”或“+0200”)。

那么有没有办法选择时区的名称格式?

也许使用Serg的脚本我可以将首选名称放在系统指示器旁边?

谢谢!

介绍

下面显示的指标显示顶部面板中的当前时区。 它的工作方式非常简单。 时区设置在/etc/timezone文件中设置。 所有指示器都读取该文件,并在必要时更新显示的信息。

将源代码保存为~/bin/timezone_indicator ,运行chmod +x ~/bin/timezone_indicator使其可执行,并以~/bin/timezone_indicator 。 如果您希望每次自动登录时都启动它,请打开“启动应用程序”菜单,然后将指示符的完整路径添加为其中一个命令。

在此处输入图像描述

随意测试更改时区,如https://askubuntu.com/a/524362/295286所示

脚本来源

也可以在GitHub上找到 :

 #!/usr/bin/env python # -*- coding: utf-8 -*- # # Author: Serg Kolo , <1047481448@qq.com> # 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() 

如果您可以通过终端命令以您满意的格式获取时区,则可以安装Sysmonitor Indicator并添加该命令(作为脚本)。

您可以更进一步并禁用默认时钟(可以选择隐藏它)。 然后,您的脚本/命令将根据您的喜好显示日期/时间/时区。