all repos — quickshell @ 03f6a101be8835bc23817106d266a32a46413aef

A desert-witch desktop shell

bar/modules/Battery.qml (view raw)

 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
//Battery.qml
import QtQuick
import Quickshell
import QtQuick.Layouts
import Quickshell.Services.UPower
import "../.."
import "../classes" as Class


Repeater {
  model: UPower.devices.values.filter(d=>d.model)
  Class.RightRowLayout {
    property var lvl: Math.round(modelData.percentage*100)
    property var charge_state: UPowerDeviceState.toString(modelData.state)
    property var device_type: UPowerDeviceType.toString(modelData.type)
    Class.BottombarText {
      id: battery_level_indicator
      text: lvl+"%"
      font.family: font_jetbrains.name
      color:
        (charge_state == "Charging")
        ? Resources.palette.saffron
        : (lvl < 20)
        ? Resources.palette.scarlet
        : Resources.palette.fg
    }
    Class.BottombarIcon {
      id: battery_device_icon
      text: modelData.isLaptopBattery
            ? Icons.devices.battery
            : {
              "Headphones": Icons.devices.headphones,
              "Headset": Icons.devices.headphones,
              "Gaming Input": Icons.devices.controller,
              "Keyboard": Icons.devices.keyboard,
              "Mouse": Icons.devices.mouse,
              "Unknown": Icons.devices.unknown,
              "Speakers": Icons.devices.speaker,
              "Printer": Icons.devices.printer,
              "Camera": Icons.devices.camera,
              "Phone": Icons.devices.phone,
              }[device_type]
            ?? modelData.model
      font.pixelSize:
        (device_type == "Gaming Input")
        ? 14
        : 10
      color:
        modelData.model == "Jupiter of the Monkey"
        ? "#897bc7"
        : lvl < 20
        ? Resources.palette.scarlet
        : {
            "Charging": Resources.palette.saffron,
            "Discharging": Resources.palette.orange,
            "FullyCharged": Resources.palette.cyan,
            "Empty": Resources.palette.scarlet,
          }[charge_state] ?? Resources.palette.orange
    }
    Class.BotSep{}
  }
}