This commit is contained in:
xsghetti 2024-04-11 00:21:35 -04:00
parent 1f8cb3c145
commit 610604e80f
253 changed files with 27055 additions and 44 deletions

View file

@ -0,0 +1,156 @@
import GLib from 'gi://GLib'
const time = Widget.Label({
name: 'lockscreen-time',
label: GLib.DateTime.new_now_local().format("%H:%M"),
setup: (self) => self.poll(1000, label => {
label.label = GLib.DateTime.new_now_local().format("%H:%M");
}),
justification: 'left',
hexpand: true,
hpack: 'start',
})
const date = Widget.Label({
name: 'lockscreen-date',
label: GLib.DateTime.new_now_local().format("%e, %B %A"),
setup: (self) => self.poll(60000, label => {
label.label = GLib.DateTime.new_now_local().format("%e, %B %A");
}),
justification: 'left',
})
const network = await Service.import('network')
const battery = await Service.import('battery')
const Lockscreen = () => {
const WifiIndicator = () => Widget.Box({
child: Widget.Icon({
icon: network.wifi.bind('icon_name'),
}),
})
const WiredIndicator = () => Widget.Icon({
icon: network.wired.bind('icon_name'),
})
const batPercent = Widget.Revealer({
revealChild: false,
transitionDuration: 600,
transition: 'slide_left',
child: Widget.Label({
name: "lockscreen-revealer",
label: battery.bind('percent').transform(p => "" + p + "%"),
}),
})
const batInfo = Widget.Box({
"class-name": 'lockscreen-smolbox',
hexpand: false,
hpack: 'end',
children: [
batPercent,
Widget.EventBox({
child: Widget.Box({
child: Widget.Label({
label: battery.bind('percent').transform(p => ['', '', '', '', ''][Math.floor(p / 20)]),
class_name: 'lockscreen-battery',
hexpand: false,
setup: icon => icon.hook(battery, () => {
icon.toggleClassName('lockscreen-charging', battery.charging);
icon.toggleClassName('lockscreen-charged', battery.charged);
icon.toggleClassName('lockscreen-low', battery.percent < 30);
}),
}),
}),
onHover: () => {
batPercent.reveal_child = true;
print("revealed");
},
onHoverLost: () => {
batPercent.reveal_child = false;
}
})
]
})
const networkName = Widget.Revealer({
revealChild: false,
transitionDuration: 600,
transition: 'slide_left',
child: Widget.Label({
name: "lockscreen-revealer",
label: network.wifi.bind('ssid')
.as(ssid => ssid || 'Unknown'),
}),
})
const networkStatus = Widget.Box({
class_name: "lockscreen-smolbox",
hexpand: false,
hpack: 'end',
children: [
networkName,
Widget.EventBox({
child: Widget.Stack({
class_name: "lockscreen-network",
children: {
'wifi': WifiIndicator(),
'wired': WiredIndicator()
},
shown: network.bind('primary').transform(p => p || 'wifi'),
}),
onHover: () => {
networkName.reveal_child = true;
},
onHoverLost: () => {
networkName.reveal_child = false;
}
})
]
})
const boxRight = Widget.Box({
homogeneous: false,
name: "lockscreen-boxRight",
vertical: true,
hexpand: false,
children: [networkStatus, batInfo],
vpack: 'end',
hpack: 'end',
})
const boxLeft = Widget.Box({
homogeneous: false,
vertical: true,
children: [time, date],
vpack: 'end',
hpack: 'start',
})
return Widget.Box({
children: [boxLeft, boxRight],
vertical: false,
})
}
function randomImage() {
const a = Utils.exec(`bash -c "ls ${App.configDir + '/modules/lock/images/'} | shuf -n 1"`);
const b = `background-image: url("${App.configDir + '/modules/lock/images/' + a}");`;
print(b);
return b;
}
export default () => Widget.Window({
name: 'lockscreen',
css: randomImage(),
anchor: ['top', 'left', 'right', 'bottom'],
exclusivity: 'normal',
keymode: 'on-demand',
layer: 'top',
visible: false,
monitor: 0,
child: Lockscreen(),
})