1707912926291true1709331752476815true11Clock20950<StringArray sr=""/>[Ljava.lang.String;600001707386129905true170738615270282241Battery Charging101707386157665true170786395611282441Battery Discharging10true1707389508703true170786591142182725RAM info20950<StringArray sr=""/>[Ljava.lang.String;300001709331623536true170933164218983011Clock Odd1709331669130true170933168020783111Clock Even1709331723825true170933174801083211Clock Midnight1709331839212true170933195097783341Battery Level Lockscreen2081707073594603true170786398866483634Headphones Plugged301707073602421true170786399751683735Headset Plugged301707073664697true170786400557184039Headset Unplugged30true1707073778135true170745202062084241Battery Level2031707073194944SystemUI Icons36,27,32,24,33,30,31,42,40,37,15,2241,25,34,29,10,11,35,38,39net.lonelytransistor.notificationinsystem.ui.ApkSelectorActivitynet.lonelytransistor.notificationinsystem1707183315548170936763074510Battery Circle Dismiss100779RAM779Battery Level0779Battery Level+RAM1707910836787170939826238011Clock100129var canvas_image=(function(h,p,t,d,dd){
const enc=[0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F];
function drawSegment(c,x,y,w,h,d,hz) {
if (hz) {
x+=d;
w-=d*2;
c.moveTo(x,y-h/2);
c.lineTo(x+h/2,y-h);
c.lineTo(x+w-h/2,y-h);
c.lineTo(x+w,y-h/2);
c.lineTo(x+w-h/2,y);
c.lineTo(x+h/2,y);
} else {
y+=d;
h-=d*2;
c.moveTo(x+w/2,y);
c.lineTo(x+w,y+w/2);
c.lineTo(x+w,y+h-w/2);
c.lineTo(x+w/2,y+h);
c.lineTo(x,y+h-w/2);
c.lineTo(x,y+w/2);
}
c.fill();
}
function drawSegments(c,x,y,w,h,t,d,n) {
if (n&0b1000000) drawSegment(c,x+t/2,y+h/2+t/2,w-t,t,d,1);
if (n&0b0000010) drawSegment(c,x+w-t,y+t/2,t,h/2-t/2,d);
if (n&0b0000100) drawSegment(c,x+w-t,y+h/2,t,h/2-t/2,d);
if (n&0b0001000) drawSegment(c,x+t/2,y+h,w-t,t,1,d);
if (n&0b0100000) drawSegment(c,x,y+t/2,t,h/2-t/2,d);
if (n&0b0010000) drawSegment(c,x,y+h/2,t,h/2-t/2,d);
if (n&0b0000001) drawSegment(c,x+t/2,y+t,w-t,t,1,d);
}
function drawTime(c,x,y,h,t,d,dd,p) {
var tm=new Date().toLocaleTimeString('en-US', {hour12: false, hour: "numeric", minute: "numeric"});
var x=0; var w=h/2;
if (tm[0]=='2' && tm[1]=='4')
tm="00:"+tm[3]+tm[4];
if (tm[0]!='0') {
drawSegments(c,0,0,w,h,t,d,enc[tm[0]*1]);
}
x+=w+dd;
drawSegments(c,x,0,w,h,t,d,enc[tm[1]*1]); x+=w+dd*2;
w=h/2-h*(p-0.5); h-=h*(p-0.5)*2;
drawSegments(c,x,0,w,h,t,d,enc[tm[3]*1]); x+=w+dd;
drawSegments(c,x,0,w,h,t,d,enc[tm[4]*1]); x+=w+dd;
return x;
}
var cv=document.createElement("canvas");
cv.width=h*(3+4*dd-2*p);
cv.height=h;
var c=cv.getContext("2d");
c.fillStyle="#000";
drawTime(c,0,0,h,h*t,h*d,h*dd,p);
return cv.toDataURL();
})(47*2,0.65,0.09,0.03,0.06);523ClockSystemUI Clock%canvas_image1707388501859170941353044225RAM Info100123free | tail -n1 | awk '{printf "%.0f", ($3*100/$2)}'%ram129var canvas_image = (function(ram, w, h){
var c = document.createElement('canvas');
c.width = w;
c.height = h;
var ctx = c.getContext('2d');
ctx.fillStyle = "grey";
ctx.fillRect(0,0,w,h);
ctx.fillStyle = "white";
ctx.fillRect(0,100-h*ram/100,w,100);
return c.toDataURL();
})(local("ram"), 10, 100);523RAMSystemUI Bars%canvas_image1707473641068170936767886029RAM Info Dismiss100779RAM1707073488361170936797247934Headset Mic100523HeadsetSystemUI Statusmw_hardware_headset_m1707073529570170936797738535Headset NoMic100523HeadsetSystemUI Statusmw_hardware_headset1707183315548170936763379938Clock Dismiss100779Clock1707073636342170936764125239Headset Dismiss100779Headset1707073721685170946378535441Battery Circle100424<StringArray sr=""><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0>%bi_level
01. Level
The current battery level, from 0 to scale</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES0><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1>%bi_scale
02. Scale
The maximum battery level</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES1><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2>%bi_status
03. Status
1=Unknown; 2=Charging; 3=Discharging; 4=Not Charging; 5=Full;</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES2><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3>%bi_status_string
04. Status Description
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES3><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4>%bi_temperature
05. Temperature
Current battery temperature in degree Celsius. May always show as 0 on some devices.</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES4><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5>%bi_power_source
06. Power Source
1=AC; 2=USB; 4=Wireless; 8=Dock;</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES5><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES6>%bi_power_source_string
07. Power Source Description
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES6><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES7>%bi_health
08. Battery Health
1=Unknown; 2=Good; 3=Overheat; 4=Dead; 5=Over Voltage; 6=Failure;</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES7><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES8>%bi_time_until_charged
08. Time Until Charged
Approximate time (MS) remaining until the battery is fully charged or -1 if not possible to get</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES8><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES9>%bi_health_string
09. Battery Health Description
</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES9><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES10>%bi_battery_low
10. Battery Low
true if device battery level is low (corresponds to the Low battery warning system dialog), false otherwise</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES10><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES11>%bi_voltage
11. Voltage
Current battery voltage in millivolts</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES11><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES12>%bi_present
12. Present
true if device has a battery, false otherwise</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES12><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES13>%bi_technology
13. Technology
Description of the technology of the current battery</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES13><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES14>%bi_capacity_percentage
14. Capacity Percentage
Remaining battery capacity percentage</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES14><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES15>%bi_capacity
15. Capacity
Battery capacity in microampere-hours</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES15><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES16>%bi_current_average
16. Average Current
Average battery current in microamperes. Can be positive (charging) or negative (discharging)</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES16><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES17>%bi_current_now
17. Instantaneous Current
Instantaneous battery current in microamperes. Can be positive (charging) or negative (discharging)</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES17><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES18>%bi_energy_counter
18. Energy Counter
Battery remaining energy in nanowatt-hours</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES18><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES19>%bi_adaptive_charging_enabled
19. Adaptive Charging Enabled
true if adaptive charging is enabled on your device, false if not. May not be correct on all devices.</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES19><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES20>%bi_manufacturing_date
19. Battery Manufacturing Date
Seconds Since Epoch</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES20><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES21>%bi_adaptive_battery_management_enabled
20. Adaptive Battery Enabled
true if the "Adaptive Battery" setting is enabled on your phone, false if not. May not be correct on all devices.</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES21><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES22>%bi_first_usage_date
20. Battery First Usage Date
Seconds Since Epoch</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES22><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES23>%bi_charging_policy
21. Battery Charging Policy
1=Default; 2=Adaptive Static; 3=Adaptive Dynamic; 4=Adaptive Long Life;</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES23><_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES24>%bi_state_of_health
22. Battery State of Health
Percentage representing the measured battery state of health (remaining estimated full charge capacity relative to the rated capacity in %)</_array_net.dinglisch.android.tasker.RELEVANT_VARIABLES24></StringArray>[Ljava.lang.String;129var canvas_image = (function(batt, charging, low, r){
var c = document.createElement('canvas');
c.width = r;
c.height = r;
var ctx = c.getContext('2d');
ctx.fillStyle = "white";
ctx.setLineDash([r/16,r/24]);
if (charging) {
ctx.strokeStyle = "lightgreen";
ctx.setLineDash([]);
} else if (low) {
ctx.strokeStyle = "tomato";
} else {
ctx.strokeStyle = "lightsteelblue";
}
ctx.lineWidth = r/8;
ctx.beginPath();
ctx.arc(r/2, r/2, r/2-ctx.lineWidth/2, -0.5*Math.PI, batt*2*Math.PI/100-0.5*Math.PI);
ctx.stroke();
ctx.closePath();
ctx.globalAlpha = 0.15;
ctx.beginPath();
ctx.arc(r/2, r/2, r/2-ctx.lineWidth/2, 0, 2*Math.PI);
ctx.stroke();
if (low && !charging) {
ctx.globalAlpha = 0.1;
ctx.fill();
}
ctx.closePath();
ctx.globalAlpha = 1.0;
ctx.fillStyle = "white";
ctx.font = "bold " + r*0.6 + "px monospace";
var meas = ctx.measureText(batt);
ctx.fillText(batt < 100 ? batt : "", (r-meas.width)/2, 0.725*r);
if (low) {
ctx.fillText("!", r-20, 0.725*r);
}
return c.toDataURL();
})(global("BATT"), local("bi_status")==2, global("BATT") <= 15, 47*2);523Battery Level0SystemUI Battery%canvas_image