Merge branch 'thyttan-anotherconf'

master
Gordon Williams 2025-02-04 12:25:59 +00:00
commit 0208268bf2
20 changed files with 128 additions and 6 deletions

View File

@ -270,6 +270,7 @@ and which gives information about the app for the Launcher.
// 'notify' - provides 'notify' library for showing notifications
// 'locale' - provides 'locale' library for language-specific date/distance/etc
// (a version of 'locale' is included in the firmware)
// 'defaultconfig' - a set of apps that will can be installed and will wipe out all previously installed apps
"tags": "", // comma separated tag list for searching
// common types are:
// 'clock' - it's a clock

View File

@ -0,0 +1,6 @@
0.01: New App!
0.02: update to my current preferences.
0.03: update app list
0.04: change app name "mysetup" -> "anotherconf"
0.05: remove apps that are not "core" to the experience.
0.06: change name "anotherconf" -> "confthyttan"

View File

@ -0,0 +1,31 @@
# Thyttan's Default Config
A different default set of apps and configurations. Brings many quality of life improvements. Opinionated based on the creators taste. Read more below before installing.
## Usage
Before installing do this:
1. Backup your current setup (via the "More..." tab of the App Loader) so you can restore it later if you want.
2. Install this app (you'll be prompted about all data being removed from your Bangle)
3. Try it out, switch out apps to your favorites and tweak to your liking!
## Features
There will not be a trace of a "Thyttan's Default Config" app on your watch after installation. Only the apps it installed and the configurations.
On the clock face:
- Swipe right on the screen to open the launcher (Desktop Launcher) - or press the hardware button.
- Swipe left to open a flashlight app.
- Swipe up to open the messages.
- Swipe down for quick access to music and podcast controls.
- (Do a subsequent left or right swipe to enter the listed apps)
- (Check out the "Quick Launch" app readme for more info)
## Requests
Add to the espruino/BangleApps issue tracker and mention @thyttan for bug reports and suggestions.
## Creator
thyttan

BIN
apps/confthyttan/app.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1 @@
{"mode":0,"apps":[{"name":"Run+","src":"runplus.app.js","files":"runplus.info,runplus.app.js,runplus.img,runplus.settings.js,runplus_karvonen"}],"timeout":10}

View File

@ -0,0 +1 @@
{"mode":0,"apps":[{"name":"Calculator","src":"calculator.app.js"},{"name":"SleepLog","src":"sleeplog.app.js"},{"name":"Messages","sortorder":-9,"src":"messagegui.app.js"},{"name":"Messages","sortorder":-9,"src":"messagegui.app.js","files":"messagegui.info,messagegui,messagegui.app.js,messagegui.new.js,messagegui.boot.js,messagegui.img"}],"standardNumSwipeHandlers":5,"standardNumDragHandlers":1}

View File

@ -0,0 +1 @@
{"showClocks":true,"showLaunchers":true,"direct":false,"swipeExit":false,"timeOut":"15s"}

View File

@ -0,0 +1 @@
{"buzzOnCharge":true,"monthFirst":true,"twentyFourH":true,"showAmPm":false,"showSeconds":true,"showWeather":false,"stepGoal":10000,"stepBar":true,"weekBar":true,"mondayFirst":true,"dayBar":true,"redrawOnStep":false}

View File

@ -0,0 +1 @@
{useAppHistory:true,disregardQuicklaunch:true,hideLoading:true}

View File

@ -0,0 +1 @@
{"colors":"011","image":"heart","touchOn":"always","oversize":7,"dragDelay":500,"minValue":0.01,"tapToLock":false,"unlockSide":"","tapSide":"","tapOn":"always","tOut":2000,"minFlash":0.2,"isOn":true,"value":0.9109}

View File

@ -0,0 +1 @@
{vibrateTimeout:10,vibrate:":",vibrateCalls:":::",flash:false}

View File

@ -0,0 +1,68 @@
{ "id": "confthyttan",
"name": "Thyttan's Default Config",
"version":"0.06",
"description": "A different default set of apps and configurations. Brings many quality of life improvements. Opinionated based on the creators taste. Read more below before installing.",
"icon": "app.png",
"type": "defaultconfig",
"tags": "system,configuration,config,anotherconfig,thyttan",
"supports" : ["BANGLEJS2"],
"readme": "README.md",
"dependencies" : {
"sched":"app",
"kbmulti":"app",
"messageicons":"app",
"widmsggrid":"app",
"msgwakefup":"app",
"delaylock":"app",
"notify":"app",
"health":"app",
"widminbate":"app",
"podadrem":"app",
"spotrem":"app",
"android":"app",
"widanclk":"app",
"backswipe":"app",
"torch":"app",
"calculator":"app",
"widbt_notify":"app",
"smpltmr":"app",
"clkinfostopw":"app",
"runplus":"app",
"dtlaunch":"app",
"quicklaunch":"app",
"kineticscroll":"app",
"alarm":"app",
"recorder":"app",
"agenda":"app",
"edgeclk":"app",
"autoreset":"app",
"chargent":"app",
"setting":"app",
"fastload":"app",
"boot":"app",
"ateatimer":"app",
"drained":"app"
},
"storage": [
{"name":"backswipe.json",
"url":"backswipe.json"},
{"name":"autoreset.json",
"url":"autoreset.json"},
{"name":"dtlaunch.json",
"url":"dtlaunch.json"},
{"name":"fastload.json",
"url":"fastload.json"},
{"name":"quicklaunch.json",
"url":"quicklaunch.json"},
{"name":"messages.settings.json",
"url":"messages.settings.json"},
{"name":"widbt_notify.json",
"url":"widbt_notify.json"},
{"name":"recorder.json",
"url":"recorder.json"},
{"name":"edgeclk.settings.json",
"url":"edgeclk.settings.json"},
{"name":"setting.json",
"url":"setting.json"}
]
}

View File

@ -0,0 +1 @@
{lapp:{name:"Show Launcher",sortorder:-12,src:"no source"},rapp:{name:"torch",type:"app",sortorder:-11,src:"torch.app.js"},uapp:{name:"Messages",sortorder:-9,src:"messagegui.app.js"},dapp:{name:"Extension",type:"app",sortorder:-11,src:"quicklaunch.app.js"},tapp:{name:""},dlapp:{name:"PA Remote",src:"podadrem.app.js"},drapp:{name:"Remote for Spotify",src:"spotrem.app.js"},duapp:{name:""},ddapp:{name:"Extension",type:"app",sortorder:-11,src:"quicklaunch.app.js"},dtapp:{name:""},ddlapp:{name:"Alarms",src:"alarm.app.js"},ddrapp:{name:"Run+",src:"runplus.app.js"},dduapp:{name:""},dddapp:{name:"Agenda",src:"agenda.app.js"},ddtapp:{name:""},rlapp:{name:""},rrapp:{name:""},ruapp:{name:""},rdapp:{name:""},rtapp:{name:""},trace:"dr"}

View File

@ -0,0 +1 @@
{recording:false,period:10,record:["gps","hrm","steps"],file:"recorder.log0.csv"}

View File

@ -0,0 +1 @@
{ble:true,blerepl:true,log:false,quiet:0,timeout:10,vibrate:true,beep:true,timezone:2,HID:false,clock:"edgeclk.app.js","12hour":false,firstDayOfWeek:1,brightness:0.5,options:{wakeOnBTN1:true,wakeOnBTN2:true,wakeOnBTN3:true,wakeOnFaceUp:false,wakeOnTouch:false,wakeOnTwist:false,twistThreshold:819.2,twistMaxY:-800,twistTimeout:1000,btnLoadTimeout:700},theme:{fg:65535,bg:0,fg2:65535,bg2:8,fgH:65535,bgH:31,dark:true},clockHasWidgets:true,launcher:"dtlaunch.app.js",touch:{x1:6,y1:14,x2:197,y2:178}}

View File

@ -0,0 +1 @@
{showWidget:true,buzzOnConnect:false,buzzOnLoss:false,hideConnected:false,showMessage:false,nextBuzz:30000}

View File

@ -15,6 +15,6 @@
{"name":"messagesoverlay.settings.js","url":"settings.js"},
{"name":"messagesoverlay.default.json","url":"default.json"}
],
"data": [{"name":"bthrm.json"}],
"data":[{"name":"messagesoverlay.json"}],
"screenshots": [{"url":"screen_call.png"} ,{"url":"screen_message.png"} ]
}

View File

@ -169,7 +169,7 @@ const APP_KEYS = [
const STORAGE_KEYS = ['name', 'url', 'content', 'evaluate', 'noOverwite', 'supports', 'noOverwrite'];
const DATA_KEYS = ['name', 'wildcard', 'storageFile', 'url', 'content', 'evaluate'];
const SUPPORTS_DEVICES = ["BANGLEJS","BANGLEJS2"]; // device IDs allowed for 'supports'
const METADATA_TYPES = ["app","clock","widget","bootloader","RAM","launch","scheduler","notify","locale","settings","textinput","module","clkinfo"]; // values allowed for "type" field
const METADATA_TYPES = ["app","clock","widget","bootloader","RAM","launch","scheduler","notify","locale","settings","textinput","module","clkinfo","defaultconfig"]; // values allowed for "type" field - listed in README.md
const FORBIDDEN_FILE_NAME_CHARS = /[,;]/; // used as separators in appid.info
const VALID_DUPLICATES = [ '.tfmodel', '.tfnames' ];
const GRANDFATHERED_ICONS = ["s7clk", "snek", "astral", "alpinenav", "slomoclock", "arrow", "pebble", "rebble"];
@ -207,6 +207,10 @@ apps.forEach((app,appIdx) => {
if (!app.name) ERROR(`App ${app.id} has no name`, {file:metadataFile});
var isApp = !app.type || app.type=="app";
var appTags = app.tags ? app.tags.split(",") : [];
/*if (appTags.some(tag => tag!=tag.trim()))
WARN(`App ${app.id} 'tag' list contains whitespace ("${app.tags}")`, {file:metadataFile});
if (appTags.some(tag => tag!=tag.toLowerCase()))
WARN(`App ${app.id} 'tag' list contains uppercase ("${app.tags}")`, {file:metadataFile});*/
if (app.name.length>20 && !app.shortName && isApp) ERROR(`App ${app.id} has a long name, but no shortName`, {file:metadataFile});
if (app.type && !METADATA_TYPES.includes(app.type))
ERROR(`App ${app.id} 'type' is one one of `+METADATA_TYPES, {file:metadataFile});
@ -296,6 +300,7 @@ apps.forEach((app,appIdx) => {
if (INTERNAL_FILES_IN_APP_TYPE[app.type].includes(file.name))
fileInternal = true;
}
if (!app.type=="defaultconfig")
allFiles.push({app: app.id, file: file.name, internal:fileInternal});
if (file.url) if (!fs.existsSync(appDir+file.url)) ERROR(`App ${app.id} file ${file.url} doesn't exist`, {file:metadataFile});
if (!file.url && !file.content && !app.custom) ERROR(`App ${app.id} file ${file.name} has no contents`, {file:metadataFile});
@ -494,7 +499,7 @@ while(fileA=allFiles.pop()) {
if (isGlob(nameA)||isGlob(nameB))
ERROR(`App ${fileB.app} ${typeB} file ${nameB} matches app ${fileA.app} ${typeB} file ${nameA}`);
else if (fileA.app != fileB.app && (!fileA.internal) && (!fileB.internal))
WARN(`App ${fileB.app} ${typeB} file ${nameB} is also listed as ${typeA} file for app ${fileA.app}`);
WARN(`App ${fileB.app} ${typeB} file ${nameB} is also listed as ${typeA} file for app ${fileA.app}`, {file:APPSDIR_RELATIVE+fileB.app+"/metadata.json"});
}
})
}

2
core

@ -1 +1 @@
Subproject commit bf08b484830ef4e811faf67ec663ebf839b5d09b
Subproject commit 3ec8e289a26a545d0d0c50f6945978584fb3d7f8

View File

@ -14,4 +14,4 @@ type AppInfo = {
type AppType = "app" | "clock" | "widget" | "module" | "bootloader" |
"settings" | "clkinfo" | "RAM" | "launch" | "textinput" | "scheduler" |
"notify" | "locale";
"notify" | "locale" | "defaultconfig";