99 Commits
1.0.1 ... 1.1.1

Author SHA1 Message Date
Naveen Singh
0964e1a448 Merge pull request #144 from FossifyOrg/v1.1.1
chore(release): prepare release v1.1.1
2025-05-14 19:59:44 +05:30
Naveen Singh
cd4688d35c chore(release): bump app version to 1.1.1 (4) 2025-05-14 19:54:44 +05:30
Naveen Singh
a229b99432 chore(release): create fastlane changelog for 1.1.1 2025-05-14 19:54:18 +05:30
Naveen Singh
b483db96c1 docs(changelog): update changelog 2025-05-14 19:52:22 +05:30
GiannosOB
e0a4133bcf chore(l10n): update Greek translations
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/el/
Via: Weblate
2025-05-14 19:42:26 +05:30
Naveen Singh
d055684056 chore(deps): bump org.fossify.commons to 2.0.0 (#143) 2025-05-14 19:41:01 +05:30
Ammar64
0a7283e757 feat: remove launcher settings icon (#138)
* Don't add Launcher settings if it's hidden

* Remove launcher settings icon completely.

Co-authored-by: Naveen Singh <36371707+naveensingh@users.noreply.github.com>

* We don't need to check for that

---------

Co-authored-by: Naveen Singh <36371707+naveensingh@users.noreply.github.com>
2025-05-13 23:43:39 +05:30
Naveen Singh
35ed71bb40 ci: add release commenter and pr labeler workflows 2025-05-13 18:01:16 +05:30
dependabot[bot]
6da6265d73 chore(deps): bump fastlane-plugin-fossify from 1.0.0 to 1.0.2 (#139)
Bumps fastlane-plugin-fossify from 1.0.0 to 1.0.2.

---
updated-dependencies:
- dependency-name: fastlane-plugin-fossify
  dependency-version: 1.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-13 02:30:27 +05:30
Naveen Singh
e23ff94832 ci: update dependabot config to handle github actions 2025-05-07 18:27:15 +05:30
Naveen Singh
66ea58b192 ci: update dependabot config to handle github actions 2025-05-07 18:17:39 +05:30
dependabot[bot]
740471bc1d chore(deps): bump com.android.application from 8.7.3 to 8.9.2 (#128)
Bumps com.android.application from 8.7.3 to 8.9.2.

---
updated-dependencies:
- dependency-name: com.android.application
  dependency-version: 8.9.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-07 04:49:02 -04:00
Naveen Singh
3b47d8d79e build(gradle): update gradle wrapper and scripts (#135) 2025-05-07 04:36:48 -04:00
Romeostar
338518e493 Translated using Weblate (Russian)
Currently translated at 0.0% (0 of 2 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/ru/
2025-05-07 08:41:48 +05:30
solokot
7d59256d6c Translated using Weblate (Russian)
Currently translated at 0.0% (0 of 2 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/ru/
2025-05-07 08:41:48 +05:30
Romeostar
245a6d1c03 Translated using Weblate (Russian)
Currently translated at 0.0% (0 of 2 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/ru/
2025-05-07 08:41:48 +05:30
xc.tm
91b42f3758 Translated using Weblate (Hindi)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/hi/
2025-05-07 08:41:48 +05:30
Sylvain Pichon
5eec1d87d5 Translated using Weblate (French)
Currently translated at 100.0% (2 of 2 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/fr/
2025-05-07 08:41:48 +05:30
gacarel
2d01e5c46c Translated using Weblate (Spanish)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/es/
2025-05-07 08:41:48 +05:30
Petri Hämäläinen
eb3f8f6ad3 Translated using Weblate (Finnish)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/fi/
2025-05-07 08:41:48 +05:30
Petri Hämäläinen
4d0ba27326 Translated using Weblate (Finnish)
Currently translated at 70.5% (12 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/fi/
2025-05-07 08:41:48 +05:30
dependabot[bot]
bdd12d84a8 chore(deps): bump fastlane from 2.227.1 to 2.227.2 (#130)
Bumps [fastlane](https://github.com/fastlane/fastlane) from 2.227.1 to 2.227.2.
- [Release notes](https://github.com/fastlane/fastlane/releases)
- [Changelog](https://github.com/fastlane/fastlane/blob/master/CHANGELOG.latest.md)
- [Commits](https://github.com/fastlane/fastlane/compare/fastlane/2.227.1...fastlane/2.227.2)

---
updated-dependencies:
- dependency-name: fastlane
  dependency-version: 2.227.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-06 05:47:11 -04:00
Naveen Singh
bd08d29e7c ci: add dependabot config 2025-05-05 20:17:32 +05:30
Naveen Singh
35fc459787 build: allow builds without signing configuration 2025-05-05 20:17:32 +05:30
Naveen Singh
fc2ade5cea ci: setup release workflow 2025-05-05 20:17:32 +05:30
Naveen Singh
0d81e44d68 style: reformat changelogs as per Keep a Changelog 2025-05-05 20:17:32 +05:30
Naveen Singh
a0cb828f63 build: use env variables for release signing fallback 2025-05-05 20:17:32 +05:30
Naveen Singh
bff35b8b9e refactor(build): rename prepaid product flavor to gplay 2025-05-05 20:17:32 +05:30
Naveen Singh
653a229c6a chore: setup fastlane 2025-05-05 20:17:32 +05:30
Naveen Singh
06bf7062b8 Use workflow templates for minimizer and no-response 2025-04-04 01:54:53 +05:30
Naveen Singh
13d8358cdb Remove invalid short description translations 2025-03-25 21:10:52 +05:30
Naveen Singh
f73958f3c6 Remove title and changelog translations 2025-03-25 20:58:15 +05:30
Naveen Singh
8334136002 Merge pull request #113 from weblate/weblate-fossify-launcher
Translations update from Hosted Weblate
2025-03-25 20:43:07 +05:30
Tekhnikal
0f5ef439c6 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/pt_BR/
2025-03-25 03:56:22 +01:00
Agnieszka C
49a9524b84 Translated using Weblate (Polish)
Currently translated at 50.0% (3 of 6 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/pl/
2025-03-24 10:55:47 +01:00
Aindriú Mac Giolla Eoin
c508ddebd2 Translated using Weblate (Irish)
Currently translated at 100.0% (6 of 6 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/ga/
2025-03-19 14:39:43 +01:00
Sketch6580
c985558a83 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 83.3% (5 of 6 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/zh_Hans/
2025-03-19 14:08:14 +01:00
Josep M. Ferrer
abfdb77e6a Translated using Weblate (Catalan)
Currently translated at 100.0% (6 of 6 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/ca/
2025-03-19 11:29:19 +01:00
Priit Jõerüüt
4a9eaee83b Translated using Weblate (Estonian)
Currently translated at 83.3% (5 of 6 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/et/
2025-03-19 08:59:59 +01:00
Fjuro
90f5db27d5 Translated using Weblate (Czech)
Currently translated at 100.0% (6 of 6 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/cs/
2025-03-19 08:20:22 +01:00
VfBFan
b373839683 Translated using Weblate (German)
Currently translated at 100.0% (6 of 6 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/de/
2025-03-19 08:20:21 +01:00
Sketch6580
95b111b4c8 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 66.6% (4 of 6 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/zh_Hans/
2025-03-19 04:38:50 +01:00
Dan
f61492daa4 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (6 of 6 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/uk/
2025-03-19 03:06:12 +01:00
Naveen Singh
1a44fb5b18 Merge pull request #112 from FossifyOrg/1.1.0
Release 1.1.0
2025-03-19 05:04:42 +05:30
Naveen Singh
6ca12b1d51 Update app version to 1.1.0 (3) 2025-03-19 04:57:28 +05:30
Naveen Singh
b2d9ab317d Update changelog 2025-03-19 04:57:22 +05:30
Naveen Singh
aa88f1d0a7 Mark app beta in app stores
It's very unstable right now.
2025-03-19 04:57:15 +05:30
Naveen Singh
cb3f946c5b Show ripple when preference is clicked 2025-03-19 04:53:03 +05:30
Naveen Singh
48e54d173b Remove uninstall option for self
Conflicts with double tap to lock feature. See https://github.com/FossifyOrg/Launcher/pull/82#issuecomment-2545981280
2025-03-19 04:50:28 +05:30
Naveen Singh
e1e6c978ed Merge pull request #102 from weblate/weblate-fossify-launcher
Translations update from Hosted Weblate
2025-03-19 04:04:26 +05:30
elid
03c080592b Translated using Weblate (Hebrew)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/he/
2025-03-16 06:32:20 +01:00
LaKato
a47918fa9c Translated using Weblate (Esperanto)
Currently translated at 40.0% (2 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/eo/
2025-03-15 21:36:52 +01:00
LaKato
e9089a72a1 Translated using Weblate (Spanish)
Currently translated at 88.2% (15 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/es/
2025-03-02 04:52:26 +01:00
Mikel Larreategi
a48e1dc610 Translated using Weblate (Basque)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/eu/
2025-02-24 13:45:23 +01:00
LaKato
ff8d2eab1e Translated using Weblate (Esperanto)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/eo/
2025-02-24 10:08:16 +01:00
Bora Atıcı
960348fe82 Translated using Weblate (Turkish)
Currently translated at 80.0% (4 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/tr/
2025-02-15 18:43:26 +01:00
Bora Atıcı
cf4a1eab30 Translated using Weblate (Turkish)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/tr/
2025-02-15 18:43:25 +01:00
kharrr69
a0bdb4c9ba Translated using Weblate (Indonesian)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/id/
2025-02-05 20:05:41 +01:00
en2sv
bccb5c7996 Translated using Weblate (Swedish)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/sv/
2025-02-02 22:05:31 +01:00
P.O
be66c357a8 Translated using Weblate (Swedish)
Currently translated at 60.0% (3 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/sv/
2025-01-31 15:36:35 +01:00
moca moca
d6902df7dc Translated using Weblate (Hebrew)
Currently translated at 94.1% (16 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/he/
2025-01-31 15:36:35 +01:00
LaKato
7211448134 Translated using Weblate (Esperanto)
Currently translated at 5.8% (1 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/eo/
2025-01-26 04:05:10 +01:00
Naveen Singh
8c3a74aae9 Merge pull request #87 from weblate/weblate-fossify-launcher
Translations update from Hosted Weblate
2025-01-23 15:06:55 +05:30
Sacha
f96d53a769 Translated using Weblate (French)
Currently translated at 80.0% (4 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/fr/
2025-01-21 20:03:27 +01:00
Sacha
790dc44002 Translated using Weblate (French)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/fr/
2025-01-21 20:03:27 +01:00
Ricky Tigg
5954afca56 Translated using Weblate (Finnish)
Currently translated at 64.7% (11 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/fi/
2025-01-21 20:03:27 +01:00
Milo Ivir
b178396d0d Translated using Weblate (Croatian)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/hr/
2025-01-21 20:03:26 +01:00
Nicola Bortoletto
79ffabc89a Translated using Weblate (Italian)
Currently translated at 100.0% (5 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/it/
2025-01-21 20:03:26 +01:00
Aindriú Mac Giolla Eoin
0cc6bbdef8 Translated using Weblate (Irish)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/ga/
2025-01-21 20:03:26 +01:00
Jeff Huang
8420722cef Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/zh_Hant/
2025-01-21 20:03:26 +01:00
VfBFan
583b731ddf Translated using Weblate (German)
Currently translated at 100.0% (5 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/de/
2025-01-21 20:03:26 +01:00
Sergio Marques
53ca4ff059 Translated using Weblate (Portuguese)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/pt/
2025-01-21 20:03:26 +01:00
Priit Jõerüüt
0e54d7adfa Translated using Weblate (Estonian)
Currently translated at 80.0% (4 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/et/
2025-01-21 20:03:26 +01:00
Sketch6580
a9298a46c4 Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/zh_Hans/
2025-01-21 20:03:26 +01:00
Dan
b4cdc3f80e Translated using Weblate (Ukrainian)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/uk/
2025-01-21 20:03:26 +01:00
solokot
9f86e423d4 Translated using Weblate (Russian)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/ru/
2025-01-21 20:03:26 +01:00
Agnieszka C
005554bd1f Translated using Weblate (Polish)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/pl/
2025-01-21 20:03:26 +01:00
Guillaume
fec78ce229 Translated using Weblate (Dutch)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/nl/
2025-01-21 20:03:26 +01:00
Nicola Bortoletto
a228362711 Translated using Weblate (Italian)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/it/
2025-01-21 20:03:26 +01:00
Ghost of Sparta
66d5248695 Translated using Weblate (Hungarian)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/hu/
2025-01-21 20:03:26 +01:00
Priit Jõerüüt
8bb328f509 Translated using Weblate (Estonian)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/et/
2025-01-21 20:03:26 +01:00
VfBFan
ad1b46dce1 Translated using Weblate (German)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/de/
2025-01-21 20:03:26 +01:00
Fjuro
899863da4c Translated using Weblate (Czech)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/cs/
2025-01-21 20:03:26 +01:00
Josep M. Ferrer
e229b2cfdd Translated using Weblate (Catalan)
Currently translated at 100.0% (17 of 17 strings)

Translation: Fossify/Launcher
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher/ca/
2025-01-21 20:03:26 +01:00
VfBFan
57c58a55e3 Translated using Weblate (German)
Currently translated at 100.0% (5 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/de/
2025-01-21 20:03:26 +01:00
Josep M. Ferrer
c8cd31fef8 Translated using Weblate (Catalan)
Currently translated at 100.0% (5 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/ca/
2025-01-21 20:03:26 +01:00
en2sv
8e81c09e6e Translated using Weblate (Swedish)
Currently translated at 40.0% (2 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/sv/
2025-01-21 20:03:26 +01:00
Aindriú Mac Giolla Eoin
db5bf9fbdd Translated using Weblate (Irish)
Currently translated at 100.0% (5 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/ga/
2025-01-21 20:03:26 +01:00
Dan
089da3a95f Translated using Weblate (Ukrainian)
Currently translated at 100.0% (5 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/uk/
2025-01-21 20:03:26 +01:00
Fjuro
e0e0ce7696 Translated using Weblate (Czech)
Currently translated at 100.0% (5 of 5 strings)

Translation: Fossify/Launcher metadata
Translate-URL: https://hosted.weblate.org/projects/fossify/launcher-metadata/cs/
2025-01-21 20:03:26 +01:00
Naveen Singh
d05710b977 Remove optional donation checklist item 2025-01-22 00:30:43 +05:30
Naveen Singh
b0bc730e94 Fix typo in CONTRIBUTING.md 2025-01-21 14:00:22 +05:30
Naveen Singh
13256eb237 Fix typos in issue templates 2025-01-17 17:57:13 +05:30
Naveen Singh
8387e6c8d6 Merge pull request #82 from rondao/double-tap-to-lock
Add double tap to lock the phone
2025-01-02 14:26:53 +05:30
Naveen Singh
99a60fa148 Update double tap to lock strings 2025-01-02 14:23:59 +05:30
Rafael Rondão
74adfd1fff Fix double tap to lock screen button not working
The value of 'isAdminActive' was only read during
'setupDoubleTapToLock', and not when clicking
the button.

So when clicking the settings button, the value
of 'isAdminActive' was out of date.

Signed-off-by: Rafael Rondão <rafael.rondao@gmail.com>
2025-01-01 15:11:11 -03:00
Rafael Rondão
734d483bc2 Move Double Tap to Lock menu at end of General
Signed-off-by: Rafael Rondão <rafael.rondao@gmail.com>
2025-01-01 15:09:52 -03:00
Rafael Rondão
8315774f1e Refactor strings for Double Tap to Lock feature
Include "the screen" for better explanation of the feature.

Co-authored-by: Agnieszka C <85929121+Aga-C@users.noreply.github.com>
2025-01-01 15:09:47 -03:00
Rafael Rondão
148f2d98c8 Add double tap to lock the phone
Locking the phone requires admin permission.

Signed-off-by: Rafael Rondão <rafael.rondao@gmail.com>
2025-01-01 15:09:40 -03:00
98 changed files with 993 additions and 451 deletions

View File

@@ -112,7 +112,7 @@ body:
description: |
A picture or video is worth a thousand words.
If applicable, drag and drop screenshots or a screen recording to help explain your problem. If your file is too big for Github to accept, try to compress it (ZIP file), or feel free to paste a link to an image/video hoster here instead.
If applicable, drag and drop screenshots or a screen recording to help explain your problem. If your file is too big for Github to accept, try to compress it (ZIP file), or feel free to paste a link to an image/video instead.
- type: textarea
id: additional-information

View File

@@ -20,14 +20,12 @@ body:
required: true
- label: "I have read the FAQs inside the app (Menu -> About -> FAQs) and my problem isn't listed."
required: true
- label: "**I have taken the time to fill in all the required details. I understand that the bug report will be dismissed otherwise.**"
- label: "**I have taken the time to fill in all the required details. I understand that the request will be dismissed otherwise.**"
required: true
- label: "This issue contains only one feature request."
required: true
- label: "I have read and understood the [contribution guidelines](https://github.com/FossifyOrg/Launcher/blob/main/CONTRIBUTING.md)."
required: true
- label: "I optionally [donated](https://fossify.org/donate) to support the Fossify mission."
required: false
- type: textarea
id: feature-description

34
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,34 @@
version: 2
updates:
- package-ecosystem: "bundler"
directory: "/"
schedule:
interval: "weekly"
commit-message:
prefix: "chore"
prefix-development: "chore"
include: "scope"
assignees:
- "naveensingh"
- package-ecosystem: "gradle"
directory: "/"
schedule:
interval: "weekly"
commit-message:
prefix: "chore"
prefix-development: "chore"
include: "scope"
assignees:
- "naveensingh"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
commit-message:
prefix: "chore"
prefix-development: "chore"
include: "scope"
assignees:
- "naveensingh"

25
.github/workflows/foss-release.yml vendored Normal file
View File

@@ -0,0 +1,25 @@
name: Github Release
on:
push:
tags:
- "*.*.*"
permissions:
contents: read
jobs:
call-release-workflow:
uses: FossifyOrg/.github/.github/workflows/release.yml@main
with:
tag: ${{ github.ref_name }}
flavor: "foss"
package_name: "org.fossify.home"
secrets:
ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
SERVICE_ACCOUNT_JSON_KEY_BASE64: ""
FOSSIFYBOT_TOKEN: ${{ secrets.FOSSIFYBOT_TOKEN }}

46
.github/workflows/gplay-release.yml vendored Normal file
View File

@@ -0,0 +1,46 @@
name: Google Play Release
on:
workflow_dispatch:
inputs:
track:
description: "Google Play Store release track"
required: false
type: choice
default: "beta"
options:
- internal
- alpha
- beta
- production
rollout:
description: "Rollout fraction (0.0-1.0)"
required: false
type: string
default: "0.05"
validate_only:
description: "Fastlane dry-run?"
required: false
type: boolean
default: false
permissions:
contents: read
jobs:
call-release-workflow:
uses: FossifyOrg/.github/.github/workflows/release.yml@main
with:
flavor: "gplay"
package_name: "org.fossify.home"
track: ${{ github.event.inputs.track }}
rollout: ${{ github.event.inputs.rollout }}
validate_only: ${{ github.event.inputs.validate_only == 'true' }}
secrets:
ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
SERVICE_ACCOUNT_JSON_KEY_BASE64: ${{ secrets.SERVICE_ACCOUNT_JSON_KEY_BASE64 }}
FOSSIFYBOT_TOKEN: ""

View File

@@ -1,148 +0,0 @@
/*
* Script for minimizing big images (jpg,gif,png) when they are uploaded to GitHub and not edited otherwise.
* Source: https://github.com/TeamNewPipe/NewPipe/blob/dev/.github/workflows/image-minimizer.js
*/
module.exports = async ({github, context}) => {
const IGNORE_KEY = '<!-- IGNORE IMAGE MINIFY -->';
const IGNORE_ALT_NAME_END = 'ignoreImageMinify';
// Targeted maximum height
const IMG_MAX_HEIGHT_PX = 400;
// maximum width of GitHub issues/comments
const IMG_MAX_WIDTH_PX = 800;
// all images that have a lower aspect ratio (-> have a smaller width) than this will be minimized
const MIN_ASPECT_RATIO = IMG_MAX_WIDTH_PX / IMG_MAX_HEIGHT_PX
// Get the body of the image
let initialBody = null;
if (context.eventName == 'issue_comment') {
initialBody = context.payload.comment.body;
} else if (context.eventName == 'issues') {
initialBody = context.payload.issue.body;
} else if (context.eventName == 'pull_request_target') {
initialBody = context.payload.pull_request.body;
} else {
console.log('Aborting: No body found');
return;
}
console.log(`Found body: \n${initialBody}\n`);
// Check if we should ignore the currently processing element
if (initialBody.includes(IGNORE_KEY)) {
console.log('Ignoring: Body contains IGNORE_KEY');
return;
}
// Regex for finding images (simple variant) ![ALT_TEXT](https://*.githubusercontent.com/<number>/<variousHexStringsAnd->.<fileExtension>)
const REGEX_USER_CONTENT_IMAGE_LOOKUP = /\!\[(.*)\]\((https:\/\/[-a-z0-9]+\.githubusercontent\.com\/\d+\/[-0-9a-f]{32,512}\.(jpg|gif|png))\)/gm;
const REGEX_ASSETS_IMAGE_LOCKUP = /\!\[(.*)\]\((https:\/\/github\.com\/user-attachments\/assets\/[\-0-9a-f]{36,})\)/gm;
// Check if we found something
let foundSimpleImages = REGEX_USER_CONTENT_IMAGE_LOOKUP.test(initialBody)
|| REGEX_ASSETS_IMAGE_LOCKUP.test(initialBody);
if (!foundSimpleImages) {
console.log('Found no simple images to process');
return;
}
console.log('Found at least one simple image to process');
// Require the probe lib for getting the image dimensions
const probe = require('probe-image-size');
var wasMatchModified = false;
// Try to find and replace the images with minimized ones
let newBody = await replaceAsync(initialBody, REGEX_USER_CONTENT_IMAGE_LOOKUP, minimizeAsync);
newBody = await replaceAsync(newBody, REGEX_ASSETS_IMAGE_LOCKUP, minimizeAsync);
if (!wasMatchModified) {
console.log('Nothing was modified. Skipping update');
return;
}
// Update the corresponding element
if (context.eventName == 'issue_comment') {
console.log('Updating comment with id', context.payload.comment.id);
await github.rest.issues.updateComment({
comment_id: context.payload.comment.id,
owner: context.repo.owner,
repo: context.repo.repo,
body: newBody
})
} else if (context.eventName == 'issues') {
console.log('Updating issue', context.payload.issue.number);
await github.rest.issues.update({
issue_number: context.payload.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: newBody
});
} else if (context.eventName == 'pull_request_target') {
console.log('Updating pull request', context.payload.pull_request.number);
await github.rest.pulls.update({
pull_number: context.payload.pull_request.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: newBody
});
}
// Async replace function from https://stackoverflow.com/a/48032528
async function replaceAsync(str, regex, asyncFn) {
const promises = [];
str.replace(regex, (match, ...args) => {
const promise = asyncFn(match, ...args);
promises.push(promise);
});
const data = await Promise.all(promises);
return str.replace(regex, () => data.shift());
}
async function minimizeAsync(match, g1, g2) {
console.log(`Found match '${match}'`);
if (g1.endsWith(IGNORE_ALT_NAME_END)) {
console.log(`Ignoring match '${match}': IGNORE_ALT_NAME_END`);
return match;
}
let probeAspectRatio = 0;
let shouldModify = false;
try {
console.log(`Probing ${g2}`);
let probeResult = await probe(g2);
if (probeResult == null) {
throw 'No probeResult';
}
if (probeResult.hUnits != 'px') {
throw `Unexpected probeResult.hUnits (expected px but got ${probeResult.hUnits})`;
}
if (probeResult.height <= 0) {
throw `Unexpected probeResult.height (height is invalid: ${probeResult.height})`;
}
if (probeResult.wUnits != 'px') {
throw `Unexpected probeResult.wUnits (expected px but got ${probeResult.wUnits})`;
}
if (probeResult.width <= 0) {
throw `Unexpected probeResult.width (width is invalid: ${probeResult.width})`;
}
console.log(`Probing resulted in ${probeResult.width}x${probeResult.height}px`);
probeAspectRatio = probeResult.width / probeResult.height;
shouldModify = probeResult.height > IMG_MAX_HEIGHT_PX && probeAspectRatio < MIN_ASPECT_RATIO;
} catch(e) {
console.log('Probing failed:', e);
// Immediately abort
return match;
}
if (shouldModify) {
wasMatchModified = true;
console.log(`Modifying match '${match}'`);
return `<img alt="${g1}" src="${g2}" width=${Math.min(600, Math.floor(IMG_MAX_HEIGHT_PX * probeAspectRatio))} />`;
}
console.log(`Match '${match}' is ok/will not be modified`);
return match;
}
}

View File

@@ -9,26 +9,7 @@ on:
types: [opened, edited]
jobs:
try-minimize:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.FOSSIFYBOT_TOKEN }}
- uses: actions/setup-node@v4
with:
node-version: 16
- name: Install probe-image-size
run: npm i probe-image-size@7.2.3 --ignore-scripts
- name: Minimize simple images
uses: actions/github-script@v7
timeout-minutes: 3
with:
github-token: ${{ secrets.FOSSIFYBOT_TOKEN }}
script: |
const script = require('.github/workflows/image-minimizer.js');
await script({github, context});
call-image-minimizer-workflow:
uses: FossifyOrg/.github/.github/workflows/image-minimizer.yml@main
secrets:
FOSSIFYBOT_TOKEN: ${{ secrets.FOSSIFYBOT_TOKEN }}

View File

@@ -1,24 +1,12 @@
name: no-response
name: No Response
on:
schedule:
- cron: '0 0 * * *' # Runs daily at midnight
- cron: '0 12 * * *' # Runs daily at noon
workflow_dispatch:
jobs:
noResponse:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
with:
repo-token: ${{ secrets.FOSSIFYBOT_TOKEN }}
days-before-stale: -1
# Number of days of inactivity before an issue is closed for lack of response.
days-before-close: 14
only-labels: 'waiting for author'
stale-issue-label: 'waiting for author'
stale-pr-label: 'waiting for author'
remove-stale-when-updated: false
ignore-updates: true
close-issue-message: This issue has been automatically closed due to inactivity. We requested additional information but have not received a response from the original author. Without the requested details, we cannot proceed. If you have or find the information needed, please comment so we can reopen the issue.
close-pr-message: This pull request has been automatically closed due to inactivity. We requested additional information but have not received a response from the original author. Without the requested details, we cannot proceed. If you have the needed information or updates, please reopen the PR or comment so we can continue the review.
call-no-response-workflow:
uses: FossifyOrg/.github/.github/workflows/no-response.yml@main
secrets:
FOSSIFYBOT_TOKEN: ${{ secrets.FOSSIFYBOT_TOKEN }}

15
.github/workflows/pr-labeler.yml vendored Normal file
View File

@@ -0,0 +1,15 @@
name: PR Labeler
on:
pull_request_target:
types: [opened]
permissions:
contents: read
# write permission is not required as FOSSIFYBOT_TOKEN is used
jobs:
call-pr-labeler-workflow:
uses: FossifyOrg/.github/.github/workflows/pr-labeler.yml@main
secrets:
FOSSIFYBOT_TOKEN: ${{ secrets.FOSSIFYBOT_TOKEN }}

17
.github/workflows/release-commenter.yml vendored Normal file
View File

@@ -0,0 +1,17 @@
name: Release Commenter
on:
release:
types: [published]
permissions:
contents: read
issues: read
pull-requests: read
# write permission is not required as FOSSIFYBOT_TOKEN is used
jobs:
call-release-commenter:
uses: FossifyOrg/.github/.github/workflows/release-commenter.yml@main
secrets:
FOSSIFYBOT_TOKEN: ${{ secrets.FOSSIFYBOT_TOKEN }}

3
.gitignore vendored
View File

@@ -9,5 +9,4 @@
keystore.jks
keystore.properties
fastlane/fastlane.json
Gemfile
Gemfile.lock
fastlane/report.xml

View File

@@ -1,16 +1,59 @@
Changelog
==========
# Changelog
Version 1.0.0 *(2025-01-01)*
----------------------------
All notable changes to this project will be documented in this file.
* Fixed scrolling performance issues (https://github.com/FossifyOrg/Launcher/issues/65)
* Fixed various issues related to widgets (https://github.com/FossifyOrg/Launcher/issues/5, https://github.com/FossifyOrg/Launcher/issues/44, https://github.com/FossifyOrg/Launcher/issues/74)
* Other minor bug fixes and improvements
* Added more translations
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
Version 1.0.0 *(2024-10-16)*
----------------------------
## [1.1.1] - 2025-05-14
* Initial release
### Changed
- Updated translations
### Removed
- Removed redundant launcher settings icon from the app drawer ([#51])
## [1.1.0] - 2025-03-19
### Added
- Added double tap to lock screen feature ([#63])
### Changed
- Added more translations
## [1.0.1] - 2025-01-01
### Changed
- Other minor bug fixes and improvements
- Added more translations
### Fixed
- Fixed scrolling performance issues ([#65])
- Fixed various issues related to widgets ([#5], [#44], [#74])
## [1.0.0] - 2024-10-16
### Added
- Initial release
[Unreleased]: https://github.com/FossifyOrg/Launcher/compare/1.1.1...HEAD
[1.1.1]: https://github.com/FossifyOrg/Launcher/compare/1.1.0...1.1.1
[1.1.0]: https://github.com/FossifyOrg/Launcher/compare/1.0.1...1.1.0
[1.0.1]: https://github.com/FossifyOrg/Launcher/compare/1.0.0...1.0.1
[1.0.0]: https://github.com/FossifyOrg/Launcher/releases/tag/1.0.0
[#5]: https://github.com/FossifyOrg/Launcher/issues/5
[#44]: https://github.com/FossifyOrg/Launcher/issues/44
[#51]: https://github.com/FossifyOrg/Launcher/issues/51
[#63]: https://github.com/FossifyOrg/Launcher/issues/63
[#65]: https://github.com/FossifyOrg/Launcher/issues/65
[#74]: https://github.com/FossifyOrg/Launcher/issues/74

View File

@@ -2,7 +2,7 @@
Before you report something, read the reporting rules [here](https://github.com/FossifyOrg/General-Discussion#how-do-i-suggest-an-improvement-ask-a-question-or-report-an-issue) please.
### Contributing as a developer
Some instructions about code style and everything that has to be done to increase the change of your code getting accepted can be found at the [General Discussion](https://github.com/FossifyOrg/General-Discussion#contribution-rules-for-developers) section.
Some instructions about code style and everything that has to be done to increase the chance of your code getting accepted can be found at the [General Discussion](https://github.com/FossifyOrg/General-Discussion#contribution-rules-for-developers) section.
### Contributing as a non developer
In case you just want to for example improve a translation, you can find the way of doing it [here](https://github.com/FossifyOrg/General-Discussion#how-can-i-suggest-an-edit-to-a-file).

4
Gemfile Normal file
View File

@@ -0,0 +1,4 @@
source "https://rubygems.org"
gem "fastlane"
gem "fastlane-plugin-fossify", "~> 1.0"

231
Gemfile.lock Normal file
View File

@@ -0,0 +1,231 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.7)
base64
nkf
rexml
abbrev (0.1.2)
addressable (2.8.7)
public_suffix (>= 2.0.2, < 7.0)
artifactory (3.0.17)
atomos (0.1.3)
aws-eventstream (1.3.2)
aws-partitions (1.1097.0)
aws-sdk-core (3.223.0)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.992.0)
aws-sigv4 (~> 1.9)
base64
jmespath (~> 1, >= 1.6.1)
logger
aws-sdk-kms (1.100.0)
aws-sdk-core (~> 3, >= 3.216.0)
aws-sigv4 (~> 1.5)
aws-sdk-s3 (1.185.0)
aws-sdk-core (~> 3, >= 3.216.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.5)
aws-sigv4 (1.11.0)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
base64 (0.2.0)
claide (1.1.0)
colored (1.2)
colored2 (3.1.2)
commander (4.6.0)
highline (~> 2.0.0)
declarative (0.0.20)
digest-crc (0.7.0)
rake (>= 12.0.0, < 14.0.0)
domain_name (0.6.20240107)
dotenv (2.8.1)
emoji_regex (3.2.3)
excon (0.112.0)
faraday (1.10.4)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-httpclient (~> 1.0)
faraday-multipart (~> 1.0)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.0)
faraday-patron (~> 1.0)
faraday-rack (~> 1.0)
faraday-retry (~> 1.0)
ruby2_keywords (>= 0.0.4)
faraday-cookie_jar (0.0.7)
faraday (>= 0.8.0)
http-cookie (~> 1.0.0)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-multipart (1.1.0)
multipart-post (~> 2.0)
faraday-net_http (1.0.2)
faraday-net_http_persistent (1.2.0)
faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.3)
faraday_middleware (1.2.1)
faraday (~> 1.0)
fastimage (2.4.0)
fastlane (2.227.2)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.8, < 3.0.0)
artifactory (~> 3.0)
aws-sdk-s3 (~> 1.0)
babosa (>= 1.0.3, < 2.0.0)
bundler (>= 1.12.0, < 3.0.0)
colored (~> 1.2)
commander (~> 4.6)
dotenv (>= 2.1.1, < 3.0.0)
emoji_regex (>= 0.1, < 4.0)
excon (>= 0.71.0, < 1.0.0)
faraday (~> 1.0)
faraday-cookie_jar (~> 0.0.6)
faraday_middleware (~> 1.0)
fastimage (>= 2.1.0, < 3.0.0)
fastlane-sirp (>= 1.0.0)
gh_inspector (>= 1.1.2, < 2.0.0)
google-apis-androidpublisher_v3 (~> 0.3)
google-apis-playcustomapp_v1 (~> 0.1)
google-cloud-env (>= 1.6.0, < 2.0.0)
google-cloud-storage (~> 1.31)
highline (~> 2.0)
http-cookie (~> 1.0.5)
json (< 3.0.0)
jwt (>= 2.1.0, < 3)
mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (>= 2.0.0, < 3.0.0)
naturally (~> 2.2)
optparse (>= 0.1.1, < 1.0.0)
plist (>= 3.1.0, < 4.0.0)
rubyzip (>= 2.0.0, < 3.0.0)
security (= 0.1.5)
simctl (~> 1.6.3)
terminal-notifier (>= 2.0.0, < 3.0.0)
terminal-table (~> 3)
tty-screen (>= 0.6.3, < 1.0.0)
tty-spinner (>= 0.8.0, < 1.0.0)
word_wrap (~> 1.0.0)
xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.4.1)
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
fastlane-plugin-fossify (1.0.2)
abbrev
fastlane-sirp (1.0.0)
sysrandom (~> 1.0)
gh_inspector (1.1.3)
google-apis-androidpublisher_v3 (0.54.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-core (0.11.3)
addressable (~> 2.5, >= 2.5.1)
googleauth (>= 0.16.2, < 2.a)
httpclient (>= 2.8.1, < 3.a)
mini_mime (~> 1.0)
representable (~> 3.0)
retriable (>= 2.0, < 4.a)
rexml
google-apis-iamcredentials_v1 (0.17.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-playcustomapp_v1 (0.13.0)
google-apis-core (>= 0.11.0, < 2.a)
google-apis-storage_v1 (0.31.0)
google-apis-core (>= 0.11.0, < 2.a)
google-cloud-core (1.8.0)
google-cloud-env (>= 1.0, < 3.a)
google-cloud-errors (~> 1.0)
google-cloud-env (1.6.0)
faraday (>= 0.17.3, < 3.0)
google-cloud-errors (1.5.0)
google-cloud-storage (1.47.0)
addressable (~> 2.8)
digest-crc (~> 0.4)
google-apis-iamcredentials_v1 (~> 0.1)
google-apis-storage_v1 (~> 0.31.0)
google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0)
googleauth (1.8.1)
faraday (>= 0.17.3, < 3.a)
jwt (>= 1.4, < 3.0)
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
signet (>= 0.16, < 2.a)
highline (2.0.3)
http-cookie (1.0.8)
domain_name (~> 0.5)
httpclient (2.9.0)
mutex_m
jmespath (1.6.2)
json (2.11.3)
jwt (2.10.1)
base64
logger (1.7.0)
mini_magick (4.13.2)
mini_mime (1.1.5)
multi_json (1.15.0)
multipart-post (2.4.1)
mutex_m (0.3.0)
nanaimo (0.4.0)
naturally (2.2.1)
nkf (0.2.0)
optparse (0.6.0)
os (1.1.4)
plist (3.7.2)
public_suffix (6.0.2)
rake (13.2.1)
representable (3.2.0)
declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
rexml (3.4.1)
rouge (3.28.0)
ruby2_keywords (0.0.5)
rubyzip (2.4.1)
security (0.1.5)
signet (0.20.0)
addressable (~> 2.8)
faraday (>= 0.17.5, < 3.a)
jwt (>= 1.5, < 3.0)
multi_json (~> 1.10)
simctl (1.6.10)
CFPropertyList
naturally
sysrandom (1.0.5)
terminal-notifier (2.0.0)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
trailblazer-option (0.1.2)
tty-cursor (0.7.1)
tty-screen (0.8.2)
tty-spinner (0.9.3)
tty-cursor (~> 0.7)
uber (0.1.0)
unicode-display_width (2.6.0)
word_wrap (1.0.0)
xcodeproj (1.27.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.4.0)
rexml (>= 3.3.6, < 4.0)
xcpretty (0.4.1)
rouge (~> 3.28.0)
xcpretty-travis-formatter (1.0.1)
xcpretty (~> 0.2, >= 0.0.7)
PLATFORMS
ruby
x86_64-linux
DEPENDENCIES
fastlane
fastlane-plugin-fossify (~> 1.0)
BUNDLED WITH
2.6.8

2
app/.gitignore vendored
View File

@@ -1,3 +1,3 @@
/build
/foss
/prepaid
/gplay

View File

@@ -15,6 +15,13 @@ if (keystorePropertiesFile.exists()) {
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
}
fun hasSigningVars(): Boolean {
return providers.environmentVariable("SIGNING_KEY_ALIAS").orNull != null
&& providers.environmentVariable("SIGNING_KEY_PASSWORD").orNull != null
&& providers.environmentVariable("SIGNING_STORE_FILE").orNull != null
&& providers.environmentVariable("SIGNING_STORE_PASSWORD").orNull != null
}
android {
compileSdk = project.libs.versions.app.build.compileSDKVersion.get().toInt()
@@ -38,6 +45,15 @@ android {
storeFile = file(keystoreProperties.getProperty("storeFile"))
storePassword = keystoreProperties.getProperty("storePassword")
}
} else if (hasSigningVars()) {
register("release") {
keyAlias = providers.environmentVariable("SIGNING_KEY_ALIAS").get()
keyPassword = providers.environmentVariable("SIGNING_KEY_PASSWORD").get()
storeFile = file(providers.environmentVariable("SIGNING_STORE_FILE").get())
storePassword = providers.environmentVariable("SIGNING_STORE_PASSWORD").get()
}
} else {
logger.warn("Warning: No signing config found. Build will be unsigned.")
}
}
@@ -57,7 +73,7 @@ android {
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
if (keystorePropertiesFile.exists()) {
if (keystorePropertiesFile.exists() || hasSigningVars()) {
signingConfig = signingConfigs.getByName("release")
}
}
@@ -67,7 +83,7 @@ android {
productFlavors {
register("core")
register("foss")
register("prepaid")
register("gplay")
}
sourceSets {
@@ -99,7 +115,6 @@ android {
bundle {
language {
@Suppress("UnstableApiUsage")
enableSplit = false
}
}

View File

@@ -431,5 +431,17 @@
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity-alias>
<receiver
android:name=".receivers.LockDeviceAdminReceiver"
android:exported="true"
android:permission="android.permission.BIND_DEVICE_ADMIN">
<meta-data
android:name="android.app.device_admin"
android:resource="@xml/device_admin_policies" />
<intent-filter>
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
</intent-filter>
</receiver>
</application>
</manifest>

View File

@@ -3,6 +3,7 @@ package org.fossify.home.activities
import android.animation.ObjectAnimator
import android.annotation.SuppressLint
import android.app.Activity
import android.app.admin.DevicePolicyManager
import android.app.role.RoleManager
import android.appwidget.AppWidgetHost
import android.appwidget.AppWidgetManager
@@ -92,6 +93,7 @@ import org.fossify.home.interfaces.ItemMenuListener
import org.fossify.home.models.AppLauncher
import org.fossify.home.models.HiddenIcon
import org.fossify.home.models.HomeScreenGridItem
import org.fossify.home.receivers.LockDeviceAdminReceiver
import kotlin.math.abs
import kotlin.math.max
import kotlin.math.min
@@ -631,6 +633,23 @@ class MainActivity : SimpleActivity(), FlingListener {
}
}
fun homeScreenDoubleTapped(eventX: Float, eventY: Float) {
val (x, y) = binding.homeScreenGrid.root.intoViewSpaceCoords(eventX, eventY)
val clickedGridItem = binding.homeScreenGrid.root.isClickingGridItem(x.toInt(), y.toInt())
if (clickedGridItem != null) {
return
}
val devicePolicyManager =
getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
val isLockDeviceAdminActive = devicePolicyManager.isAdminActive(
ComponentName(this, LockDeviceAdminReceiver::class.java)
)
if (isLockDeviceAdminActive) {
devicePolicyManager.lockNow()
}
}
fun closeAppDrawer(delayed: Boolean = false) {
if (isAllAppsFragmentExpanded()) {
val close = {
@@ -871,6 +890,11 @@ class MainActivity : SimpleActivity(), FlingListener {
return super.onSingleTapUp(event)
}
override fun onDoubleTap(event: MotionEvent): Boolean {
(flingListener as MainActivity).homeScreenDoubleTapped(event.x, event.y)
return super.onDoubleTap(event)
}
override fun onFling(
event1: MotionEvent?,
event2: MotionEvent,
@@ -996,20 +1020,6 @@ class MainActivity : SimpleActivity(), FlingListener {
)
}
// add Launcher settings as an app
val drawable = getDrawableForPackageName(packageName)
val placeholderColor = calculateAverageColor(drawable!!.toBitmap())
val launcherSettings =
AppLauncher(
id = null,
title = getString(R.string.launcher_settings),
packageName = packageName,
activityName = "",
order = 0,
thumbnailColor = placeholderColor,
drawable = drawable.toBitmap().toDrawable(resources)
)
allApps.add(launcherSettings)
launchersDB.insertAll(allApps)
return allApps
}

View File

@@ -1,6 +1,8 @@
package org.fossify.home.activities
import android.annotation.SuppressLint
import android.app.admin.DevicePolicyManager
import android.content.ComponentName
import android.content.Intent
import android.os.Bundle
import org.fossify.commons.dialogs.RadioGroupDialog
@@ -25,7 +27,7 @@ import org.fossify.home.helpers.MAX_COLUMN_COUNT
import org.fossify.home.helpers.MAX_ROW_COUNT
import org.fossify.home.helpers.MIN_COLUMN_COUNT
import org.fossify.home.helpers.MIN_ROW_COUNT
import org.fossify.home.helpers.REPOSITORY_NAME
import org.fossify.home.receivers.LockDeviceAdminReceiver
import java.util.Locale
import kotlin.system.exitProcess
@@ -55,6 +57,7 @@ class SettingsActivity : SimpleActivity() {
setupPurchaseThankYou()
setupCustomizeColors()
setupUseEnglish()
setupDoubleTapToLock()
setupCloseAppDrawerOnOtherAppOpen()
setupDrawerColumnCount()
setupDrawerSearchBar()
@@ -107,7 +110,11 @@ class SettingsActivity : SimpleActivity() {
}
private fun setupUseEnglish() {
binding.settingsUseEnglishHolder.beVisibleIf((config.wasUseEnglishToggled || Locale.getDefault().language != "en") && !isTiramisuPlus())
binding.settingsUseEnglishHolder.beVisibleIf(
beVisible = (config.wasUseEnglishToggled || Locale.getDefault().language != "en")
&& !isTiramisuPlus()
)
binding.settingsUseEnglish.isChecked = config.useEnglish
binding.settingsUseEnglishHolder.setOnClickListener {
binding.settingsUseEnglish.toggle()
@@ -116,6 +123,35 @@ class SettingsActivity : SimpleActivity() {
}
}
private fun setupDoubleTapToLock() {
val devicePolicyManager = getSystemService(DEVICE_POLICY_SERVICE) as DevicePolicyManager
binding.settingsDoubleTapToLock.isChecked = devicePolicyManager.isAdminActive(
ComponentName(this, LockDeviceAdminReceiver::class.java)
)
binding.settingsDoubleTapToLockHolder.setOnClickListener {
val isLockDeviceAdminActive = devicePolicyManager.isAdminActive(
ComponentName(this, LockDeviceAdminReceiver::class.java)
)
if (isLockDeviceAdminActive) {
devicePolicyManager.removeActiveAdmin(
ComponentName(this, LockDeviceAdminReceiver::class.java)
)
} else {
val intent = Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN)
intent.putExtra(
DevicePolicyManager.EXTRA_DEVICE_ADMIN,
ComponentName(this, LockDeviceAdminReceiver::class.java)
)
intent.putExtra(
DevicePolicyManager.EXTRA_ADD_EXPLANATION,
getString(R.string.lock_device_admin_hint)
)
startActivity(intent)
}
}
}
private fun setupCloseAppDrawerOnOtherAppOpen() {
binding.settingsCloseAppDrawerOnOtherApp.isChecked = config.closeAppDrawer
binding.settingsCloseAppDrawerOnOtherAppHolder.setOnClickListener {

View File

@@ -9,7 +9,6 @@ import android.content.pm.LauncherApps
import android.content.res.ColorStateList
import android.graphics.Color
import android.graphics.Rect
import android.graphics.drawable.ColorDrawable
import android.net.Uri
import android.os.Process
import android.provider.Settings
@@ -39,12 +38,6 @@ import org.fossify.home.interfaces.ItemMenuListener
import org.fossify.home.models.HomeScreenGridItem
fun Activity.launchApp(packageName: String, activityName: String) {
// if this is true, launch the app settings
if (packageName == this.packageName) {
startActivity(Intent(applicationContext, SettingsActivity::class.java))
return
}
try {
Intent(Intent.ACTION_MAIN).apply {
addCategory(Intent.CATEGORY_LAUNCHER)
@@ -90,7 +83,7 @@ fun Activity.handleGridItemPopupMenu(
anchorView: View,
gridItem: HomeScreenGridItem,
isOnAllAppsFragment: Boolean,
listener: ItemMenuListener
listener: ItemMenuListener,
): PopupMenu {
val contextTheme = ContextThemeWrapper(this, getPopupMenuTheme())
return PopupMenu(contextTheme, anchorView, Gravity.TOP or Gravity.END).apply {
@@ -114,8 +107,9 @@ fun Activity.handleGridItemPopupMenu(
gridItem.type == ITEM_TYPE_ICON && isOnAllAppsFragment
menu.findItem(R.id.resize).isVisible = gridItem.type == ITEM_TYPE_WIDGET
menu.findItem(R.id.app_info).isVisible = gridItem.type == ITEM_TYPE_ICON
menu.findItem(R.id.uninstall).isVisible =
gridItem.type == ITEM_TYPE_ICON && canAppBeUninstalled(gridItem.packageName)
menu.findItem(R.id.uninstall).isVisible = gridItem.type == ITEM_TYPE_ICON
&& canAppBeUninstalled(gridItem.packageName)
&& gridItem.packageName != packageName
menu.findItem(R.id.remove).isVisible = !isOnAllAppsFragment
val launcherApps =
@@ -145,7 +139,7 @@ fun Activity.handleGridItemPopupMenu(
menu.add(R.id.group_shortcuts, Menu.NONE, Menu.NONE, shortcutInfo.getLabel())
.setIcon(
(iconDrawable ?: ColorDrawable(Color.TRANSPARENT))
(iconDrawable ?: Color.TRANSPARENT.toDrawable())
.toBitmap(width = iconSize, height = iconSize)
.toDrawable(resources)
)

View File

@@ -0,0 +1,13 @@
package org.fossify.home.receivers
import android.app.admin.DeviceAdminReceiver
import android.content.Context
import android.content.Intent
import org.fossify.home.R
class LockDeviceAdminReceiver : DeviceAdminReceiver() {
override fun onDisableRequested(context: Context, intent: Intent): CharSequence {
return context.getString(R.string.lock_device_admin_warning)
}
}

View File

@@ -136,6 +136,22 @@
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_double_tap_to_lock_holder"
style="@style/SettingsHolderSwitchStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/ripple_background">
<org.fossify.commons.views.MyMaterialSwitch
android:id="@+id/settings_double_tap_to_lock"
style="@style/SettingsSwitchStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/double_tap_to_lock" />
</RelativeLayout>
<include
android:id="@+id/settings_general_settings_divider"
layout="@layout/divider" />

View File

@@ -10,6 +10,6 @@
app:showAsAction="always" />
<item
android:id="@+id/more_apps_from_us"
android:title="@string/more_apps_from_us"
android:title="@string/more_fossify_apps"
app:showAsAction="never" />
</menu>

View File

@@ -14,4 +14,7 @@
<string name="close_app_drawer_on_app_open">Tanca el calaix d\'aplicacions en obrir una aplicació</string>
<string name="widget_too_big">El giny és massa gros per a la mida de la pantalla d\'inici actual</string>
<string name="home_screen_settings">Pantalla inicial</string>
<string name="double_tap_to_lock">Toc doble per a bloquejar la pantalla</string>
<string name="lock_device_admin_hint">Per a activar la funció de toc doble per a bloquejar la pantalla, heu de concedir permís d\'administració. Tingueu en compte que l\'aplicació no es pot desinstal·lar fins que no s\'elimini aquest permís.</string>
<string name="lock_device_admin_warning">Desactivant el permís d\'administració es desactivarà la funció de toc doble per a bloquejar la pantalla.</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="widget_too_big">Widget je příliš velký na aktuální velikost domovské obrazovky</string>
<string name="app_drawer_settings">Nabídka aplikací</string>
<string name="close_app_drawer_on_app_open">Zavřít nabídku aplikací po otevření aplikace</string>
<string name="lock_device_admin_hint">Chcete-li povolit funkci zamykání obrazovky dvojitým klepnutím, musíte udělit oprávnění správce. Upozornění: aplikaci nelze odinstalovat, dokud toto oprávnění neodeberete.</string>
<string name="lock_device_admin_warning">Deaktivací oprávnění správce zakážete funkci zamykání obrazovky dvojitým klepnutím.</string>
<string name="double_tap_to_lock">Klepněte dvakrát pro zamknutí obrazovky</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="home_screen_settings">Startbildschirm</string>
<string name="widget_too_big">Das Widget ist zu groß für den aktuellen Startbildschirm</string>
<string name="app_launcher_name">Launcher</string>
<string name="lock_device_admin_hint">Um die Funktion „Doppeltes Antippen zum Sperren des Bildschirms“ zu aktivieren, musst du die Administratorberechtigung erteilen. Beachte, dass die App nicht deinstalliert werden kann, bis diese Berechtigung entfernt wird.</string>
<string name="double_tap_to_lock">Doppeltes Antippen zum Sperren des Bildschirms</string>
<string name="lock_device_admin_warning">Durch Entfernen der Administratorberechtigung wird die Funktion „Doppeltes Antippen zum Sperren des Bildschirms“ deaktiviert.</string>
</resources>

View File

@@ -3,7 +3,7 @@
<string name="app_launcher_name">Εκκινητής</string>
<string name="launcher_settings">Ρυθμίσεις Εκκινητή</string>
<string name="app_info">Πληροφορίες εφαρμογής</string>
<string name="touch_hold_widget">Παρατεταμένο άγγιγμα στο Γραφικό και σύρετέ το στην αρχική σας οθόνη.</string>
<string name="touch_hold_widget">Πατήστε παρατεταμένα το γραφικό στοιχείο και σύρετέ το στην αρχική οθόνη</string>
<string name="uninstall">Απεγκατάσταση</string>
<string name="hide_icon">Απόκρυψη εικονιδίου</string>
<string name="add_hidden_icons">Προσθήκη κρυφών εικονιδίων</string>
@@ -14,4 +14,7 @@
<string name="close_app_drawer_on_app_open">Κλείστε το συρτάρι εφαρμογών κατά το άνοιγμα μιας εφαρμογής</string>
<string name="home_screen_settings">Αρχική οθόνη</string>
<string name="widget_too_big">Το γραφικό είναι πολύ μεγάλο για το τρέχον μέγεθος της αρχικής οθόνης</string>
<string name="lock_device_admin_hint">Για να ενεργοποιήσετε τη λειτουργία διπλής βρύσης για κλείδωμα οθόνης, πρέπει να παραχωρήσετε άδεια διαχειριστή. Λάβετε υπόψη ότι δεν είναι δυνατή η κατάργηση εγκατάστασης της εφαρμογής μέχρι να καταργηθεί αυτή η άδεια.</string>
<string name="double_tap_to_lock">Διπλό πάτημα για κλείδωμα οθόνης</string>
<string name="lock_device_admin_warning">Η απενεργοποίηση της άδειας διαχειριστή θα απενεργοποιήσει τη λειτουργία διπλής βρύσης για κλείδωμα οθόνης.</string>
</resources>

View File

@@ -1,2 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="app_launcher_name">Lanĉilo</string>
<string name="launcher_settings">Lanĉilaj agordoj</string>
<string name="touch_hold_widget">Longe premu la fenestraĵon kaj treni ĝin sur vian hejmekranon</string>
<string name="uninstall">Malinstali</string>
<string name="hide_icon">Kaŝi bildeton</string>
<string name="hidden_icons">Kaŝitaj bildetoj</string>
<string name="app_drawer_settings">Aplikaĵa tirkesto</string>
<string name="close_app_drawer_on_app_open">Fermi aplikaĵan tirkeston kiam aplikaĵo estas malfermita</string>
<string name="home_screen_settings">Hejmekrano</string>
<string name="widget_too_big">La fenestraĵo tro grandas por la aktuala grandeco de la hejmekrano</string>
<string name="add_hidden_icons">Aldoni kaŝitajn bildetojn</string>
<string name="manage_hidden_icons">Administri kaŝitajn bildetojn</string>
<string name="hidden_icons_placeholder">Ne eblas malinstali kelkajn aplikaĵojn pro sistemaj limigoj, sed almenaŭ eblas kaŝi iliajn bildetojn por eviti vidi ilin.</string>
<string name="double_tap_to_lock">Duoble frapetu por ŝlosi la ekranon</string>
<string name="lock_device_admin_hint">Por aktivigi la funkcion de ŝlosado de ekrano per duobla frapeto, endas koncedi administrajn permesojn. Notu, ke ne eblas malinstali la aplikaĵon antaŭ senvalidigi tiujn permesojn.</string>
<string name="lock_device_admin_warning">Malŝalto de administraj permesoj malŝaltos la funkcion de ŝlosado de ekrano per duobla frapeto.</string>
<string name="app_info">Aplikaĵaj informoj</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="close_app_drawer_on_app_open">Cerrar el cajón de aplicaciones al abrir una aplicación</string>
<string name="widget_too_big">El widget es demasiado grande para el tamaño actual de la pantalla de inicio</string>
<string name="home_screen_settings">Pantalla de inicio</string>
<string name="double_tap_to_lock">Toca dos veces para bloquear la pantalla</string>
<string name="lock_device_admin_warning">Al desactivar el permiso de administrador se desactivará la función de doble toque para bloquear la pantalla.</string>
<string name="lock_device_admin_hint">Para activar la función de doble toque para bloquear la pantalla, debes conceder un permiso de administrador. Tenga en cuenta que la aplicación no se puede desinstalar hasta que se elimine este permiso.</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="close_app_drawer_on_app_open">Rakenduse avamisel sulge rakenduste kausta vaade</string>
<string name="home_screen_settings">Avaleht</string>
<string name="widget_too_big">Vidin on liiga suur praeguse ekraanimõõdu jaoks</string>
</resources>
<string name="double_tap_to_lock">Topeltpuudutus lukustusvaates</string>
<string name="lock_device_admin_warning">Peakasutaja õiguste eemaldamine lülitab välja võimaluse kasutada lukustusvaates topeltpuudutust.</string>
<string name="lock_device_admin_hint">Kui soovid lukustusvaates kasutada topeltpuudutust, siis vajab rakendus peakasutaja õigusi. Palun arvesta, et rakenduse eemaldamiseks pead esmalt eemaldama need õigused.</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="add_hidden_icons">Gehitu ezkutuko ikonoak</string>
<string name="manage_hidden_icons">Kudeatu ezkutuko ikonoak</string>
<string name="hidden_icons_placeholder">Aplikazio batzuk ezin dira desinstalatu sistemaren murrizketak direla eta, baina gutxienez haien ikonoak ezkutatu ditzakezu ez ikusteko.</string>
</resources>
<string name="double_tap_to_lock">Sakatu bi aldiz pantaila blokeatzeko</string>
<string name="lock_device_admin_hint">Bi aldiz sakatuta pantaila blokeatzeko, kudeatzaile baimena eman behar duzu. Kontuan izan baimen hau kendu arte ezingo duzula aplikazioa telefonotik kendu.</string>
<string name="lock_device_admin_warning">Kudeatzaile baimena desaktibatzean, pantaila blokeatzeko bi aldiz ikutzea desaktibatu egingo da.</string>
</resources>

View File

@@ -3,11 +3,18 @@
<string name="app_launcher_name">Käynnistin</string>
<string name="launcher_settings">Käynnistimen asetukset</string>
<string name="app_info">Sovelluksen tiedot</string>
<string name="touch_hold_widget">Paina widgettiä pitkään ja vedä se aloitusnäytöllesi</string>
<string name="touch_hold_widget">Paina vimpainta pitkään ja vedä se aloitusnäytöllesi</string>
<string name="uninstall">Poista asennus</string>
<string name="hide_icon">Piilota kuvake</string>
<string name="add_hidden_icons">Lisää piilotettuja kuvakkeita</string>
<string name="manage_hidden_icons">Hallitse piilotettuja kuvakkeita</string>
<string name="hidden_icons">Piilotetut kuvakkeet</string>
<string name="hidden_icons_placeholder">Joitakin sovelluksia ei ole järjestelmärajoitusten vuoksi mahdollista poistaa, mutta voit kuitenkin piilottaa niiden kuvakkeet näkyvistä.</string>
<string name="widget_too_big">Vimpain on liian suuri nykyiseen aloitusnäytön kokoon</string>
<string name="home_screen_settings">Kotinäyttö</string>
<string name="close_app_drawer_on_app_open">Sulje sovellusvedin, kun uusi sovellus avataan</string>
<string name="app_drawer_settings">Sovellusvedin</string>
<string name="lock_device_admin_hint">Näytön kaksoisnapautuslukitus vaatii pääkäyttäjäoikeuksia. Huomio, että sovellusta ei voida poistaa, ennen kuin tämä oikeus on poistettu.</string>
<string name="double_tap_to_lock">Kaksoisnapauta lukitaksesi näytön</string>
<string name="lock_device_admin_warning">Pääkäyttäjäoikeuden poiskytkentä, estää kaksoisnapautuslukituksen toiminnan.</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="close_app_drawer_on_app_open">Fermer le tiroir de l\'appli à l\'ouverture d\'une application</string>
<string name="widget_too_big">Le widget est trop grand pour la taille actuelle de l\'écran</string>
<string name="home_screen_settings">Écran d\'accueil</string>
</resources>
<string name="lock_device_admin_hint">Pour activer la fonction de double appui pour verrouiller l\'écran, vous devez accorder l\'autorisation d\'administrateur. Notez que l\'application ne peut pas être désinstallée tant que cette autorisation n\'est pas supprimée.</string>
<string name="lock_device_admin_warning">La désactivation de l\'autorisation d\'administrateur désactivera la fonction de double appui pour verrouiller l\'écran.</string>
<string name="double_tap_to_lock">Appuyez deux fois pour verrouiller l\'écran</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="home_screen_settings">Scáileán baile</string>
<string name="widget_too_big">Tá an ghiuirléid ró-mhór do mhéid an scáileáin baile reatha</string>
<string name="hide_icon">Folaigh deilbhín</string>
<string name="double_tap_to_lock">Tapáil faoi dhó chun an scáileán a ghlasáil</string>
<string name="lock_device_admin_warning">Má dhéantar cead riaracháin a dhíghníomhachtú, díchumasófar an sconna dúbailte chun an ghné scáileáin a ghlasáil.</string>
<string name="lock_device_admin_hint">Chun an sconna dúbailte a chumasú chun gné an scáileáin a ghlasáil, ní mór duit cead riaracháin a dheonú. Tabhair faoi deara nach féidir an aip a dhíshuiteáil go dtí go mbaintear an cead seo.</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="close_app_drawer_on_app_open">ऐप खोलने पर ऐप ड्रॉअर बंद कर दें</string>
<string name="home_screen_settings">होम स्क्रीन</string>
<string name="widget_too_big">वर्तमान होम स्क्रीन आकार के लिए विजेट बहुत बड़ा है</string>
<string name="lock_device_admin_hint">स्क्रीन लॉक करने के लिए डबल-टैप करने वाले फीचर को सक्षम करने के लिए प्रशासनिक अनुमति आवश्यक है। ध्यान रखें कि ये ऐप अनइंस्टॉल नहीं हो पाएगा जब तक ये अनुमति रहेगी।</string>
<string name="double_tap_to_lock">स्क्रीन लॉक करने के लिए डबल टैप करें</string>
<string name="lock_device_admin_warning">प्रशासनिक अनुमतियाँ हटाये जाने पर डबल-टैप स्क्रीन लॉक सुविधा अक्षम हो जायेगी।</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="app_drawer_settings">Ladica aplikacije</string>
<string name="close_app_drawer_on_app_open">Zatvori ladicu aplikacija pri otvaranju aplikacije</string>
<string name="widget_too_big">Widget je prevelik za trenutnu veličinu početnog ekrana</string>
<string name="double_tap_to_lock">Dodirni dvaput za zaključavanje ekrana</string>
<string name="lock_device_admin_hint">Za aktiviranje funkcije dvostrukog dodira za zaključavanje ekrana moraš odobriti administratorsku dozvolu. Imaj na umu da se aplikacija ne može deinstalirati sve dok se ova dozvola ne ukloni.</string>
<string name="lock_device_admin_warning">Uklanjanje administratorske dozvole će deaktivirati funkciju dvostrukog dodira za zaključavanje ekrana.</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="close_app_drawer_on_app_open">Alkalmazásfiók bezárása egy alkalmazás megnyitásakor</string>
<string name="widget_too_big">A modul túl nagy az aktuális kezdőképernyő méretéhez</string>
<string name="home_screen_settings">Kezdőképernyő</string>
<string name="lock_device_admin_warning">Az rendszergazdai engedély kikapcsolása letiltja a képernyő lezárásához szükséges dupla koppintás funkciót.</string>
<string name="double_tap_to_lock">Dupla koppintás a képernyő zárolásához</string>
<string name="lock_device_admin_hint">A képernyőzárolás dupla koppintás funkciójának engedélyezéséhez rendszergazdai hozzáférést kell adnia. Vegye figyelembe, hogy az alkalmazás nem távolítható el, amíg ez az engedély nem kerül eltávolításra.</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="app_drawer_settings">Laci aplikasi</string>
<string name="widget_too_big">Widget terlalu besar untuk ukuran layar beranda saat ini</string>
<string name="home_screen_settings">Layar beranda</string>
</resources>
<string name="double_tap_to_lock">Ketuk dua kali untuk mengunci layar</string>
<string name="lock_device_admin_warning">Menonaktifkan izin admin akan menonaktifkan fitur ketuk dua kali untuk mengunci layar.</string>
<string name="lock_device_admin_hint">Untuk mengaktifkan fitur ketuk dua kali untuk mengunci layar, Anda perlu memberikan izin admin. Perhatikan bahwa aplikasi tidak dapat dihapus sampai izin ini dicabut.</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="widget_too_big">Il widget è troppo grande per le dimensioni attuali della schermata principale</string>
<string name="app_launcher_name">Launcher</string>
<string name="home_screen_settings">Schermata iniziale</string>
<string name="lock_device_admin_hint">Per abilitare la funzione di doppio tocco per bloccare lo schermo è necessario garantire i permessi di amministratore. L\'app non può essere disinstallata finché non vengono rimossi i permessi.</string>
<string name="double_tap_to_lock">Doppio tocco per bloccare lo schermo</string>
<string name="lock_device_admin_warning">Disattivando i permessi di amministratore disabiliterai la funzionalità di doppio tocco per bloccare lo schermo.</string>
</resources>

View File

@@ -9,5 +9,12 @@
<string name="add_hidden_icons">הוסף אייקונים נסתרים</string>
<string name="manage_hidden_icons">ניהול אייקונים נסתרים</string>
<string name="hidden_icons">אייקונים נסתרים</string>
<string name="hidden_icons_placeholder">חלק מהאפליקציות לא ניתנות להסרה עקב הגבלות מערכת, לפחות אתה יכול להחביא את האייקונים כדי לא לראותם במסך הבית.</string>
<string name="hidden_icons_placeholder">לא ניתן להסיר אפליקציות מסוימות עקב מגבלות מערכת, אבל אתה יכול לפחות להסתיר את הסמלים שלהן כדי להימנע מלראות אותם.</string>
<string name="close_app_drawer_on_app_open">סגור את מגירת האפליקציות בעת פתיחת אפליקציה</string>
<string name="home_screen_settings">מסך בית</string>
<string name="double_tap_to_lock">הקש פעמיים כדי לנעול את המסך</string>
<string name="lock_device_admin_hint">כדי להפעיל הקשה כפולה לנעילת מסך, עליך להעניק הרשאת מנהל. שימו לב שלא ניתן להסיר את האפליקציה עד להסרת ההרשאה הזו.</string>
<string name="lock_device_admin_warning">ביטול הרשאת מנהל ישבית את אפשרות ההקשה הכפולה לנעילת מסך.</string>
<string name="app_drawer_settings">מגירת אפליקציות</string>
<string name="widget_too_big">הווידג\'ט גדול מדי לגודל מסך הבית הנוכחי</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="home_screen_settings">Beginscherm</string>
<string name="widget_too_big">Widget is te groot voor de huidige afmetingen van het beginscherm</string>
<string name="app_launcher_name">Launcher</string>
<string name="lock_device_admin_warning">Als je het recht voor apparaatbeheer niet toekent, wordt de functie \'dubbeltikken om het scherm te vergrendelen\' uitgeschakeld.</string>
<string name="lock_device_admin_hint">Om de functie \'Dubbeltikken om het scherm te vergrendelen\' in te schakelen, moet je het recht voor apparaatbeheer toekennen. De app kan dan niet worden verwijderd totdat deze toestemming is verwijderd.</string>
<string name="double_tap_to_lock">Dubbeltikken om het scherm te vergrendelen</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="home_screen_settings">Ekran główny</string>
<string name="widget_too_big">Widżet jest za duży dla aktualnego rozmiaru ekranu głównego</string>
<string name="app_launcher_name">Launcher</string>
<string name="double_tap_to_lock">Naciśnij dwukrotnie, aby zablokować ekran</string>
<string name="lock_device_admin_hint">Aby włączyć funkcję dwukrotnego naciśnięcia w celu zablokowania ekranu, musisz udzielić uprawnienia administratora. Uwaga: aplikacja nie może zostać odinstalowana, dopóki to uprawnienie nie zostanie usunięte.</string>
<string name="lock_device_admin_warning">Dezaktywacja uprawnienia administratora spowoduje wyłączenie funkcji dwukrotnego naciśnięcia w celu zablokowania ekranu.</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="home_screen_settings">Tela inicial</string>
<string name="widget_too_big">O widget é muito grande para o tamanho atual da tela inicial</string>
<string name="app_launcher_name">Launcher</string>
</resources>
<string name="double_tap_to_lock">Toque duas vezes para bloquear a tela</string>
<string name="lock_device_admin_hint">Para habilitar o recurso de toque duplo para bloquear a tela, você precisa conceder permissão de administrador. Observe que o aplicativo não pode ser desinstalado até que essa permissão seja removida.</string>
<string name="lock_device_admin_warning">Desativar a permissão de administrador desabilitará o recurso de toque duplo para bloquear a tela.</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="close_app_drawer_on_app_open">Fechar menu de aplicações ao abrir uma aplicação</string>
<string name="widget_too_big">O widget é muito grande para o ecrã disponível</string>
<string name="home_screen_settings">Ecrã inicial</string>
<string name="double_tap_to_lock">Dois toques para bloquear o ecrã</string>
<string name="lock_device_admin_hint">Para ativar esta funcionalidade, tem que permitir o acesso de administração. Tenha em atenção se que não conseguirá desinstalar a aplicação sem antes revogar esta permissão.</string>
<string name="lock_device_admin_warning">Ao desativar a permissão, também desativa a possibilidade de bloquear o ecrã com dois toques.</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="close_app_drawer_on_app_open">Закрывать боковую панель при открытии приложения</string>
<string name="home_screen_settings">Домашний экран</string>
<string name="widget_too_big">Виджет слишком велик для текущего размера домашнего экрана</string>
</resources>
<string name="double_tap_to_lock">Двойное нажатие блокирует экран</string>
<string name="lock_device_admin_hint">Для включения функции блокировки экрана двойным нажатием необходимы права администратора. Учтите, что приложение нельзя будет удалить, пока данное разрешение не будет отключено.</string>
<string name="lock_device_admin_warning">Удаление прав администратора приведёт к отключению функции блокировки экрана двойным нажатием.</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="close_app_drawer_on_app_open">Stäng applådan när en app öppnas</string>
<string name="home_screen_settings">Startskärm</string>
<string name="widget_too_big">Widgeten är för stor för startskärmens aktuella storlek</string>
<string name="lock_device_admin_hint">Om du vill aktivera funktionen dubbeltryck för att låsa skärmen måste du bevilja administratörsbehörighet. Observera att appen inte kan avinstalleras förrän behörigheten har tagits bort.</string>
<string name="double_tap_to_lock">Dubbeltryck för att låsa skärmen</string>
<string name="lock_device_admin_warning">Om du inaktiverar administratörsbehörigheten inaktiveras funktionen dubbeltryck för att låsa skärmen.</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="close_app_drawer_on_app_open">Bir uygulama açıldığında uygulama çekmecesini kapat</string>
<string name="home_screen_settings">Ana ekran</string>
<string name="widget_too_big">Widget, şu anki ana ekran boyutu için çok büyük</string>
</resources>
<string name="double_tap_to_lock">Kilit ekranına çift dokun</string>
<string name="lock_device_admin_warning">Yönetici iznini devre dışı bırakmak, kilit ekranı özelliğini devre dışı bırakır.</string>
<string name="lock_device_admin_hint">Kilit ekranı çift dokun özelliğini etkinleştirmek için yönetici izni vermeniz gerekir. Bu izin uygulama kaldırılana kadar kaldırılmayacağını unutmayın.</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="close_app_drawer_on_app_open">Закривати панель застосунок при відкриті застосунку</string>
<string name="home_screen_settings">Домашній екран</string>
<string name="widget_too_big">Віджет надто великий для поточного розміру домашнього екрану</string>
</resources>
<string name="lock_device_admin_warning">Скасування прав адміністратора вимкне функцію подвійного дотику для блокування екрана.</string>
<string name="double_tap_to_lock">Двічі торкніться, щоб заблокувати екран</string>
<string name="lock_device_admin_hint">Щоб увімкнути функцію блокування екрана подвійним дотиком, вам потрібно надати права адміністратора. Зверніть увагу, що застосунок не можна буде видалити, поки цей дозвіл не буде скасовано.</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="close_app_drawer_on_app_open">打开抽屉内应用时关闭抽屉</string>
<string name="home_screen_settings">主屏幕</string>
<string name="widget_too_big">微件对当前屏幕尺寸而言太大了</string>
<string name="double_tap_to_lock">双击锁屏</string>
<string name="lock_device_admin_warning">停用管理员权限将禁用双击锁屏功能。</string>
<string name="lock_device_admin_hint">要启用双击锁屏功能,您需要授予管理员权限。请注意,在移除此权限之前无法卸载该应用。</string>
</resources>

View File

@@ -14,4 +14,7 @@
<string name="close_app_drawer_on_app_open">開啟應用程式時關閉應用程式抽屜</string>
<string name="home_screen_settings">主畫面</string>
<string name="widget_too_big">小工具對於目前主畫面大小來說太大</string>
<string name="double_tap_to_lock">輕觸兩下以鎖定螢幕</string>
<string name="lock_device_admin_warning">停用管理權限將會停用輕觸兩下以鎖定螢幕的功能。</string>
<string name="lock_device_admin_hint">要啟用輕觸兩下以鎖定螢幕的功能,您必須授予管理權限。請注意,在移除此權限前,無法解除安裝應用程式。</string>
</resources>

View File

@@ -14,6 +14,9 @@
<string name="close_app_drawer_on_app_open">Close app drawer on opening an app</string>
<string name="home_screen_settings">Home screen</string>
<string name="widget_too_big">Widget is too big for current home screen size</string>
<string name="double_tap_to_lock">Double tap to lock screen</string>
<string name="lock_device_admin_hint">To enable the double tap to lock screen feature, you need to grant admin permission. Note that the app cannot be uninstalled until this permission is removed.</string>
<string name="lock_device_admin_warning">Deactivating admin permission will disable the double tap to lock screen feature.</string>
<!--
Haven't found some strings? There's more at
https://github.com/FossifyOrg/Commons/tree/master/commons/src/main/res

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<device-admin>
<uses-policies>
<force-lock />
</uses-policies>
</device-admin>

View File

@@ -1,38 +1,12 @@
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
# https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
# https://docs.fastlane.tools/plugins/available-plugins
#
# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane
default_platform(:android)
platform :android do
desc "Runs all the tests"
lane :test do
gradle(task: "test")
end
desc 'Run unit & instrumentation tests'
lane(:test) { test_android }
desc "Submit a new Beta Build to Crashlytics Beta"
lane :beta do
gradle(task: "clean assembleRelease")
crashlytics
# sh "your_script.sh"
# You can also use other beta testing services here
end
desc 'Build & deploy AAB to Google Play (includes metadata)'
lane(:deploy) { deploy_android }
desc "Deploy a new version to the Google Play"
lane :deploy do
gradle(task: "clean assembleRelease")
upload_to_play_store
end
desc 'Push Play Store metadata'
lane(:metadata) { metadata_android }
end

48
fastlane/README.md Normal file
View File

@@ -0,0 +1,48 @@
fastlane documentation
----
# Installation
Make sure you have the latest version of the Xcode command line tools installed:
```sh
xcode-select --install
```
For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane)
# Available Actions
## Android
### android test
```sh
[bundle exec] fastlane android test
```
Run unit & instrumentation tests
### android deploy
```sh
[bundle exec] fastlane android deploy
```
Build & deploy AAB to Google Play (includes metadata)
### android metadata
```sh
[bundle exec] fastlane android metadata
```
Push Play Store metadata
----
This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run.
More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools).
The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools).

View File

@@ -1 +0,0 @@
* প্রাথমিক প্রকাশ

View File

@@ -1 +0,0 @@
* Llançament inicial

View File

@@ -1 +0,0 @@
Fossify Launcher

View File

@@ -1 +0,0 @@
* Prvotní vydání

View File

@@ -1 +0,0 @@
Launcher Fossify

View File

@@ -1 +0,0 @@
* Erste Veröffentlichung

View File

@@ -7,7 +7,7 @@ Passe deinen Startbildschirm mit dynamischen Farbschemas, eigenen Farben und Lay
Integriere ganz einfach Widgets mit vollständig veränderbarer Größe. Egal, ob du Uhren, Kalender oder andere praktische Tools brauchst, Fossify Launcher sorgt dafür, dass sie sich nahtlos in dein Startbildschirm-Design einfügen.<br><br>
<b>📱 KEIN UNERWÜNSCHTES DURCHEINANDER:</b><br>
Verwalte deine Apps mühelos, indem du sie mit nur wenigen Fingertipps ausblendest oder deinstallierst, damit dein Startbildschirm übersichtlich bleibt.<br><br>
<b>🔒 PRIVATSPHÄRE UND SICHERHEIT:</b><br>
<b>🔒 DATENSCHUTZ UND SICHERHEIT:</b><br>
Deine Privatsphäre steht im Mittelpunkt von Fossify Launcher. Ohne Internetzugang und ohne aufdringliche Berechtigungen bleiben deine Daten bei dir. Kein Tracking, keine Werbung nur ein Launcher, der deine Privatsphäre respektiert.<br><br>
<b>🌐 OPEN-SOURCE-GARANTIE:</b><br>
Fossify Launcher wurde auf einer Open-Source-Basis entwickelt, die es dir ermöglicht, unseren Code auf GitHub zu überprüfen, was das Vertrauen und eine Gemeinschaft fördert, die sich für den Datenschutz einsetzt.<br><br>

View File

@@ -1 +1 @@
Startbildschirm mit einem schnellen, werbefreien Open-Source-Launcher anpassen
Startbildschirm mit einem schnellen, werbefreien, quelloffenen Launcher anpassen

View File

@@ -1 +0,0 @@
Fossify Launcher

View File

@@ -0,0 +1,2 @@
* Added double tap to lock screen feature
* Added more translations

View File

@@ -0,0 +1,7 @@
Changed:
• Updated translations
Removed:
• Removed redundant launcher settings icon from the app drawer

View File

@@ -1 +1 @@
Fossify Launcher
Fossify Launcher Beta

View File

@@ -0,0 +1 @@
Tajloru vian hejmekranon helpe de rapida, senreklama, malfermitkoda lanĉilo

View File

@@ -1 +0,0 @@
* Versión inicial

View File

@@ -1 +0,0 @@
Fossify Launcher

View File

@@ -1 +0,0 @@
* Esmane versioon

View File

@@ -1 +0,0 @@
Fossify käivitaja

View File

@@ -0,0 +1,18 @@
Fossify Launcher est votre passerelle vers une expérience d'écran d'accueil rapide, personnalisée et respectueuse de la vie privée. Pas de publicités, pas de surabondance, juste un lanceur fluide et efficace conçu pour s'adapter à votre style et à vos préférences uniques.<br><br>
<b>🚀 NAVIGATION ULTRA-RAPIDE :</b><br>
Naviguez sur votre appareil avec rapidité et précision. Fossify Launcher est optimisé pour être réactif et fluide, vous donnant un accès instantané à vos applications préférées sans décalage.<br><br>
<b>🎨 PERSONNALISATION COMPLÈTE :</b><br>
Personnalisez votre écran d'accueil avec des thèmes dynamiques, des couleurs personnalisées et des mises en page. Personnalisez votre lanceur en fonction de votre style avec des outils faciles à utiliser qui vous permettent de créer une configuration vraiment unique.<br><br>
<b>🖼️ PRISE EN CHARGE COMPLÈTE DES WIDGETS :</b><br>
Intégrez facilement des widgets entièrement redimensionnables. Que vous ayez besoin d'horloges, de calendriers ou d'autres outils pratiques, Fossify Launcher veille à ce qu'ils s'intègrent parfaitement dans la conception de votre écran d'accueil.<br><br>
<b>📱 PAS D'ENCOMBREMENT INDÉSIRABLE :</b><br>
Gérez facilement vos applications en les masquant ou en les désinstallant en quelques clics, pour garder votre écran d'accueil organisé et sans encombrement.<br><br>
<b>🔒 CONFIDENTIALITÉ ET SÉCURITÉ :</b><br>
Votre vie privée est au cœur de Fossify Launcher. Sans accès à Internet et sans autorisations intrusives, vos données restent avec vous. Pas de suivi, pas de publicités : juste un lanceur conçu pour respecter votre vie privée.<br><br>
<b>🌐 ASSURANCE OPEN SOURCE :</b><br>
Fossify Launcher est construit sur une base open source, vous permettant de consulter notre code sur GitHub, favorisant la confiance et une communauté engagée en faveur de la confidentialité.<br><br>
Trouvez votre équilibre entre vitesse, personnalisation et confidentialité avec Fossify Launcher.<br><br>
Découvrez d'autres applications Fossify : https://www.fossify.org<br>
Code open source : https://www.github.com/FossifyOrg<br>
Rejoignez la communauté sur Reddit : https://www.reddit.com/r/Fossify<br>
Connectez-vous sur Telegram : https://t.me/Fossify<br>

View File

@@ -1 +1 @@
Personnalisez votre écran d'accueil avec un lanceur rapide, sans pubs, et open-source
Paramétrez votre écran d'accueil avec un lanceur rapide, sans pub, open-source

View File

@@ -1 +0,0 @@
Fossify Lanceur

View File

@@ -1 +0,0 @@
* Eisiúint tosaigh

View File

@@ -1 +0,0 @@
Fossify Launcher

View File

@@ -1 +0,0 @@
* Versión inicial

View File

@@ -1 +0,0 @@
Fossify Launcher

View File

@@ -1 +0,0 @@
* Rilis awal

View File

@@ -1 +0,0 @@
* Versione iniziale

View File

@@ -1 +0,0 @@
Launcher Fossify

View File

@@ -1 +0,0 @@
Fossify Launcher

View File

@@ -1 +0,0 @@
Fossify Launcher

View File

@@ -0,0 +1 @@
Настройте свой домашний экран с быстрым лаунчером без рекламы с открытым исходным кодом

View File

@@ -0,0 +1 @@
Anpassa startskärmen med ett snabbt, reklamfritt startprogram med öppen källkod

View File

@@ -0,0 +1 @@
Ana ekranınızı hızlı, reklamsız, açık kaynaklı bir başlatıcı ile özelleştirin

View File

@@ -1 +0,0 @@
* Початковий випуск

View File

@@ -1 +0,0 @@
Fossify Лаунчер

View File

@@ -1 +0,0 @@
* 首次发布

View File

@@ -1 +0,0 @@
Fossify 启动器

View File

@@ -1 +0,0 @@
Fossify 啟動器

View File

@@ -8,9 +8,9 @@ detekt = "1.23.3"
#Room
room = "2.6.1"
#Fossify
commons = "8038e3277e"
commons = "2.0.0"
#Gradle
gradlePlugins-agp = "8.7.3"
gradlePlugins-agp = "8.10.0"
#build
app-build-compileSDKVersion = "34"
app-build-targetSDK = "34"
@@ -19,8 +19,8 @@ app-build-javaVersion = "VERSION_17"
app-build-kotlinJVMTarget = "17"
#versioning
app-version-appId = "org.fossify.home"
app-version-versionCode = "2"
app-version-versionName = "1.0.1"
app-version-versionCode = "4"
app-version-versionName = "1.1.1"
[libraries]
#Room
androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" }

View File

Binary file not shown.

View File

@@ -1,6 +1,7 @@
#Mon Aug 01 22:01:46 CEST 2022
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

297
gradlew vendored
View File

@@ -1,7 +1,7 @@
#!/usr/bin/env sh
#!/bin/sh
#
# Copyright 2015 the original author or authors.
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -15,69 +15,104 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
##
## Gradle start up script for UN*X
##
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
MAX_FD=maximum
warn () {
echo "$*"
}
} >&2
die () {
echo
echo "$*"
echo
exit 1
}
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
@@ -87,9 +122,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD="$JAVA_HOME/bin/java"
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -98,88 +133,120 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
JAVACMD=java
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=`expr $i + 1`
done
case $i in
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=`save "$@"`
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"

37
gradlew.bat vendored
View File

@@ -13,8 +13,10 @@
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%" == "" @echo off
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@@ -25,7 +27,8 @@
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@@ -40,13 +43,13 @@ if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto execute
if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
@@ -56,11 +59,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
@@ -75,13 +78,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal