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

分享于 

4分钟阅读

ubuntu

  繁體

问题

如何在Ubuntu 16.10的菜单栏中显示当前时区的时间和日期?

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


介绍

时区设置在/etc/timezone文件中设置,

将下面的源代码保存为~/bin/timezone_indicator,运行chmod +x ~/bin/timezone_indicator使它可执行,并作为~/bin/timezone_indicator运行,

脚本源代码代码

也可以在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()





时间  显示  菜单  Unity  Indic  指示器