nixos-configs/modules/ags/config/ts/date.ts

99 lines
2.2 KiB
TypeScript
Raw Normal View History

2023-11-06 18:37:23 -05:00
import { Box, Calendar, Label } from 'resource:///com/github/Aylur/ags/widget.js';
2023-12-18 18:00:30 -05:00
const { DateTime } = imports.gi.GLib;
2023-09-11 21:10:00 -04:00
import PopupWindow from './misc/popup.ts';
2023-09-11 21:10:00 -04:00
const Divider = () => Box({
2023-12-18 18:00:30 -05:00
class_name: 'divider',
vertical: true,
2023-09-11 21:10:00 -04:00
});
const Time = () => Box({
2023-12-18 18:00:30 -05:00
class_name: 'timebox',
vertical: true,
2023-09-11 21:10:00 -04:00
2023-12-18 18:00:30 -05:00
children: [
Box({
2023-12-18 18:00:30 -05:00
class_name: 'time-container',
2023-11-06 18:37:23 -05:00
hpack: 'center',
vpack: 'center',
2023-09-11 21:10:00 -04:00
2023-12-18 18:00:30 -05:00
children: [
Label({
2023-12-18 18:00:30 -05:00
class_name: 'content',
label: 'hour',
setup: (self) => {
self.poll(1000, () => {
self.label = DateTime.new_now_local().format('%H');
});
},
}),
2023-09-11 21:10:00 -04:00
Divider(),
2023-09-11 21:10:00 -04:00
Label({
2023-12-18 18:00:30 -05:00
class_name: 'content',
label: 'minute',
setup: (self) => {
self.poll(1000, () => {
self.label = DateTime.new_now_local().format('%M');
});
},
}),
2023-09-11 21:10:00 -04:00
],
}),
2023-09-11 21:10:00 -04:00
Box({
2023-12-18 18:00:30 -05:00
class_name: 'date-container',
2023-11-06 18:37:23 -05:00
hpack: 'center',
2023-12-18 18:00:30 -05:00
child: Label({
2023-11-06 18:37:23 -05:00
css: 'font-size: 20px',
label: 'complete date',
2023-12-18 18:00:30 -05:00
setup: (self) => {
self.poll(1000, () => {
const time = DateTime.new_now_local();
self.label = time.format('%A, %B ') +
time.get_day_of_month() +
time.format(', %Y');
});
},
}),
}),
2023-09-11 21:10:00 -04:00
],
2023-09-11 21:10:00 -04:00
});
const CalendarWidget = () => Box({
2023-12-18 18:00:30 -05:00
class_name: 'cal-box',
2023-11-06 18:37:23 -05:00
child: Calendar({
2023-12-18 18:00:30 -05:00
show_day_names: true,
show_heading: true,
class_name: 'cal',
}),
2023-09-11 21:10:00 -04:00
});
const TOP_MARGIN = 6;
export default () => PopupWindow({
2023-12-18 18:00:30 -05:00
name: 'calendar',
anchor: ['top'],
margins: [TOP_MARGIN, 0, 0, 0],
2023-12-18 18:00:30 -05:00
child: Box({
2023-12-18 18:00:30 -05:00
class_name: 'date',
vertical: true,
2023-12-18 18:00:30 -05:00
children: [
Time(),
CalendarWidget(),
],
}),
2023-09-11 21:10:00 -04:00
});