feat(ags-v3): desktop adaptation — ultrawide scaling, brain power panel, system stats
- Scaling 16px base pour ultrawide 3440x1440 - Bar: CPU/RAM/GPU visible, media single player (skip playerctld), network tooltip LAN/WAN IPv4 - Volume: class module pour sizing cohérent - Battery: désactivé (PC fixe) - Clock: tooltip calendrier + uptime - BrainPower: panel enrichi (focus, session, intentions, todos, repos git, derniers commits) - App: BrainPower sur moniteur principal uniquement - Heartbeat: Layer.TOP pour compatibilité COSMIC
This commit is contained in:
@@ -1,5 +1,16 @@
|
||||
import AstalNetwork from "gi://AstalNetwork"
|
||||
import { createBinding } from "ags"
|
||||
import { exec } from "ags/process"
|
||||
|
||||
function getIPs(): string {
|
||||
try {
|
||||
const lan = exec("bash -c \"hostname -I | awk '{print $1}'\"").trim()
|
||||
const wan = exec("bash -c \"curl -4 -s --max-time 2 ifconfig.me\"").trim()
|
||||
return `LAN: ${lan || "?"}\nWAN: ${wan || "?"}`
|
||||
} catch {
|
||||
return "IPs unavailable"
|
||||
}
|
||||
}
|
||||
|
||||
export default function Network() {
|
||||
const net = AstalNetwork.get_default()
|
||||
@@ -17,15 +28,23 @@ export default function Network() {
|
||||
else if (strength > 20) icon = ""
|
||||
return `${icon} ${ssid}`
|
||||
}
|
||||
if (type === AstalNetwork.Primary.WIRED) return " eth"
|
||||
if (type === AstalNetwork.Primary.WIRED) return " wired"
|
||||
return " offline"
|
||||
})
|
||||
|
||||
const cls = createBinding(net, "primary")((type: AstalNetwork.Primary) => {
|
||||
if (type === AstalNetwork.Primary.WIFI) return "network wifi"
|
||||
if (type === AstalNetwork.Primary.WIRED) return "network wired"
|
||||
return "network disconnected"
|
||||
if (type === AstalNetwork.Primary.WIFI) return "network module wifi"
|
||||
if (type === AstalNetwork.Primary.WIRED) return "network module wired"
|
||||
return "network module disconnected"
|
||||
})
|
||||
|
||||
return <label class={cls} label={text} />
|
||||
return (
|
||||
<eventbox
|
||||
onHover={(self) => {
|
||||
self.tooltipText = getIPs()
|
||||
}}
|
||||
>
|
||||
<label class={cls} label={text} hasTooltip />
|
||||
</eventbox>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user