import { Gtk } from "ags/gtk4"; import { Wireplumber } from "../../../modules/volume"; import { Battery } from "../../../modules/battery"; import { Notifications } from "../../../modules/notifications"; import { Windows } from "../../../windows"; import { Recording } from "../../../modules/recording"; import { Accessor, createBinding, createComputed, With } from "ags"; import { variableToBoolean } from "../../../modules/utils"; import { Bluetooth } from "../../../modules/bluetooth"; import GObject from "ags/gobject"; import AstalBluetooth from "gi://AstalBluetooth"; import AstalNetwork from "gi://AstalNetwork"; import AstalWp from "gi://AstalWp"; export const Status = () => ( openWins.includes("control-center") ? "open status" : "status" )} onClicked={() => { console.log("Status clicked!"); Windows.getDefault().toggle("control-center"); }} > !Wireplumber.getDefault().isMutedSink() && Wireplumber.getDefault().getSinkVolume() > 0 ? icon : "audio-volume-muted-symbolic" )} /> !Wireplumber.getDefault().isMutedSource() && Wireplumber.getDefault().getSourceVolume() > 0 ? icon : "microphone-sensitivity-muted-symbolic" )} /> ) as Gtk.Button; function VolumeStatus(props: { class?: string; endpoint: AstalWp.Endpoint; icon?: string | Accessor; }) { return ( { const conns: Map = new Map(); const controllerScroll = Gtk.EventControllerScroll.new( Gtk.EventControllerScrollFlags.VERTICAL | Gtk.EventControllerScrollFlags.KINETIC ); conns.set( controllerScroll, controllerScroll.connect("scroll", (_, _dx, dy) => { console.log`Scrolled! dx: ${_dx}; dy: ${dy}`; dy > 0 ? Wireplumber.getDefault().decreaseEndpointVolume( props.endpoint, 5 ) : Wireplumber.getDefault().increaseEndpointVolume( props.endpoint, 5 ); return true; }) ); conns.set( self, self.connect("destroy", () => conns.forEach((id, obj) => obj.disconnect(id)) ) ); }} > {props.icon && } `${Math.floor(vol * 100)}%` )} /> ) as Gtk.Box; } function BatteryStatus(props: { visible?: Accessor; class?: string; percentage?: Accessor; icon?: string | Accessor; }) { return ( {props.icon && } ) as Gtk.Box; } function StatusIcons() { return ( { return powered ? connected ? "bluetooth-active-symbolic" : "bluetooth-symbolic" : "bluetooth-disabled-symbolic"; } )} class={"bluetooth state"} visible={createBinding(Bluetooth.getDefault(), "adapter").as(Boolean)} /> primary !== AstalNetwork.Primary.UNKNOWN )} > {(primary: AstalNetwork.Primary) => { let device: AstalNetwork.Wifi | AstalNetwork.Wired; switch (primary) { case AstalNetwork.Primary.WIRED: device = AstalNetwork.get_default().wired; break; case AstalNetwork.Primary.WIFI: device = AstalNetwork.get_default().wifi; break; default: return ; } return ; }} dnd ? "minus-circle-filled-symbolic" : "preferences-system-notifications-symbolic" )} /> ); }