{"id":21106837,"url":"https://github.com/magisk-modules-repo/djs","last_synced_at":"2025-09-02T17:08:05.491Z","repository":{"id":52283374,"uuid":"173022219","full_name":"Magisk-Modules-Repo/djs","owner":"Magisk-Modules-Repo","description":"Daily Job Scheduler","archived":false,"fork":false,"pushed_at":"2021-12-17T13:56:55.000Z","size":107,"stargazers_count":46,"open_issues_count":1,"forks_count":7,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-08T11:04:57.670Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://github.com/VR-25/djs","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Magisk-Modules-Repo.png","metadata":{"files":{"readme":"README.html","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"License.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":null,"patreon":"VR25","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":"VR25","issuehunt":null,"otechie":null,"custom":"https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=iprj25@gmail.com\u0026lc=US\u0026item_name=VR25+is+creating+free+and+open+source+software.+Donate+to+suppport+their+work.\u0026no_note=0\u0026cn=\u0026currency_code=USD\u0026bn=PP-DonationsBF:btn_donateCC_LG.gif:NonHosted"}},"created_at":"2019-02-28T01:58:52.000Z","updated_at":"2024-12-07T17:37:08.000Z","dependencies_parsed_at":"2022-09-12T10:31:16.742Z","dependency_job_id":null,"html_url":"https://github.com/Magisk-Modules-Repo/djs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Magisk-Modules-Repo/djs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Magisk-Modules-Repo%2Fdjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Magisk-Modules-Repo%2Fdjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Magisk-Modules-Repo%2Fdjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Magisk-Modules-Repo%2Fdjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Magisk-Modules-Repo","download_url":"https://codeload.github.com/Magisk-Modules-Repo/djs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Magisk-Modules-Repo%2Fdjs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273317758,"owners_count":25084042,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-02T02:00:09.530Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-20T00:29:37.415Z","updated_at":"2025-09-02T17:08:05.433Z","avatar_url":"https://github.com/Magisk-Modules-Repo.png","language":"Shell","funding_links":["https://patreon.com/VR25","https://liberapay.com/VR25","https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026business=iprj25@gmail.com\u0026lc=US\u0026item_name=VR25+is+creating+free+and+open+source+software.+Donate+to+suppport+their+work.\u0026no_note=0\u0026cn=\u0026currency_code=USD\u0026bn=PP-DonationsBF:btn_donateCC_LG.gif:NonHosted","https://liberapay.com/vr25","https://patreon.com/vr25","https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026amp;business=iprj25@gmail.com\u0026amp;lc=US\u0026amp;item_name=VR25+is+creating+free+and+open+source+software.+Donate+to+suppport+their+work.\u0026amp;no_note=0\u0026amp;cn=\u0026amp;currency_code=USD\u0026amp;bn=PP-DonationsBF:btn_donateCC_LG.gif:NonHosted"],"categories":[],"sub_categories":[],"readme":"\u003c!DOCTYPE html\u003e\n    \u003chtml\u003e\n    \u003chead\u003e\n        \u003cmeta charset=\"UTF-8\"\u003e\n        \u003ctitle\u003eDaily Job Scheduler \u0026lpar;DJS\u0026rpar;\u003c/title\u003e\n        \u003cstyle\u003e\n/* From extension vscode.markdown-math */\n@font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_AMS-Regular.woff) format(\"woff\"),url(fonts/KaTeX_AMS-Regular.ttf) format(\"truetype\");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format(\"woff2\"),url(fonts/KaTeX_Caligraphic-Bold.woff) format(\"woff\"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format(\"truetype\");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_Caligraphic-Regular.woff) format(\"woff\"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format(\"truetype\");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format(\"woff2\"),url(fonts/KaTeX_Fraktur-Bold.woff) format(\"woff\"),url(fonts/KaTeX_Fraktur-Bold.ttf) format(\"truetype\");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_Fraktur-Regular.woff) format(\"woff\"),url(fonts/KaTeX_Fraktur-Regular.ttf) format(\"truetype\");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.woff2) format(\"woff2\"),url(fonts/KaTeX_Main-Bold.woff) format(\"woff\"),url(fonts/KaTeX_Main-Bold.ttf) format(\"truetype\");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format(\"woff2\"),url(fonts/KaTeX_Main-BoldItalic.woff) format(\"woff\"),url(fonts/KaTeX_Main-BoldItalic.ttf) format(\"truetype\");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.woff2) format(\"woff2\"),url(fonts/KaTeX_Main-Italic.woff) format(\"woff\"),url(fonts/KaTeX_Main-Italic.ttf) format(\"truetype\");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_Main-Regular.woff) format(\"woff\"),url(fonts/KaTeX_Main-Regular.ttf) format(\"truetype\");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format(\"woff2\"),url(fonts/KaTeX_Math-BoldItalic.woff) format(\"woff\"),url(fonts/KaTeX_Math-BoldItalic.ttf) format(\"truetype\");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.woff2) format(\"woff2\"),url(fonts/KaTeX_Math-Italic.woff) format(\"woff\"),url(fonts/KaTeX_Math-Italic.ttf) format(\"truetype\");font-weight:400;font-style:italic}@font-face{font-family:\"KaTeX_SansSerif\";src:url(fonts/KaTeX_SansSerif-Bold.woff2) format(\"woff2\"),url(fonts/KaTeX_SansSerif-Bold.woff) format(\"woff\"),url(fonts/KaTeX_SansSerif-Bold.ttf) format(\"truetype\");font-weight:700;font-style:normal}@font-face{font-family:\"KaTeX_SansSerif\";src:url(fonts/KaTeX_SansSerif-Italic.woff2) format(\"woff2\"),url(fonts/KaTeX_SansSerif-Italic.woff) format(\"woff\"),url(fonts/KaTeX_SansSerif-Italic.ttf) format(\"truetype\");font-weight:400;font-style:italic}@font-face{font-family:\"KaTeX_SansSerif\";src:url(fonts/KaTeX_SansSerif-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_SansSerif-Regular.woff) format(\"woff\"),url(fonts/KaTeX_SansSerif-Regular.ttf) format(\"truetype\");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_Script-Regular.woff) format(\"woff\"),url(fonts/KaTeX_Script-Regular.ttf) format(\"truetype\");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_Size1-Regular.woff) format(\"woff\"),url(fonts/KaTeX_Size1-Regular.ttf) format(\"truetype\");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_Size2-Regular.woff) format(\"woff\"),url(fonts/KaTeX_Size2-Regular.ttf) format(\"truetype\");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_Size3-Regular.woff) format(\"woff\"),url(fonts/KaTeX_Size3-Regular.ttf) format(\"truetype\");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_Size4-Regular.woff) format(\"woff\"),url(fonts/KaTeX_Size4-Regular.ttf) format(\"truetype\");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format(\"woff2\"),url(fonts/KaTeX_Typewriter-Regular.woff) format(\"woff\"),url(fonts/KaTeX_Typewriter-Regular.ttf) format(\"truetype\");font-weight:400;font-style:normal}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto;border-color:currentColor}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-version:after{content:\"0.13.0\"}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .katex-html\u003e.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed;border-collapse:collapse}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;vertical-align:bottom;position:relative}.katex .vlist\u003espan{display:block;height:0;position:relative}.katex .vlist\u003espan\u003espan{display:inline-block}.katex .vlist\u003espan\u003e.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}.katex .vbox{display:inline-flex;flex-direction:column;align-items:baseline}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{width:0;max-width:0}.katex .msupsub{text-align:left}.katex .mfrac\u003espan\u003espan{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap\u003e.inner,.katex .llap\u003e.inner,.katex .rlap\u003e.inner{position:absolute}.katex .clap\u003e.fix,.katex .llap\u003e.fix,.katex .rlap\u003e.fix{display:inline-block}.katex .llap\u003e.inner{right:0}.katex .clap\u003e.inner,.katex .rlap\u003e.inner{left:0}.katex .clap\u003e.inner\u003espan{margin-left:-50%;margin-right:50%}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}.katex .sqrt\u003e.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1\u003espan{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4\u003espan{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent\u003e.vlist-t,.katex .op-limits\u003e.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c\u003e.vlist-t{text-align:center}.katex .mtable .col-align-l\u003e.vlist-t{text-align:left}.katex .mtable .col-align-r\u003e.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex svg path{stroke:none}.katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}.katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}.katex .stretchy:after,.katex .stretchy:before{content:\"\"}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .halfarrow-left{position:absolute;left:0;width:50.2%;overflow:hidden}.katex .halfarrow-right{position:absolute;right:0;width:50.2%;overflow:hidden}.katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}.katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}.katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{box-sizing:border-content;border-top:.049em solid;border-right:.049em solid;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{counter-increment:katexEqnNo;content:\"(\" counter(katexEqnNo) \")\"}.katex .mml-eqn-num:before{counter-increment:mmlEqnNo;content:\"(\" counter(mmlEqnNo) \")\"}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;position:absolute;left:calc(50% + .3em);text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display\u003e.katex{display:block;text-align:center;white-space:nowrap}.katex-display\u003e.katex\u003e.katex-html{display:block;position:relative}.katex-display\u003e.katex\u003e.katex-html\u003e.tag{position:absolute;right:0}.katex-display.leqno\u003e.katex\u003e.katex-html\u003e.tag{left:0;right:auto}.katex-display.fleqn\u003e.katex{text-align:left;padding-left:2em}body{counter-reset:katexEqnNo mmlEqnNo}\n\n/*---------------------------------------------------------------------------------------------\n *  Copyright (c) Microsoft Corporation. All rights reserved.\n *  Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\n.katex-error {\n\tcolor: var(--vscode-editorError-foreground);\n}\n\n\u003c/style\u003e\n        \n        \u003clink rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/gh/Microsoft/vscode/extensions/markdown-language-features/media/markdown.css\"\u003e\n\u003clink rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/gh/Microsoft/vscode/extensions/markdown-language-features/media/highlight.css\"\u003e\n\u003cstyle\u003e\n            body {\n                font-family: -apple-system, BlinkMacSystemFont, 'Segoe WPC', 'Segoe UI', system-ui, 'Ubuntu', 'Droid Sans', sans-serif;\n                font-size: 14px;\n                line-height: 1.6;\n            }\n        \u003c/style\u003e\n        \u003cstyle\u003e\n.task-list-item { list-style-type: none; } .task-list-item-checkbox { margin-left: -20px; vertical-align: middle; }\n\u003c/style\u003e\n        \n        \n        \n    \u003c/head\u003e\n    \u003cbody class=\"vscode-body vscode-light\"\u003e\n        \u003ch1 id=\"daily-job-scheduler-djs\"\u003eDaily Job Scheduler (DJS)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#description\"\u003eDESCRIPTION\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#license\"\u003eLICENSE\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#disclaimer\"\u003eDISCLAIMER\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#warning\"\u003eWARNING\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#donations\"\u003eDONATIONS\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#prerequisites\"\u003ePREREQUISITES\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#configuration-dataadbvr25djs-dataconfigtxt\"\u003eCONFIGURATION (/data/adb/vr25/djs-data/config.txt)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#usage\"\u003eUSAGE\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#terminal-commands\"\u003eTerminal Commands\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#notestips-for-front-end-developers\"\u003eNOTES/TIPS FOR FRONT-END DEVELOPERS\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#basics\"\u003eBasics\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#initializing-djs\"\u003eInitializing DJS\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#frequently-asked-questions-faq\"\u003eFREQUENTLY ASKED QUESTIONS (FAQ)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#noob-friendly\"\u003eNOOB FRIENDLY\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#prequisites\"\u003ePrequisites\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#steps\"\u003eSteps\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#extras\"\u003eExtras\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#links\"\u003eLINKS\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#latest-changes\"\u003eLATEST CHANGES\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch2 id=\"description\"\u003eDESCRIPTION\u003c/h2\u003e\n\u003cp\u003eDJS runs scripts and/or commands on boot or at set HH:MM (e.g, 23:59).\nAny root solution is supported.\nThe installation is always \u0026quot;systemless\u0026quot;, whether or not the system is rooted with Magisk.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"license\"\u003eLICENSE\u003c/h2\u003e\n\u003cp\u003eCopyright (C) 2019-2021, VR25\u003c/p\u003e\n\u003cp\u003eThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\u003c/p\u003e\n\u003cp\u003eThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\u003c/p\u003e\n\u003cp\u003eYou should have received a copy of the GNU General Public License\nalong with this program. If not, see \u003ca href=\"https://www.gnu.org/licenses/\"\u003ehttps://www.gnu.org/licenses/\u003c/a\u003e.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"disclaimer\"\u003eDISCLAIMER\u003c/h2\u003e\n\u003cp\u003eAlways read/reread this reference prior to installing/upgrading this software.\u003c/p\u003e\n\u003cp\u003eWhile no cats have been harmed, the author assumes no responsibility for anything that might break due to the use/misuse of it.\u003c/p\u003e\n\u003cp\u003eTo prevent fraud, do NOT mirror any link associated with this project; do NOT share builds (tarballs/zips)! Share official links instead.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"warning\"\u003eWARNING\u003c/h2\u003e\n\u003cp\u003eThe author assumes no responsibility under anything that might break due to the use/misuse of this software.\nBy choosing to use/misuse it, you agree to do so at your own risk!\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"donations\"\u003eDONATIONS\u003c/h2\u003e\n\u003cp\u003ePlease, support the project with donations (\u003ca href=\"#links\"\u003elinks\u003c/a\u003e at the bottom).\nAs the project gets bigger and more popular, the need for coffee goes up as well.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"prerequisites\"\u003ePREREQUISITES\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAndroid or Android based OS\u003c/li\u003e\n\u003cli\u003eAny root solution (e.g., \u003ca href=\"https://github.com/topjohnwu/Magisk/\"\u003eMagisk\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/search?o=desc\u0026amp;q=busybox+android\u0026amp;s=updated\u0026amp;type=Repositories/\"\u003eBusybox*\u003c/a\u003e (only if not rooted with Magisk)\u003c/li\u003e\n\u003cli\u003eNon-Magisk users can enable djs auto-start by running /data/adb/vr25/djs/service.sh, a copy of, or a link to it - with init.d or an app that emulates it.\u003c/li\u003e\n\u003cli\u003eTerminal emulator\u003c/li\u003e\n\u003cli\u003eText editor (optional)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e* A busybox binary can simply be placed in /data/adb/vr25/bin/.\nPermissions (0700) are set automatically, as needed.\nPrecedence: /data/adb/vr25/bin/busybox \u0026gt; Magisk's busybox \u0026gt; system's busybox\u003c/p\u003e\n\u003cp\u003eOther executables or static binaries can also be placed in /data/adb/vr25/bin/ (with proper permissions) instead of being installed system-wide.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"configuration-dataadbvr25djs-dataconfigtxt\"\u003eCONFIGURATION (/data/adb/vr25/djs-data/config.txt)\u003c/h2\u003e\n\u003cpre\u003e\u003ccode\u003e\u003ccode\u003e\u003cdiv\u003e# This is a comment line.\n# All lines that do not match a schedule instruction are ignored, regardless of the '#'.\n\n# This is used to determine whether this file should be patched. Do NOT modify!\nversionCode=201908180\n\n# Schedule Examples\n\n# Run on boot\n#boot touch /data/I-was-born-on-boot; : --delete\n# \u0026quot;: --delete\u0026quot; is optional; it means \u0026quot;delete the schedule after execution\u0026quot; - effectively turning it into a one-time boot schedule.\n\n# Apply Advanced Charging Controller night settings at 22:00\n#2200 acc pc=45 rc=44 mcc=500000 mcv=3920\n\n# Restore regular ACC settings at 6:00 (morning)\n#0600 acc pc=75 rc=70 mcc= mcv=; : --boot\n# \u0026quot;: --boot\u0026quot; is optional; it makes this schedule run on boot as well (e.g., as part of a fail-safe plan).\n\u003c/div\u003e\u003c/code\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003chr\u003e\n\u003ch2 id=\"usage\"\u003eUSAGE\u003c/h2\u003e\n\u003cp\u003eIf you feel uncomfortable with the command line, use a \u003ccode\u003etext editor\u003c/code\u003e to modify \u003ccode\u003e/data/adb/vr25/djs-data/config.txt\u003c/code\u003e.\nChanges to this file take effect almost instantly, and without a \u003ca href=\"https://en.wikipedia.org/wiki/Daemon_(computing)\"\u003edaemon\u003c/a\u003e restart.\u003c/p\u003e\n\u003ch3 id=\"terminal-commands\"\u003eTerminal Commands\u003c/h3\u003e\n\u003cpre\u003e\u003ccode\u003e\u003ccode\u003e\u003cdiv\u003eConfig Management\n\nUsage: djsc|djs-config OPTION ARGS\n\n-a|--append 'LINE'\n  e.g., djsc -a 2200 reboot -p\n\n-d|--delete ['regex'] (deletes all matching lines)\n  e.g., djsc --delete 2200\n\n-e|--edit [cmd] (fallback cmd: nano -l|vim|vi)\n  e.g., djs-config --edit vim\n\n-l|--list ['regex'] (fallback regex: \u0026quot;.\u0026quot;, matches all lines)\n  e.g., djsc -l '^boot'\n\n-L|--log [cmd] (fallback cmd: tail -F)\n  e.g., djsc -L cat \u0026gt; /sdcard/djsd.log\n\n\nDaemon Management\n\nStart/restart: djsd|djs-daemon\nStop: djs.|djs-stop\nStatus: djs,|djs-status\n\n\nPrint Version Code (integer)\n\ndjsv\ndjs-version\n\n\nNotes\n- All commands return either 0 (success/running) or 1 (failure/stopped).\n- djs-status prints the daemon's process ID (PID).\n- Special shell characters (e.g., \u0026quot;|\u0026quot;, \u0026quot;;\u0026quot;, \u0026quot;\u0026amp;\u0026quot;) must be quoted or escaped. For the sake of simplicity and consistency, single-quote all arguments as a whole (e.g., djsc -a '2200 reboot -p').\n- PATH starts with /data/adb/vr25/bin:/dev/.vr25/busybox.\nThis means schedules don't require additional busybox setup.\nThe first directory holds user executables.\n\u003c/div\u003e\u003c/code\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003chr\u003e\n\u003ch2 id=\"notestips-for-front-end-developers\"\u003eNOTES/TIPS FOR FRONT-END DEVELOPERS\u003c/h2\u003e\n\u003ch3 id=\"basics\"\u003eBasics\u003c/h3\u003e\n\u003cp\u003eDJS does not require Magisk.\nAny root solution is fine.\u003c/p\u003e\n\u003cp\u003eUse \u003ccode\u003e/dev/.vr25/djs/*\u003c/code\u003e over regular commands.\nThese are guaranteed to be readily available after installation/upgrades.\u003c/p\u003e\n\u003cp\u003eIt may be best to use long options over short equivalents - e.g., \u003ccode\u003e/dev/.vr25/djs/djs-config --list\u003c/code\u003e, instead of \u003ccode\u003e/dev/.vr25/djs/djsc -l\u003c/code\u003e.\nThis makes code more readable (less cryptic).\u003c/p\u003e\n\u003cp\u003eInclude provided descriptions of DJS features/settings in your app(s).\nProvide additional information (trusted) where appropriate.\nExplain settings/concepts as clearly and with as few words as possible.\u003c/p\u003e\n\u003ch3 id=\"initializing-djs\"\u003eInitializing DJS\u003c/h3\u003e\n\u003cp\u003eDJS is automatically initialized after installation/upgrades.\nIt needs to be initialized on boot, too.\nIf it's installed as a Magisk module, this is done by Magisk itself.\nOtherwise, the front-end should handle it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\u003ccode\u003e\u003cdiv\u003eon boot_completed receiver and main activity\n  if file /dev/.acca/started does NOT exist\n    create it\n      mkdir -p /dev/.acca\n      touch /dev/.acca/started\n    if accd is NOT running\n      launch it\n        /data/adb/vr25/djs/service.sh\n    else\n      do nothing\n  else\n    do nothing\n\u003c/div\u003e\u003c/code\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003ccode\u003e/dev/\u003c/code\u003e is volatile - meaning, a reboot/shutdown clears \u003ccode\u003e/dev/.acca/\u003c/code\u003e and its contents.\nThat's exactly what we want.\nOf course, \u003ccode\u003e/dev/.acca/started\u003c/code\u003e is just an example.\nOne can use any random path (e.g., \u003ccode\u003e.myapp/initialized\u003c/code\u003e), as long as it's under \u003ccode\u003e/dev/\u003c/code\u003e and does not conflict with preexisting data.\n\u003cstrong\u003eWARNING\u003c/strong\u003e: do not play with preexisting /dev/ data!\nDoing so may result in data loss and/or other undesired outcome.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"frequently-asked-questions-faq\"\u003eFREQUENTLY ASKED QUESTIONS (FAQ)\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003eHow do I report issues?\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eOpen issues on GitHub or contact the developer on Telegram/XDA (linked below).\nAlways provide as much information as possible.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eWhere do I find daemon logs?\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e\u003ccode\u003e/dev/.vr25/djs/djsd.log\u003c/code\u003e\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"noob-friendly\"\u003eNOOB FRIENDLY\u003c/h2\u003e\n\u003ch3 id=\"prequisites\"\u003ePrequisites\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMagisk Rooted\u003c/li\u003e\n\u003cli\u003eRoot File Explorer \u0026amp; Text Editor\u003c/li\u003e\n\u003cli\u003eYour Script to be executed\u003c/li\u003e\n\u003cli\u003eConfidence\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"steps\"\u003eSteps\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003eOpen the config.txt file at /data/adb/vr25/djs-data/\u003c/li\u003e\n\u003cli\u003eMove to end of the text and create a new line\u003c/li\u003e\n\u003cli\u003eStart with writing \u0026quot;boot\u0026quot; (without the quotations) if you want the script to executed on boot.\u003c/li\u003e\n\u003cli\u003eOr Start with writing the time at which you want the script to run in HH:MM format. Ex. \u0026quot;21:30\u0026quot;.\u003c/li\u003e\n\u003cli\u003eNow continue in the same line with a space and paste your script. You're done.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"extras\"\u003eExtras\u003c/h3\u003e\n\u003col start=\"6\"\u003e\n\u003cli\u003eIt is possible to Add \u0026quot;; : --delete\u0026quot; to the script if you want the script to run only for first boot.\u003c/li\u003e\n\u003cli\u003eIn case of time based command you can Add \u0026quot;; : --boot\u0026quot; to the script if you want the script to run also at boot.\u003c/li\u003e\n\u003c/ol\u003e\n\u003chr\u003e\n\u003ch2 id=\"links\"\u003eLINKS\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://app.airtm.com/send-or-request/send\"\u003eDonate - Airtm, username: ivandro863auzqg\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://liberapay.com/vr25\"\u003eDonate - Liberapay\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://patreon.com/vr25\"\u003eDonate - Patreon\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_donations\u0026amp;business=iprj25@gmail.com\u0026amp;lc=US\u0026amp;item_name=VR25+is+creating+free+and+open+source+software.+Donate+to+suppport+their+work.\u0026amp;no_note=0\u0026amp;cn=\u0026amp;currency_code=USD\u0026amp;bn=PP-DonationsBF:btn_donateCC_LG.gif:NonHosted\"\u003eDonate - PayPal or Credit/Debit Card\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://fb.me/vr25xda\"\u003eFacebook Page\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://t.me/vr25_xda\"\u003eTelegram Channel\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://t.me/vr25xda\"\u003eTelegram Profile\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/VR-25/djs\"\u003eUpstream Repository\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch2 id=\"latest-changes\"\u003eLATEST CHANGES\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003ev2021.10.30 (202110300)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGeneral fixes \u0026amp; optimizations\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003ev2021.11.3 (202111030)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed installation issues\u003c/li\u003e\n\u003cli\u003eImproved support for the current Magisk canary.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003ev2021.12.14 (202112140)\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u0026quot;Noob friendly\u0026quot; section by @n-ce;\u003c/li\u003e\n\u003cli\u003eUpdated build script;\u003c/li\u003e\n\u003cli\u003eUpdated links in the README.\u003c/li\u003e\n\u003c/ul\u003e\n\n    \u003c/body\u003e\n    \u003c/html\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagisk-modules-repo%2Fdjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmagisk-modules-repo%2Fdjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmagisk-modules-repo%2Fdjs/lists"}