1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GLib
import subprocess
class dateTimeSetter(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="dateTimeSetter")
self.set_border_width(10)
self.set_default_size(400, 300)
vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
self.add(vbox)
# Automatic time setting checkbox
automatic_time_label = Gtk.Label(label="Set the date, time, and timezone automatically?")
vbox.pack_start(automatic_time_label, False, False, 0)
self.automatic_time_check = Gtk.CheckButton(label="Yes")
self.automatic_time_check.connect("toggled", self.on_automatic_time_toggled)
vbox.pack_start(self.automatic_time_check, False, False, 0)
# Date and time entry fields
date_label = Gtk.Label(label="Enter the desired date (format: YYYY-MM-DD):")
vbox.pack_start(date_label, False, False, 0)
self.date_entry = Gtk.Entry()
vbox.pack_start(self.date_entry, False, False, 0)
time_label = Gtk.Label(label="Enter the desired time (format: HH:MM:SS):")
vbox.pack_start(time_label, False, False, 0)
self.time_entry = Gtk.Entry()
vbox.pack_start(self.time_entry, False, False, 0)
# Timezone entry field
timezone_label = Gtk.Label(label="Enter the desired timezone (e.g., America/New_York):")
vbox.pack_start(timezone_label, False, False, 0)
self.timezone_entry = Gtk.Entry()
vbox.pack_start(self.timezone_entry, False, False, 0)
# Apply button
apply_button = Gtk.Button(label="Apply")
apply_button.connect("clicked", self.on_apply_clicked)
vbox.pack_start(apply_button, False, False, 0)
def on_automatic_time_toggled(self, button):
if button.get_active():
self.date_entry.set_sensitive(False)
self.time_entry.set_sensitive(False)
self.timezone_entry.set_sensitive(False)
else:
self.date_entry.set_sensitive(True)
self.time_entry.set_sensitive(True)
self.timezone_entry.set_sensitive(True)
def on_apply_clicked(self, button):
automatic_time = self.automatic_time_check.get_active()
if automatic_time:
subprocess.run(["timedatectl", "set-ntp", "true"])
print("Automatic time synchronization using NTP initiated.")
automatic_timezone_output = subprocess.run(["curl", "--fail", "https://ipapi.co/timezone"], capture_output=True, text=True)
automatic_timezone = automatic_timezone_output.stdout.strip()
if automatic_timezone:
subprocess.run(["timedatectl", "set-timezone", automatic_timezone])
print("Automatic timezone setting complete.")
else:
print("Automatic timezone setting failed. Please set the timezone manually.")
else:
date_input = self.date_entry.get_text()
time_input = self.time_entry.get_text()
timezone_input = self.timezone_entry.get_text()
subprocess.run(["timedatectl", "set-ntp", "false"])
subprocess.run(["timedatectl", "set-time", f"{date_input} {time_input}"])
subprocess.run(["timedatectl", "set-timezone", timezone_input])
print("Manual date, time, and timezone setting complete.")
win = dateTimeSetter()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()
|