├── .editorconfig ├── .fossify └── release-marker.txt ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.yml │ ├── config.yml │ └── feature_request.yml ├── dependabot.yml └── workflows │ ├── image-minimizer.yml │ ├── no-response.yml │ ├── pr-labeler.yml │ ├── pr.yml │ ├── prepare-release-pr.yml │ ├── release.yml │ └── testing-build.yml ├── .gitignore ├── CHANGELOG.md ├── CONTRIBUTING.md ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle.kts ├── detekt-baseline.xml ├── lint-baseline.xml ├── proguard-rules.pro ├── schemas │ └── org.fossify.home.databases.AppsDatabase │ │ └── 5.json └── src │ ├── debug │ └── res │ │ └── values │ │ └── strings.xml │ ├── foss │ └── res │ │ └── values │ │ └── bools.xml │ ├── gplay │ └── res │ │ └── values │ │ └── bools.xml │ └── main │ ├── AndroidManifest.xml │ ├── ic_launcher-playstore.png │ ├── kotlin │ └── org │ │ └── fossify │ │ └── home │ │ ├── activities │ │ ├── HiddenIconsActivity.kt │ │ ├── MainActivity.kt │ │ ├── SettingsActivity.kt │ │ ├── SimpleActivity.kt │ │ └── SplashActivity.kt │ │ ├── adapters │ │ ├── FolderIconsAdapter.kt │ │ ├── HiddenIconsAdapter.kt │ │ ├── LaunchersAdapter.kt │ │ └── WidgetsAdapter.kt │ │ ├── databases │ │ └── AppsDatabase.kt │ │ ├── dialogs │ │ └── RenameItemDialog.kt │ │ ├── extensions │ │ ├── Activity.kt │ │ ├── Context.kt │ │ ├── Misc.kt │ │ └── View.kt │ │ ├── fragments │ │ ├── AllAppsFragment.kt │ │ ├── MyFragment.kt │ │ └── WidgetsFragment.kt │ │ ├── helpers │ │ ├── Config.kt │ │ ├── Constants.kt │ │ ├── Converters.kt │ │ └── IconCache.kt │ │ ├── interfaces │ │ ├── AllAppsListener.kt │ │ ├── AppLaunchersDao.kt │ │ ├── FlingListener.kt │ │ ├── HiddenIconsDao.kt │ │ ├── HomeScreenGridItemsDao.kt │ │ ├── ItemMenuListener.kt │ │ └── WidgetsFragmentListener.kt │ │ ├── models │ │ ├── AppLauncher.kt │ │ ├── AppWidget.kt │ │ ├── HiddenIcon.kt │ │ ├── HomeScreenGridItem.kt │ │ ├── WidgetsListItem.kt │ │ ├── WidgetsListItemsHolder.kt │ │ └── WidgetsListSection.kt │ │ ├── receivers │ │ └── LockDeviceAdminReceiver.kt │ │ └── views │ │ ├── HomeScreenGrid.kt │ │ ├── HomeScreenGridDrawingArea.kt │ │ ├── MyAppWidgetHost.kt │ │ ├── MyAppWidgetHostView.kt │ │ └── MyAppWidgetResizeFrame.kt │ └── res │ ├── drawable │ ├── ic_launcher_foreground.xml │ ├── ic_launcher_monochrome.xml │ ├── ic_resize_vector.xml │ ├── placeholder_drawable.xml │ └── widget_preview_background.xml │ ├── layout │ ├── activity_hidden_icons.xml │ ├── activity_main.xml │ ├── activity_settings.xml │ ├── all_apps_fragment.xml │ ├── dialog_folder_icons.xml │ ├── dialog_rename_item.xml │ ├── home_screen_grid.xml │ ├── item_hidden_icon.xml │ ├── item_launcher_label.xml │ ├── item_widget_list_items_holder.xml │ ├── item_widget_list_section.xml │ ├── item_widget_preview.xml │ └── widgets_fragment.xml │ ├── menu │ ├── cab_hidden_icons.xml │ ├── menu_app_icon.xml │ ├── menu_home_screen.xml │ └── menu_settings.xml │ ├── mipmap-anydpi-v26 │ ├── ic_launcher.xml │ ├── ic_launcher_amber.xml │ ├── ic_launcher_blue.xml │ ├── ic_launcher_blue_grey.xml │ ├── ic_launcher_brown.xml │ ├── ic_launcher_cyan.xml │ ├── ic_launcher_deep_orange.xml │ ├── ic_launcher_deep_purple.xml │ ├── ic_launcher_grey_black.xml │ ├── ic_launcher_indigo.xml │ ├── ic_launcher_light_blue.xml │ ├── ic_launcher_light_green.xml │ ├── ic_launcher_lime.xml │ ├── ic_launcher_orange.xml │ ├── ic_launcher_pink.xml │ ├── ic_launcher_purple.xml │ ├── ic_launcher_red.xml │ ├── ic_launcher_teal.xml │ └── ic_launcher_yellow.xml │ ├── values-ar │ └── strings.xml │ ├── values-az │ └── strings.xml │ ├── values-b+es+419 │ └── strings.xml │ ├── values-be │ └── strings.xml │ ├── values-bg │ └── strings.xml │ ├── values-bn-rBD │ └── strings.xml │ ├── values-bn │ └── strings.xml │ ├── values-br │ └── strings.xml │ ├── values-bs │ └── strings.xml │ ├── values-ca │ └── strings.xml │ ├── values-ckb │ └── strings.xml │ ├── values-cr │ └── strings.xml │ ├── values-cs │ └── strings.xml │ ├── values-cy │ └── strings.xml │ ├── values-da │ └── strings.xml │ ├── values-de │ └── strings.xml │ ├── values-el │ └── strings.xml │ ├── values-en-rGB │ └── strings.xml │ ├── values-en-rIN │ └── strings.xml │ ├── values-eo │ └── strings.xml │ ├── values-es-rUS │ └── strings.xml │ ├── values-es │ └── strings.xml │ ├── values-et │ └── strings.xml │ ├── values-eu │ └── strings.xml │ ├── values-fa │ └── strings.xml │ ├── values-fi │ └── strings.xml │ ├── values-fil │ └── strings.xml │ ├── values-fr │ └── strings.xml │ ├── values-ga │ └── strings.xml │ ├── values-gl │ └── strings.xml │ ├── values-hi │ └── strings.xml │ ├── values-hr │ └── strings.xml │ ├── values-hu │ └── strings.xml │ ├── values-ia │ └── strings.xml │ ├── values-in │ └── strings.xml │ ├── values-is │ └── strings.xml │ ├── values-it │ └── strings.xml │ ├── values-iw │ └── strings.xml │ ├── values-ja │ └── strings.xml │ ├── values-kn │ └── strings.xml │ ├── values-ko │ └── strings.xml │ ├── values-kr │ └── strings.xml │ ├── values-lt │ └── strings.xml │ ├── values-ltg │ └── strings.xml │ ├── values-lv │ └── strings.xml │ ├── values-mk │ └── strings.xml │ ├── values-ml │ └── strings.xml │ ├── values-ms │ └── strings.xml │ ├── values-my │ └── strings.xml │ ├── values-nb-rNO │ └── strings.xml │ ├── values-ne │ └── strings.xml │ ├── values-nl │ └── strings.xml │ ├── values-nn │ └── strings.xml │ ├── values-or │ └── strings.xml │ ├── values-pa-rPK │ └── strings.xml │ ├── values-pa │ └── strings.xml │ ├── values-pl │ └── strings.xml │ ├── values-pt-rBR │ └── strings.xml │ ├── values-pt-rPT │ └── strings.xml │ ├── values-pt │ └── strings.xml │ ├── values-ro │ └── strings.xml │ ├── values-ru │ └── strings.xml │ ├── values-sat │ └── strings.xml │ ├── values-si │ └── strings.xml │ ├── values-sk │ └── strings.xml │ ├── values-sl │ └── strings.xml │ ├── values-sr │ └── strings.xml │ ├── values-sv │ └── strings.xml │ ├── values-ta │ └── strings.xml │ ├── values-te │ └── strings.xml │ ├── values-th │ └── strings.xml │ ├── values-tr │ └── strings.xml │ ├── values-uk │ └── strings.xml │ ├── values-vi │ └── strings.xml │ ├── values-w600dp │ └── integers.xml │ ├── values-zgh │ └── strings.xml │ ├── values-zh-rCN │ └── strings.xml │ ├── values-zh-rHK │ └── strings.xml │ ├── values-zh-rTW │ └── strings.xml │ ├── values │ ├── colors.xml │ ├── dimens.xml │ ├── donottranslate.xml │ ├── ic_launcher_amber_background.xml │ ├── ic_launcher_background.xml │ ├── ic_launcher_blue_background.xml │ ├── integers.xml │ ├── strings.xml │ └── styles.xml │ └── xml │ └── device_admin_policies.xml ├── build.gradle.kts ├── fastlane ├── Appfile ├── Fastfile ├── README.md └── metadata │ └── android │ ├── ca │ ├── full_description.txt │ └── short_description.txt │ ├── cs-CZ │ ├── full_description.txt │ └── short_description.txt │ ├── de-DE │ ├── full_description.txt │ └── short_description.txt │ ├── en-US │ ├── changelogs │ │ ├── 1.txt │ │ ├── 2.txt │ │ ├── 3.txt │ │ ├── 4.txt │ │ └── 5.txt │ ├── full_description.txt │ ├── images │ │ ├── featureGraphic.png │ │ ├── icon.png │ │ └── phoneScreenshots │ │ │ ├── 1_en-US.png │ │ │ ├── 2_en-US.png │ │ │ ├── 3_en-US.png │ │ │ └── 4_en-US.png │ ├── short_description.txt │ └── title.txt │ ├── eo │ └── short_description.txt │ ├── es-ES │ ├── full_description.txt │ └── short_description.txt │ ├── et │ └── short_description.txt │ ├── fr-FR │ ├── full_description.txt │ └── short_description.txt │ ├── ga │ ├── full_description.txt │ └── short_description.txt │ ├── gl-ES │ ├── full_description.txt │ └── short_description.txt │ ├── it-IT │ ├── full_description.txt │ └── short_description.txt │ ├── iw-IL │ ├── full_description.txt │ └── short_description.txt │ ├── nl-NL │ └── short_description.txt │ ├── pl-PL │ ├── full_description.txt │ └── short_description.txt │ ├── ru-RU │ ├── full_description.txt │ └── short_description.txt │ ├── sv-SE │ └── short_description.txt │ ├── tr-TR │ └── short_description.txt │ ├── uk │ ├── full_description.txt │ └── short_description.txt │ ├── zh-CN │ ├── full_description.txt │ └── short_description.txt │ └── zh-TW │ └── short_description.txt ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── graphics ├── foreground.svg ├── icon.svg └── icon.webp ├── keystore.properties_sample ├── log.crash.home └── settings.gradle.kts /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig 2 | # http://EditorConfig.org 3 | 4 | # top-most EditorConfig file 5 | root = true 6 | 7 | # LF end-of-line, insert an empty new line and UTF-8 8 | [*] 9 | end_of_line = lf 10 | insert_final_newline = true 11 | charset = utf-8 12 | indent_style = space 13 | indent_size = 4 14 | continuation_indent_size = 4 15 | max_line_length = 160 16 | 17 | [*.xml] 18 | continuation_indent_size = 4 19 | 20 | [*.kt] 21 | ij_kotlin_name_count_to_use_star_import = 5 22 | ij_kotlin_name_count_to_use_star_import_for_members = 5 23 | -------------------------------------------------------------------------------- /.fossify/release-marker.txt: -------------------------------------------------------------------------------- 1 | # Auto-generated file. DO NOT EDIT. 2 | 1.1.2 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Questions 4 | url: https://github.com/FossifyOrg/Launcher/discussions 5 | about: Please ask and answer questions here. -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.yml: -------------------------------------------------------------------------------- 1 | name: Feature request 2 | description: Suggest an idea for this project 3 | labels: [ "feature request", "needs triage" ] 4 | body: 5 | - type: markdown 6 | attributes: 7 | value: | 8 | ## Hi there 👋 9 | Thanks for helping us improve Fossify Launcher by suggesting a feature! 10 | Please fill in as much information as possible about your feature request to avoid unnecessary and time-consuming back-and-forth communication. 11 | 12 | - type: checkboxes 13 | id: checklist 14 | attributes: 15 | label: "Checklist" 16 | options: 17 | - label: "I made sure that there are **no existing issues** - [open](https://github.com/FossifyOrg/Launcher/issues) or [closed](https://github.com/FossifyOrg/Launcher/issues?q=is%3Aissue+is%3Aclosed) - to which I could contribute my information." 18 | required: true 19 | - label: "I made sure that there are **no existing discussions** - [open](https://github.com/FossifyOrg/Launcher/discussions) or [closed](https://github.com/FossifyOrg/Launcher/discussions?discussions_q=is%3Aclosed) - to which I could contribute my information." 20 | required: true 21 | - label: "I have read the FAQs inside the app (Menu -> About -> FAQs) and my problem isn't listed." 22 | required: true 23 | - label: "**I have taken the time to fill in all the required details. I understand that the request will be dismissed otherwise.**" 24 | required: true 25 | - label: "This issue contains only one feature request." 26 | required: true 27 | - label: "I have read and understood the [contribution guidelines](https://github.com/FossifyOrg/Launcher/blob/main/CONTRIBUTING.md)." 28 | required: true 29 | 30 | - type: textarea 31 | id: feature-description 32 | attributes: 33 | label: Feature description 34 | description: | 35 | Explain how you want the app's look or behavior to change to suit your needs. 36 | 37 | ⚠️ Please **DO NOT** add links to SimpleMobileTools issues as they can be deleted at any time. Instead, copy-paste any useful information manually. 38 | validations: 39 | required: true 40 | 41 | - type: textarea 42 | id: why-is-the-feature-requested 43 | attributes: 44 | label: Why do you want this feature? 45 | description: | 46 | Describe any problem or limitation you come across while using the app which would be solved by this feature. 47 | validations: 48 | required: true 49 | 50 | - type: textarea 51 | id: additional-information 52 | attributes: 53 | label: Additional information 54 | description: Any other information you'd like to include, for instance sketches, mockups, pictures of rabbits, etc. 55 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | registries: 4 | maven-google: 5 | type: maven-repository 6 | url: "https://dl.google.com/dl/android/maven2/" 7 | 8 | maven-central: 9 | type: maven-repository 10 | url: "https://repo.maven.apache.org/maven2" 11 | 12 | jitpack: 13 | type: maven-repository 14 | url: "https://jitpack.io" 15 | 16 | updates: 17 | - package-ecosystem: "bundler" 18 | directory: "/" 19 | schedule: 20 | interval: "weekly" 21 | commit-message: 22 | prefix: "chore" 23 | prefix-development: "chore" 24 | include: "scope" 25 | assignees: 26 | - "naveensingh" 27 | 28 | - package-ecosystem: "gradle" 29 | directory: "/" 30 | registries: 31 | - maven-central 32 | - maven-google 33 | - jitpack 34 | schedule: 35 | interval: "weekly" 36 | commit-message: 37 | prefix: "chore" 38 | prefix-development: "chore" 39 | include: "scope" 40 | assignees: 41 | - "naveensingh" 42 | 43 | - package-ecosystem: "github-actions" 44 | directory: "/" 45 | schedule: 46 | interval: "weekly" 47 | commit-message: 48 | prefix: "chore" 49 | prefix-development: "chore" 50 | include: "scope" 51 | assignees: 52 | - "naveensingh" 53 | -------------------------------------------------------------------------------- /.github/workflows/image-minimizer.yml: -------------------------------------------------------------------------------- 1 | name: Image Minimizer 2 | 3 | on: 4 | issue_comment: 5 | types: [created, edited] 6 | issues: 7 | types: [opened, edited] 8 | pull_request_target: 9 | types: [opened, edited] 10 | 11 | jobs: 12 | call-image-minimizer-workflow: 13 | uses: FossifyOrg/.github/.github/workflows/image-minimizer.yml@main 14 | secrets: inherit 15 | -------------------------------------------------------------------------------- /.github/workflows/no-response.yml: -------------------------------------------------------------------------------- 1 | name: No Response 2 | 3 | on: 4 | schedule: 5 | - cron: "0 12 * * *" # Runs daily at noon 6 | workflow_dispatch: 7 | 8 | jobs: 9 | call-no-response-workflow: 10 | uses: FossifyOrg/.github/.github/workflows/no-response.yml@main 11 | secrets: inherit 12 | -------------------------------------------------------------------------------- /.github/workflows/pr-labeler.yml: -------------------------------------------------------------------------------- 1 | name: PR Labeler 2 | 3 | on: 4 | pull_request_target: 5 | types: [opened] 6 | 7 | jobs: 8 | call-pr-labeler-workflow: 9 | uses: FossifyOrg/.github/.github/workflows/pr-labeler.yml@main 10 | secrets: inherit 11 | -------------------------------------------------------------------------------- /.github/workflows/pr.yml: -------------------------------------------------------------------------------- 1 | name: PR 2 | 3 | on: 4 | pull_request: 5 | branches: [ main ] 6 | 7 | jobs: 8 | call-pr-workflow: 9 | uses: FossifyOrg/.github/.github/workflows/pr.yml@main 10 | -------------------------------------------------------------------------------- /.github/workflows/prepare-release-pr.yml: -------------------------------------------------------------------------------- 1 | name: Prepare Release PR 2 | 3 | on: 4 | repository_dispatch: 5 | types: [prepare-release] 6 | workflow_dispatch: 7 | 8 | jobs: 9 | call-release-pr: 10 | uses: FossifyOrg/.github/.github/workflows/prepare-release-pr.yml@main 11 | secrets: inherit 12 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | branches: [ main ] 6 | paths: 7 | - ".fossify/release-marker.txt" 8 | 9 | jobs: 10 | call-release-workflow: 11 | name: Release 12 | uses: FossifyOrg/.github/.github/workflows/release.yml@main 13 | with: 14 | track: ${{ vars.GPLAY_TRACK || 'beta' }} 15 | rollout: ${{ vars.GPLAY_ROLLOUT || '0.05' }} 16 | validate_only: ${{ vars.GPLAY_DRY_RUN == 'true' }} 17 | secrets: inherit 18 | -------------------------------------------------------------------------------- /.github/workflows/testing-build.yml: -------------------------------------------------------------------------------- 1 | name: Testing build (on PR) 2 | 3 | on: 4 | pull_request: 5 | branches: [ main ] 6 | types: [ labeled, opened, synchronize, reopened ] 7 | 8 | jobs: 9 | call-testing-build-workflow: 10 | uses: FossifyOrg/.github/.github/workflows/testing-build.yml@main 11 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | *.aab 3 | .gradle 4 | /local.properties 5 | /.idea/ 6 | .DS_Store 7 | /build 8 | /captures 9 | keystore.jks 10 | keystore.properties 11 | fastlane/fastlane.json 12 | fastlane/report.xml 13 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 | 8 | ## [Unreleased] 9 | 10 | ## [1.1.2] - 2025-06-06 11 | 12 | ### Changed 13 | 14 | - Updated translations 15 | 16 | ### Fixed 17 | 18 | - Clicking home screen app labels now works as expected ([#115]) 19 | 20 | ## [1.1.1] - 2025-05-14 21 | 22 | ### Changed 23 | 24 | - Updated translations 25 | 26 | ### Removed 27 | 28 | - Removed redundant launcher settings icon from the app drawer ([#51]) 29 | 30 | ## [1.1.0] - 2025-03-19 31 | 32 | ### Added 33 | 34 | - Added double tap to lock screen feature ([#63]) 35 | 36 | ### Changed 37 | 38 | - Added more translations 39 | 40 | ## [1.0.1] - 2025-01-01 41 | 42 | ### Changed 43 | 44 | - Other minor bug fixes and improvements 45 | - Added more translations 46 | 47 | ### Fixed 48 | 49 | - Fixed scrolling performance issues ([#65]) 50 | - Fixed various issues related to widgets ([#5], [#44], [#74]) 51 | 52 | ## [1.0.0] - 2024-10-16 53 | 54 | ### Added 55 | 56 | - Initial release 57 | 58 | [Unreleased]: https://github.com/FossifyOrg/Launcher/compare/1.1.2...HEAD 59 | [1.1.2]: https://github.com/FossifyOrg/Launcher/compare/1.1.1...1.1.2 60 | [1.1.1]: https://github.com/FossifyOrg/Launcher/compare/1.1.0...1.1.1 61 | [1.1.0]: https://github.com/FossifyOrg/Launcher/compare/1.0.1...1.1.0 62 | [1.0.1]: https://github.com/FossifyOrg/Launcher/compare/1.0.0...1.0.1 63 | [1.0.0]: https://github.com/FossifyOrg/Launcher/releases/tag/1.0.0 64 | 65 | [#5]: https://github.com/FossifyOrg/Launcher/issues/5 66 | [#44]: https://github.com/FossifyOrg/Launcher/issues/44 67 | [#51]: https://github.com/FossifyOrg/Launcher/issues/51 68 | [#63]: https://github.com/FossifyOrg/Launcher/issues/63 69 | [#65]: https://github.com/FossifyOrg/Launcher/issues/65 70 | [#74]: https://github.com/FossifyOrg/Launcher/issues/74 71 | [#115]: https://github.com/FossifyOrg/Launcher/issues/115 72 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ### Reporting 2 | 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. 3 | 4 | ### Contributing as a developer 5 | 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. 6 | 7 | ### Contributing as a non developer 8 | 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). 9 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "fastlane" 4 | gem "fastlane-plugin-fossify", "~> 1.0" 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Fossify Launcher 2 | 3 | Logo 4 | 5 | Get it on Google Play Get it on F-Droid Get it on IzzyOnDroid 6 | 7 | Fossify Launcher is your gateway to a fast, personalized, and privacy-first home screen experience. 8 | No ads, no bloat – just a smooth, efficient launcher designed to fit your unique style and 9 | preferences. 10 | 11 | **🚀 LIGHTNING-FAST NAVIGATION:** 12 | Navigate your device with speed and precision. Fossify Launcher is optimized to be responsive and 13 | fluid, giving you instant access to your favorite apps without lag. 14 | 15 | **🎨 FULL CUSTOMIZATION:** 16 | Tailor your home screen with dynamic themes, custom colors, and layouts. Personalize your launcher 17 | to match your style with easy-to-use tools that let you create a truly unique setup. 18 | 19 | **🖼️ COMPLETE WIDGET SUPPORT:** 20 | Integrate fully resizable widgets with ease. Whether you need clocks, calendars, or other handy 21 | tools, Fossify Launcher ensures they blend seamlessly into your home screen design. 22 | 23 | **📱 NO UNWANTED CLUTTER:** 24 | Effortlessly manage your apps by hiding or uninstalling them in just a few taps, keeping your home 25 | screen organized and clutter-free. 26 | 27 | **🔒 PRIVACY AND SECURITY:** 28 | Your privacy is at the heart of Fossify Launcher. With no internet access and no intrusive 29 | permissions, your data stays with you. No tracking, no ads – just a launcher built to respect your 30 | privacy. 31 | 32 | **🌐 OPEN-SOURCE ASSURANCE:** 33 | Fossify Launcher is built on an open-source foundation, allowing you to review our code on GitHub, 34 | fostering trust and a community committed to privacy. 35 | 36 | Find your balance of speed, customization, and privacy with Fossify Launcher. 37 | 38 | ➡️ Explore more Fossify apps: https://www.fossify.org
39 | ➡️ Open-Source Code: https://www.github.com/FossifyOrg
40 | ➡️ Join the community on Reddit: https://www.reddit.com/r/Fossify
41 | ➡️ Connect on Telegram: https://t.me/Fossify 42 | 43 |
44 | App image 45 | App image 46 | App image 47 |
48 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | /foss 3 | /gplay 4 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Launcher/66c5bb89eff919f1f127070fb52c895803a5a6e9/app/proguard-rules.pro -------------------------------------------------------------------------------- /app/src/debug/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Launcher_debug 4 | 5 | -------------------------------------------------------------------------------- /app/src/foss/res/values/bools.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | true 5 | true 6 | 7 | -------------------------------------------------------------------------------- /app/src/gplay/res/values/bools.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | false 4 | false 5 | true 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Launcher/66c5bb89eff919f1f127070fb52c895803a5a6e9/app/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/activities/HiddenIconsActivity.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.activities 2 | 3 | import android.content.Intent 4 | import android.content.pm.PackageManager 5 | import android.os.Bundle 6 | import org.fossify.commons.extensions.beVisibleIf 7 | import org.fossify.commons.extensions.normalizeString 8 | import org.fossify.commons.extensions.viewBinding 9 | import org.fossify.commons.helpers.NavigationIcon 10 | import org.fossify.commons.helpers.ensureBackgroundThread 11 | import org.fossify.commons.interfaces.RefreshRecyclerViewListener 12 | import org.fossify.commons.views.MyGridLayoutManager 13 | import org.fossify.home.adapters.HiddenIconsAdapter 14 | import org.fossify.home.databinding.ActivityHiddenIconsBinding 15 | import org.fossify.home.extensions.config 16 | import org.fossify.home.extensions.getDrawableForPackageName 17 | import org.fossify.home.extensions.hiddenIconsDB 18 | import org.fossify.home.models.HiddenIcon 19 | 20 | class HiddenIconsActivity : SimpleActivity(), RefreshRecyclerViewListener { 21 | private val binding by viewBinding(ActivityHiddenIconsBinding::inflate) 22 | 23 | override fun onCreate(savedInstanceState: Bundle?) { 24 | isMaterialActivity = true 25 | super.onCreate(savedInstanceState) 26 | setContentView(binding.root) 27 | updateIcons() 28 | 29 | updateMaterialActivityViews( 30 | binding.manageHiddenIconsCoordinator, 31 | binding.manageHiddenIconsList, 32 | useTransparentNavigation = true, 33 | useTopSearchMenu = false 34 | ) 35 | setupMaterialScrollListener(binding.manageHiddenIconsList, binding.manageHiddenIconsToolbar) 36 | 37 | val layoutManager = binding.manageHiddenIconsList.layoutManager as MyGridLayoutManager 38 | layoutManager.spanCount = config.drawerColumnCount 39 | } 40 | 41 | override fun onResume() { 42 | super.onResume() 43 | setupToolbar(binding.manageHiddenIconsToolbar, NavigationIcon.Arrow) 44 | } 45 | 46 | private fun updateIcons() { 47 | ensureBackgroundThread { 48 | val hiddenIcons = hiddenIconsDB.getHiddenIcons().sortedWith( 49 | compareBy({ 50 | it.title.normalizeString().lowercase() 51 | }, { 52 | it.packageName 53 | }) 54 | ).toMutableList() as ArrayList 55 | 56 | val hiddenIconsEmpty = hiddenIcons.isEmpty() 57 | runOnUiThread { 58 | binding.manageHiddenIconsPlaceholder.beVisibleIf(hiddenIconsEmpty) 59 | } 60 | 61 | if (hiddenIcons.isNotEmpty()) { 62 | val intent = Intent(Intent.ACTION_MAIN, null) 63 | intent.addCategory(Intent.CATEGORY_LAUNCHER) 64 | 65 | val list = packageManager.queryIntentActivities(intent, PackageManager.PERMISSION_GRANTED) 66 | for (info in list) { 67 | val componentInfo = info.activityInfo.applicationInfo 68 | val packageName = componentInfo.packageName 69 | val activityName = info.activityInfo.name 70 | hiddenIcons.firstOrNull { it.getIconIdentifier() == "$packageName/$activityName" }?.apply { 71 | drawable = info.loadIcon(packageManager) ?: getDrawableForPackageName(packageName) 72 | } 73 | } 74 | 75 | hiddenIcons.firstOrNull { it.packageName == applicationContext.packageName }?.apply { 76 | drawable = getDrawableForPackageName(packageName) 77 | } 78 | } 79 | 80 | val iconsToRemove = hiddenIcons.filter { it.drawable == null } 81 | if (iconsToRemove.isNotEmpty()) { 82 | hiddenIconsDB.removeHiddenIcons(iconsToRemove) 83 | hiddenIcons.removeAll(iconsToRemove) 84 | } 85 | 86 | runOnUiThread { 87 | HiddenIconsAdapter(this, hiddenIcons, this, binding.manageHiddenIconsList) { 88 | }.apply { 89 | binding.manageHiddenIconsList.adapter = this 90 | } 91 | } 92 | } 93 | } 94 | 95 | override fun refreshItems() { 96 | updateIcons() 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/activities/SimpleActivity.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.activities 2 | 3 | import org.fossify.commons.activities.BaseSimpleActivity 4 | import org.fossify.home.R 5 | import org.fossify.home.helpers.REPOSITORY_NAME 6 | 7 | open class SimpleActivity : BaseSimpleActivity() { 8 | override fun getAppIconIDs() = arrayListOf( 9 | R.mipmap.ic_launcher_red, 10 | R.mipmap.ic_launcher_pink, 11 | R.mipmap.ic_launcher_purple, 12 | R.mipmap.ic_launcher_deep_purple, 13 | R.mipmap.ic_launcher_indigo, 14 | R.mipmap.ic_launcher_blue, 15 | R.mipmap.ic_launcher_light_blue, 16 | R.mipmap.ic_launcher_cyan, 17 | R.mipmap.ic_launcher_teal, 18 | R.mipmap.ic_launcher, 19 | R.mipmap.ic_launcher_light_green, 20 | R.mipmap.ic_launcher_lime, 21 | R.mipmap.ic_launcher_yellow, 22 | R.mipmap.ic_launcher_amber, 23 | R.mipmap.ic_launcher_orange, 24 | R.mipmap.ic_launcher_deep_orange, 25 | R.mipmap.ic_launcher_brown, 26 | R.mipmap.ic_launcher_blue_grey, 27 | R.mipmap.ic_launcher_grey_black 28 | ) 29 | 30 | override fun getAppLauncherName() = getString(R.string.app_launcher_name) 31 | 32 | override fun getRepositoryName() = REPOSITORY_NAME 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/activities/SplashActivity.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.activities 2 | 3 | import android.content.Intent 4 | import org.fossify.commons.activities.BaseSplashActivity 5 | 6 | class SplashActivity : BaseSplashActivity() { 7 | override fun initActivity() { 8 | startActivity(Intent(this, MainActivity::class.java)) 9 | finish() 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/databases/AppsDatabase.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.databases 2 | 3 | import android.content.Context 4 | import androidx.room.Database 5 | import androidx.room.Room 6 | import androidx.room.RoomDatabase 7 | import androidx.room.TypeConverters 8 | import org.fossify.home.helpers.Converters 9 | import org.fossify.home.interfaces.AppLaunchersDao 10 | import org.fossify.home.interfaces.HiddenIconsDao 11 | import org.fossify.home.interfaces.HomeScreenGridItemsDao 12 | import org.fossify.home.models.AppLauncher 13 | import org.fossify.home.models.HiddenIcon 14 | import org.fossify.home.models.HomeScreenGridItem 15 | 16 | @Database( 17 | entities = [AppLauncher::class, HomeScreenGridItem::class, HiddenIcon::class], 18 | version = 5 19 | ) 20 | @TypeConverters(Converters::class) 21 | abstract class AppsDatabase : RoomDatabase() { 22 | 23 | abstract fun AppLaunchersDao(): AppLaunchersDao 24 | 25 | abstract fun HomeScreenGridItemsDao(): HomeScreenGridItemsDao 26 | 27 | abstract fun HiddenIconsDao(): HiddenIconsDao 28 | 29 | companion object { 30 | private var db: AppsDatabase? = null 31 | 32 | fun getInstance(context: Context): AppsDatabase { 33 | if (db == null) { 34 | synchronized(AppsDatabase::class) { 35 | if (db == null) { 36 | db = Room.databaseBuilder( 37 | context.applicationContext, 38 | AppsDatabase::class.java, 39 | "apps.db" 40 | ).build() 41 | } 42 | } 43 | } 44 | return db!! 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/dialogs/RenameItemDialog.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.dialogs 2 | 3 | import android.app.Activity 4 | import android.app.AlertDialog 5 | import org.fossify.commons.extensions.* 6 | import org.fossify.commons.helpers.ensureBackgroundThread 7 | import org.fossify.home.databinding.DialogRenameItemBinding 8 | import org.fossify.home.extensions.homeScreenGridItemsDB 9 | import org.fossify.home.models.HomeScreenGridItem 10 | 11 | class RenameItemDialog(val activity: Activity, val item: HomeScreenGridItem, val callback: () -> Unit) { 12 | 13 | init { 14 | val binding = DialogRenameItemBinding.inflate(activity.layoutInflater) 15 | val view = binding.root 16 | binding.renameItemEdittext.setText(item.title) 17 | 18 | activity.getAlertDialogBuilder() 19 | .setPositiveButton(org.fossify.commons.R.string.ok, null) 20 | .setNegativeButton(org.fossify.commons.R.string.cancel, null) 21 | .apply { 22 | activity.setupDialogStuff(view, this, org.fossify.commons.R.string.rename) { alertDialog -> 23 | alertDialog.showKeyboard(binding.renameItemEdittext) 24 | alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener { 25 | val newTitle = binding.renameItemEdittext.value 26 | if (newTitle.isNotEmpty()) { 27 | ensureBackgroundThread { 28 | val result = activity.homeScreenGridItemsDB.updateItemTitle(newTitle, item.id!!) 29 | if (result == 1) { 30 | callback() 31 | alertDialog.dismiss() 32 | } else { 33 | activity.toast(org.fossify.commons.R.string.unknown_error_occurred) 34 | } 35 | } 36 | } else { 37 | activity.toast(org.fossify.commons.R.string.value_cannot_be_empty) 38 | } 39 | } 40 | } 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/extensions/Context.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.extensions 2 | 3 | import android.annotation.TargetApi 4 | import android.app.role.RoleManager 5 | import android.appwidget.AppWidgetProviderInfo 6 | import android.content.Context 7 | import android.content.pm.LauncherApps 8 | import android.graphics.drawable.Drawable 9 | import android.os.Build 10 | import android.os.Process 11 | import android.util.Size 12 | import org.fossify.commons.helpers.isSPlus 13 | import org.fossify.home.databases.AppsDatabase 14 | import org.fossify.home.helpers.Config 15 | import org.fossify.home.interfaces.AppLaunchersDao 16 | import org.fossify.home.interfaces.HiddenIconsDao 17 | import org.fossify.home.interfaces.HomeScreenGridItemsDao 18 | import kotlin.math.ceil 19 | import kotlin.math.max 20 | 21 | val Context.config: Config get() = Config.newInstance(applicationContext) 22 | 23 | val Context.launchersDB: AppLaunchersDao 24 | get() = AppsDatabase.getInstance(applicationContext).AppLaunchersDao() 25 | 26 | val Context.homeScreenGridItemsDB: HomeScreenGridItemsDao 27 | get() = AppsDatabase.getInstance( 28 | applicationContext 29 | ).HomeScreenGridItemsDao() 30 | 31 | val Context.hiddenIconsDB: HiddenIconsDao 32 | get() = AppsDatabase.getInstance(applicationContext).HiddenIconsDao() 33 | 34 | @get:TargetApi(Build.VERSION_CODES.Q) 35 | val Context.roleManager: RoleManager 36 | get() = getSystemService(RoleManager::class.java) 37 | 38 | fun Context.getDrawableForPackageName(packageName: String): Drawable? { 39 | var drawable: Drawable? = null 40 | try { 41 | // try getting the properly colored launcher icons 42 | val launcher = getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps 43 | val activityList = launcher.getActivityList(packageName, Process.myUserHandle())[0] 44 | drawable = activityList.getBadgedIcon(0) 45 | } catch (e: Exception) { 46 | } catch (e: Error) { 47 | } 48 | 49 | if (drawable == null) { 50 | drawable = try { 51 | packageManager.getApplicationIcon(packageName) 52 | } catch (ignored: Exception) { 53 | null 54 | } 55 | } 56 | 57 | return drawable 58 | } 59 | 60 | fun Context.getInitialCellSize( 61 | info: AppWidgetProviderInfo, 62 | fallbackWidth: Int, 63 | fallbackHeight: Int 64 | ): Size { 65 | return if (isSPlus() && info.targetCellWidth != 0 && info.targetCellHeight != 0) { 66 | Size(info.targetCellWidth, info.targetCellHeight) 67 | } else { 68 | val widthCells = getCellCount(fallbackWidth) 69 | val heightCells = getCellCount(fallbackHeight) 70 | Size(widthCells, heightCells) 71 | } 72 | } 73 | 74 | fun Context.getCellCount(size: Int): Int { 75 | val tiles = ceil(((size / resources.displayMetrics.density) - 30) / 70.0).toInt() 76 | return max(tiles, 1) 77 | } 78 | 79 | @TargetApi(Build.VERSION_CODES.Q) 80 | fun Context.isDefaultLauncher(): Boolean { 81 | return with(roleManager) { 82 | isRoleAvailable(RoleManager.ROLE_HOME) && isRoleHeld(RoleManager.ROLE_HOME) 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/extensions/Misc.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.extensions 2 | 3 | import android.content.pm.ShortcutInfo 4 | 5 | fun ShortcutInfo?.getLabel() = this?.longLabel?.toString().ifNullOrEmpty { this?.shortLabel?.toString() } ?: "" 6 | 7 | private fun String?.ifNullOrEmpty(block: () -> String?) = this?.ifEmpty { block() } ?: block() 8 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/extensions/View.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.extensions 2 | 3 | import android.graphics.drawable.ColorDrawable 4 | import android.graphics.drawable.LayerDrawable 5 | import android.view.RoundedCorner.POSITION_TOP_LEFT 6 | import android.view.RoundedCorner.POSITION_TOP_RIGHT 7 | import android.view.View 8 | import android.view.animation.AccelerateDecelerateInterpolator 9 | import androidx.core.content.res.ResourcesCompat 10 | import org.fossify.commons.R 11 | import org.fossify.commons.extensions.applyColorFilter 12 | import org.fossify.commons.extensions.getProperBackgroundColor 13 | import org.fossify.commons.helpers.isSPlus 14 | 15 | fun View.animateScale( 16 | from: Float, 17 | to: Float, 18 | duration: Long, 19 | ) = animate() 20 | .scaleX(to) 21 | .scaleY(to) 22 | .setDuration(duration) 23 | .setInterpolator(AccelerateDecelerateInterpolator()) 24 | .withStartAction { 25 | scaleX = from 26 | scaleY = from 27 | } 28 | 29 | fun View.setupDrawerBackground() { 30 | val backgroundColor = context.getProperBackgroundColor() 31 | background = ColorDrawable(backgroundColor) 32 | 33 | val insets = rootWindowInsets 34 | if (isSPlus() && insets != null) { 35 | val topRightCorner = insets.getRoundedCorner(POSITION_TOP_RIGHT)?.radius ?: 0 36 | val topLeftCorner = insets.getRoundedCorner(POSITION_TOP_LEFT)?.radius ?: 0 37 | if (topRightCorner > 0 && topLeftCorner > 0) { 38 | background = ResourcesCompat.getDrawable( 39 | context.resources, R.drawable.bottom_sheet_bg, context.theme 40 | ).apply { 41 | (this as LayerDrawable) 42 | .findDrawableByLayerId(R.id.bottom_sheet_background) 43 | .applyColorFilter(backgroundColor) 44 | } 45 | } 46 | } 47 | } -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/fragments/MyFragment.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.fragments 2 | 3 | import android.content.Context 4 | import android.util.AttributeSet 5 | import android.widget.RelativeLayout 6 | import androidx.viewbinding.ViewBinding 7 | import org.fossify.home.activities.MainActivity 8 | 9 | abstract class MyFragment( 10 | context: Context, 11 | attributeSet: AttributeSet 12 | ) : RelativeLayout(context, attributeSet) { 13 | protected var activity: MainActivity? = null 14 | protected lateinit var binding: BINDING 15 | 16 | abstract fun setupFragment(activity: MainActivity) 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/helpers/Config.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.helpers 2 | 3 | import android.content.Context 4 | import org.fossify.commons.helpers.BaseConfig 5 | import org.fossify.home.R 6 | 7 | class Config(context: Context) : BaseConfig(context) { 8 | companion object { 9 | fun newInstance(context: Context) = Config(context) 10 | } 11 | 12 | var wasHomeScreenInit: Boolean 13 | get() = prefs.getBoolean(WAS_HOME_SCREEN_INIT, false) 14 | set(wasHomeScreenInit) = prefs.edit().putBoolean(WAS_HOME_SCREEN_INIT, wasHomeScreenInit).apply() 15 | 16 | var homeColumnCount: Int 17 | get() = prefs.getInt(HOME_COLUMN_COUNT, COLUMN_COUNT) 18 | set(homeColumnCount) = prefs.edit().putInt(HOME_COLUMN_COUNT, homeColumnCount).apply() 19 | 20 | var homeRowCount: Int 21 | get() = prefs.getInt(HOME_ROW_COUNT, ROW_COUNT) 22 | set(homeRowCount) = prefs.edit().putInt(HOME_ROW_COUNT, homeRowCount).apply() 23 | 24 | var drawerColumnCount: Int 25 | get() = prefs.getInt(DRAWER_COLUMN_COUNT, context.resources.getInteger(R.integer.portrait_column_count)) 26 | set(drawerColumnCount) = prefs.edit().putInt(DRAWER_COLUMN_COUNT, drawerColumnCount).apply() 27 | 28 | var showSearchBar: Boolean 29 | get() = prefs.getBoolean(SHOW_SEARCH_BAR, true) 30 | set(showSearchBar) = prefs.edit().putBoolean(SHOW_SEARCH_BAR, showSearchBar).apply() 31 | 32 | var closeAppDrawer: Boolean 33 | get() = prefs.getBoolean(CLOSE_APP_DRAWER, false) 34 | set(closeAppDrawer) = prefs.edit().putBoolean(CLOSE_APP_DRAWER, closeAppDrawer).apply() 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/helpers/Constants.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.helpers 2 | 3 | const val WIDGET_LIST_SECTION = 0 4 | const val WIDGET_LIST_ITEMS_HOLDER = 1 5 | 6 | const val REPOSITORY_NAME = "Launcher" 7 | 8 | // shared prefs 9 | const val WAS_HOME_SCREEN_INIT = "was_home_screen_init" 10 | const val HOME_ROW_COUNT = "home_row_count" 11 | const val HOME_COLUMN_COUNT = "home_column_count" 12 | const val DRAWER_COLUMN_COUNT = "drawer_column_count" 13 | const val SHOW_SEARCH_BAR = "show_search_bar" 14 | const val CLOSE_APP_DRAWER = "close_app_drawer" 15 | 16 | // default home screen grid size 17 | const val ROW_COUNT = 6 18 | const val COLUMN_COUNT = 5 19 | const val MIN_ROW_COUNT = 2 20 | const val MAX_ROW_COUNT = 15 21 | const val MIN_COLUMN_COUNT = 2 22 | const val MAX_COLUMN_COUNT = 15 23 | 24 | const val UNINSTALL_APP_REQUEST_CODE = 50 25 | const val REQUEST_CONFIGURE_WIDGET = 51 26 | const val REQUEST_ALLOW_BINDING_WIDGET = 52 27 | const val REQUEST_CREATE_SHORTCUT = 53 28 | const val REQUEST_SET_DEFAULT = 54 29 | 30 | const val ITEM_TYPE_ICON = 0 31 | const val ITEM_TYPE_WIDGET = 1 32 | const val ITEM_TYPE_SHORTCUT = 2 33 | const val ITEM_TYPE_FOLDER = 3 34 | 35 | const val WIDGET_HOST_ID = 12345 36 | const val MAX_CLICK_DURATION = 150 37 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/helpers/Converters.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.helpers 2 | 3 | import android.graphics.Bitmap 4 | import android.graphics.BitmapFactory 5 | import androidx.room.TypeConverter 6 | import java.io.ByteArrayOutputStream 7 | 8 | class Converters { 9 | @TypeConverter 10 | fun toBitmap(bytes: ByteArray?): Bitmap? { 11 | return if (bytes == null) { 12 | null 13 | } else { 14 | BitmapFactory.decodeByteArray(bytes, 0, bytes.size) 15 | } 16 | } 17 | 18 | @TypeConverter 19 | fun fromBitmap(bmp: Bitmap?): ByteArray { 20 | val outputStream = ByteArrayOutputStream() 21 | bmp?.compress(Bitmap.CompressFormat.PNG, 100, outputStream) 22 | return outputStream.toByteArray() 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/helpers/IconCache.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.helpers 2 | 3 | import org.fossify.home.models.AppLauncher 4 | 5 | object IconCache { 6 | @Volatile 7 | private var cachedLaunchers = emptyList() 8 | 9 | var launchers: List 10 | get() = cachedLaunchers 11 | set(value) { 12 | synchronized(this) { 13 | cachedLaunchers = value 14 | } 15 | } 16 | 17 | fun clear() { 18 | launchers = emptyList() 19 | } 20 | } -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/interfaces/AllAppsListener.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.interfaces 2 | 3 | import org.fossify.home.models.AppLauncher 4 | 5 | interface AllAppsListener { 6 | fun onAppLauncherLongPressed(x: Float, y: Float, appLauncher: AppLauncher) 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/interfaces/AppLaunchersDao.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.interfaces 2 | 3 | import androidx.room.Dao 4 | import androidx.room.Insert 5 | import androidx.room.OnConflictStrategy 6 | import androidx.room.Query 7 | import org.fossify.home.models.AppLauncher 8 | 9 | @Dao 10 | interface AppLaunchersDao { 11 | @Query("SELECT * FROM apps") 12 | fun getAppLaunchers(): List 13 | 14 | @Insert(onConflict = OnConflictStrategy.REPLACE) 15 | fun insertAll(appLaunchers: List) 16 | 17 | @Query("DELETE FROM apps WHERE package_name = :packageName") 18 | fun deleteApp(packageName: String) 19 | 20 | @Query("DELETE FROM apps WHERE id = :id") 21 | fun deleteById(id: Long) 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/interfaces/FlingListener.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.interfaces 2 | 3 | interface FlingListener { 4 | fun onFlingUp() 5 | 6 | fun onFlingDown() 7 | 8 | fun onFlingRight() 9 | 10 | fun onFlingLeft() 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/interfaces/HiddenIconsDao.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.interfaces 2 | 3 | import androidx.room.* 4 | import org.fossify.home.models.HiddenIcon 5 | 6 | @Dao 7 | interface HiddenIconsDao { 8 | @Query("SELECT * FROM hidden_icons") 9 | fun getHiddenIcons(): List 10 | 11 | @Insert(onConflict = OnConflictStrategy.REPLACE) 12 | fun insert(hiddenIcon: HiddenIcon): Long 13 | 14 | @Delete 15 | fun removeHiddenIcons(icons: List) 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/interfaces/HomeScreenGridItemsDao.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.interfaces 2 | 3 | import androidx.room.* 4 | import org.fossify.home.models.HomeScreenGridItem 5 | 6 | @Dao 7 | interface HomeScreenGridItemsDao { 8 | @Query("SELECT * FROM home_screen_grid_items") 9 | fun getAllItems(): List 10 | 11 | @Query("SELECT * FROM home_screen_grid_items WHERE parent_id = :folderId") 12 | fun getFolderItems(folderId: Long): List 13 | 14 | @Insert(onConflict = OnConflictStrategy.REPLACE) 15 | fun insert(item: HomeScreenGridItem): Long 16 | 17 | @Insert(onConflict = OnConflictStrategy.REPLACE) 18 | fun insertAll(items: List) 19 | 20 | @Query("UPDATE home_screen_grid_items SET title = :title WHERE package_name = :packageName") 21 | fun updateAppTitle(title: String, packageName: String) 22 | 23 | @Query("UPDATE home_screen_grid_items SET title = :title WHERE id = :id") 24 | fun updateItemTitle(title: String, id: Long): Int 25 | 26 | @Query("UPDATE home_screen_grid_items SET `left` = :left, `top` = :top, `right` = :right, `bottom` = :bottom, `page` = :page, `docked` = :docked , `parent_id` = :parentId WHERE id = :id") 27 | fun updateItemPosition(left: Int, top: Int, right: Int, bottom: Int, page: Int, docked: Boolean, parentId: Long?, id: Long) 28 | 29 | @Query("UPDATE home_screen_grid_items SET widget_id = :widgetId WHERE id = :id") 30 | fun updateWidgetId(widgetId: Int, id: Long): Int 31 | 32 | @Query("DELETE FROM home_screen_grid_items WHERE id = :id") 33 | fun deleteItemById(id: Long) 34 | 35 | @Query("DELETE FROM home_screen_grid_items WHERE parent_id = :id") 36 | fun deleteItemsWithParentId(id: Long) 37 | 38 | @Transaction 39 | fun deleteById(id: Long) { 40 | deleteItemById(id) 41 | deleteItemsWithParentId(id) 42 | } 43 | 44 | @Query("DELETE FROM home_screen_grid_items WHERE package_name = :packageName") 45 | fun deleteItemByPackageName(packageName: String) 46 | 47 | @Query("DELETE FROM home_screen_grid_items WHERE parent_id IN (SELECT id FROM home_screen_grid_items WHERE package_name = :packageName)") 48 | fun deleteItemsByParentPackageName(packageName: String) 49 | 50 | @Query("UPDATE home_screen_grid_items SET `left` = `left` + :shiftBy WHERE parent_id == :folderId AND `left` > :shiftFrom AND id != :excludingId") 51 | fun shiftFolderItems(folderId: Long, shiftFrom: Int, shiftBy: Int, excludingId: Long? = null) 52 | 53 | @Query("UPDATE home_screen_grid_items SET `page` = `page` + :shiftBy WHERE `page` > :shiftFrom") 54 | fun shiftPage(shiftFrom: Int, shiftBy: Int) 55 | 56 | @Transaction 57 | fun deleteByPackageName(packageName: String) { 58 | deleteItemByPackageName(packageName) 59 | deleteItemsByParentPackageName(packageName) 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/interfaces/ItemMenuListener.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.interfaces 2 | 3 | import android.view.Menu 4 | import org.fossify.home.models.HomeScreenGridItem 5 | 6 | interface ItemMenuListener { 7 | fun onAnyClick() 8 | fun hide(gridItem: HomeScreenGridItem) 9 | fun rename(gridItem: HomeScreenGridItem) 10 | fun resize(gridItem: HomeScreenGridItem) 11 | fun appInfo(gridItem: HomeScreenGridItem) 12 | fun remove(gridItem: HomeScreenGridItem) 13 | fun uninstall(gridItem: HomeScreenGridItem) 14 | fun onDismiss() 15 | fun beforeShow(menu: Menu) 16 | } 17 | 18 | abstract class ItemMenuListenerAdapter : ItemMenuListener { 19 | override fun onAnyClick() = Unit 20 | override fun hide(gridItem: HomeScreenGridItem) = Unit 21 | override fun rename(gridItem: HomeScreenGridItem) = Unit 22 | override fun resize(gridItem: HomeScreenGridItem) = Unit 23 | override fun appInfo(gridItem: HomeScreenGridItem) = Unit 24 | override fun remove(gridItem: HomeScreenGridItem) = Unit 25 | override fun uninstall(gridItem: HomeScreenGridItem) = Unit 26 | override fun onDismiss() = Unit 27 | override fun beforeShow(menu: Menu) = Unit 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/interfaces/WidgetsFragmentListener.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.interfaces 2 | 3 | import org.fossify.home.models.AppWidget 4 | 5 | interface WidgetsFragmentListener { 6 | fun onWidgetLongPressed(appWidget: AppWidget) 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/models/AppLauncher.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.models 2 | 3 | import android.graphics.drawable.Drawable 4 | import androidx.room.* 5 | import org.fossify.commons.extensions.normalizeString 6 | import org.fossify.commons.helpers.SORT_BY_TITLE 7 | import org.fossify.commons.helpers.SORT_DESCENDING 8 | 9 | @Entity(tableName = "apps", indices = [(Index(value = ["package_name"], unique = true))]) 10 | data class AppLauncher( 11 | @PrimaryKey(autoGenerate = true) var id: Long?, 12 | @ColumnInfo(name = "title") var title: String, 13 | @ColumnInfo(name = "package_name") var packageName: String, 14 | @ColumnInfo(name = "activity_name") var activityName: String, // some apps create multiple icons, this is needed at clicking them 15 | @ColumnInfo(name = "order") var order: Int, 16 | @ColumnInfo(name = "thumbnail_color") var thumbnailColor: Int, 17 | 18 | @Ignore var drawable: Drawable? 19 | ) : Comparable { 20 | 21 | constructor() : this(null, "", "", "", 0, 0, null) 22 | 23 | companion object { 24 | var sorting = 0 25 | } 26 | 27 | override fun equals(other: Any?) = packageName.equals((other as AppLauncher).packageName, true) 28 | 29 | override fun hashCode() = super.hashCode() 30 | 31 | fun getBubbleText() = title 32 | 33 | fun getLauncherIdentifier() = "$packageName/$activityName" 34 | 35 | override fun compareTo(other: AppLauncher): Int { 36 | var result = when { 37 | sorting and SORT_BY_TITLE != 0 -> title.normalizeString().lowercase().compareTo(other.title.normalizeString().lowercase()) 38 | else -> { 39 | if (order > 0 && other.order == 0) { 40 | -1 41 | } else if (order == 0 && other.order > 0) { 42 | 1 43 | } else if (order > 0 && other.order > 0) { 44 | order.compareTo(other.order) 45 | } else { 46 | title.lowercase().compareTo(other.title.lowercase()) 47 | } 48 | } 49 | } 50 | 51 | if (sorting and SORT_DESCENDING != 0) { 52 | result *= -1 53 | } 54 | 55 | return result 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/models/AppWidget.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.models 2 | 3 | import android.appwidget.AppWidgetProviderInfo 4 | import android.content.pm.ActivityInfo 5 | import android.graphics.drawable.Drawable 6 | 7 | data class AppWidget( 8 | var appPackageName: String, 9 | var appTitle: String, 10 | val appIcon: Drawable?, 11 | val widgetTitle: String, 12 | val widgetPreviewImage: Drawable?, 13 | var widthCells: Int, 14 | val heightCells: Int, 15 | val isShortcut: Boolean, 16 | val className: String, // identifier to know which app widget are we using 17 | val providerInfo: AppWidgetProviderInfo?, // used at widgets 18 | val activityInfo: ActivityInfo? // used at shortcuts 19 | ) : WidgetsListItem() { 20 | override fun getHashToCompare() = getStringToCompare().hashCode() 21 | 22 | private fun getStringToCompare(): String { 23 | return copy(appIcon = null, widgetPreviewImage = null).toString() 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/models/HiddenIcon.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.models 2 | 3 | import android.graphics.drawable.Drawable 4 | import androidx.room.* 5 | 6 | @Entity(tableName = "hidden_icons", indices = [(Index(value = ["id"], unique = true))]) 7 | data class HiddenIcon( 8 | @PrimaryKey(autoGenerate = true) var id: Long?, 9 | @ColumnInfo(name = "package_name") var packageName: String, 10 | @ColumnInfo(name = "activity_name") var activityName: String, 11 | @ColumnInfo(name = "title") var title: String, 12 | 13 | @Ignore var drawable: Drawable? = null, 14 | ) { 15 | constructor() : this(null, "", "", "", null) 16 | 17 | fun getIconIdentifier() = "$packageName/$activityName" 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/models/HomeScreenGridItem.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.models 2 | 3 | import android.appwidget.AppWidgetProviderInfo 4 | import android.content.pm.ActivityInfo 5 | import android.graphics.Bitmap 6 | import android.graphics.Point 7 | import android.graphics.drawable.Drawable 8 | import androidx.room.* 9 | import org.fossify.home.helpers.ITEM_TYPE_ICON 10 | 11 | // grid cells are from 0-5 by default. Icons and shortcuts occupy 1 slot only, widgets can be bigger 12 | @Entity(tableName = "home_screen_grid_items", indices = [(Index(value = ["id"], unique = true))]) 13 | data class HomeScreenGridItem( 14 | @PrimaryKey(autoGenerate = true) var id: Long?, 15 | @ColumnInfo(name = "left") var left: Int, 16 | @ColumnInfo(name = "top") var top: Int, 17 | @ColumnInfo(name = "right") var right: Int, 18 | @ColumnInfo(name = "bottom") var bottom: Int, 19 | @ColumnInfo(name = "page") var page: Int, 20 | @ColumnInfo(name = "package_name") var packageName: String, 21 | @ColumnInfo(name = "activity_name") var activityName: String, // needed at apps that create multiple icons at install, not just the launcher 22 | @ColumnInfo(name = "title") var title: String, 23 | @ColumnInfo(name = "type") var type: Int, 24 | @ColumnInfo(name = "class_name") var className: String, 25 | @ColumnInfo(name = "widget_id") var widgetId: Int, 26 | @ColumnInfo(name = "shortcut_id") var shortcutId: String, // used at pinned shortcuts at startLauncher call 27 | @ColumnInfo(name = "icon") var icon: Bitmap? = null, // store images of pinned shortcuts, those cannot be retrieved after creating 28 | @ColumnInfo(name = "docked") var docked: Boolean = false, // special flag, meaning that page, top and bottom don't matter for this item, it is always at the bottom of the screen 29 | @ColumnInfo(name = "parent_id") var parentId: Long? = null, // id of folder this item is in (if it is in any) 30 | 31 | @Ignore var drawable: Drawable? = null, 32 | @Ignore var providerInfo: AppWidgetProviderInfo? = null, // used at widgets 33 | @Ignore var activityInfo: ActivityInfo? = null, // used at shortcuts 34 | @Ignore var widthCells: Int = 1, 35 | @Ignore var heightCells: Int = 1 36 | ) { 37 | companion object { 38 | const val FOLDER_MAX_CAPACITY = 16 39 | } 40 | 41 | constructor() : this(null, -1, -1, -1, -1, 0, "", "", "", ITEM_TYPE_ICON, "", -1, "", null, false, null, null, null, null, 1, 1) 42 | 43 | fun getWidthInCells() = if (right == -1 || left == -1) { 44 | widthCells 45 | } else { 46 | right - left + 1 47 | } 48 | 49 | fun getHeightInCells() = if (bottom == -1 || top == -1) { 50 | heightCells 51 | } else { 52 | bottom - top + 1 53 | } 54 | 55 | fun getDockAdjustedTop(rowCount: Int): Int { 56 | return if (!docked) { 57 | top 58 | } else { 59 | rowCount - 1 60 | } 61 | } 62 | 63 | fun getDockAdjustedBottom(rowCount: Int): Int { 64 | return if (!docked) { 65 | bottom 66 | } else { 67 | rowCount - 1 68 | } 69 | } 70 | 71 | fun getItemIdentifier() = "$packageName/$activityName" 72 | 73 | fun getTopLeft(rowCount: Int) = Point(left, getDockAdjustedTop(rowCount)) 74 | } 75 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/models/WidgetsListItem.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.models 2 | 3 | abstract class WidgetsListItem { 4 | abstract fun getHashToCompare(): Int 5 | } 6 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/models/WidgetsListItemsHolder.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.models 2 | 3 | open class WidgetsListItemsHolder(val widgets: ArrayList) : WidgetsListItem() { 4 | override fun getHashToCompare() = widgets.sumOf { it.getHashToCompare() } 5 | } 6 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/models/WidgetsListSection.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.models 2 | 3 | import android.graphics.drawable.Drawable 4 | 5 | data class WidgetsListSection(var appTitle: String, var appIcon: Drawable?) : WidgetsListItem() { 6 | override fun getHashToCompare() = getStringToCompare().hashCode() 7 | 8 | private fun getStringToCompare(): String { 9 | return copy(appIcon = null).toString() 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/receivers/LockDeviceAdminReceiver.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.receivers 2 | 3 | import android.app.admin.DeviceAdminReceiver 4 | import android.content.Context 5 | import android.content.Intent 6 | import org.fossify.home.R 7 | 8 | class LockDeviceAdminReceiver : DeviceAdminReceiver() { 9 | 10 | override fun onDisableRequested(context: Context, intent: Intent): CharSequence { 11 | return context.getString(R.string.lock_device_admin_warning) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/views/HomeScreenGridDrawingArea.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.views 2 | 3 | import android.content.Context 4 | import android.graphics.Canvas 5 | import android.util.AttributeSet 6 | import android.view.View 7 | 8 | class HomeScreenGridDrawingArea @JvmOverloads constructor( 9 | context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 10 | ) : View(context, attrs, defStyleAttr) { 11 | 12 | override fun onDraw(canvas: Canvas) { 13 | super.onDraw(canvas) 14 | (parent as HomeScreenGrid).drawInto(canvas) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/views/MyAppWidgetHost.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.views 2 | 3 | import android.appwidget.AppWidgetHost 4 | import android.appwidget.AppWidgetHostView 5 | import android.appwidget.AppWidgetProviderInfo 6 | import android.content.Context 7 | 8 | class MyAppWidgetHost(context: Context, hostId: Int) : AppWidgetHost(context, hostId) { 9 | override fun onCreateView(context: Context, appWidgetId: Int, appWidget: AppWidgetProviderInfo): AppWidgetHostView { 10 | return MyAppWidgetHostView(context) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/kotlin/org/fossify/home/views/MyAppWidgetHostView.kt: -------------------------------------------------------------------------------- 1 | package org.fossify.home.views 2 | 3 | import android.appwidget.AppWidgetHostView 4 | import android.content.Context 5 | import android.graphics.PointF 6 | import android.os.Handler 7 | import android.view.MotionEvent 8 | import android.view.ViewConfiguration 9 | import org.fossify.home.R 10 | import kotlin.math.abs 11 | 12 | class MyAppWidgetHostView(context: Context) : AppWidgetHostView(context) { 13 | private var longPressHandler = Handler() 14 | private var actionDownCoords = PointF() 15 | private var currentCoords = PointF() 16 | private var actionDownMS = 0L 17 | private val moveGestureThreshold = resources.getDimension(R.dimen.move_gesture_threshold).toInt() / 4 18 | var hasLongPressed = false 19 | var ignoreTouches = false 20 | var longPressListener: ((x: Float, y: Float) -> Unit)? = null 21 | var onIgnoreInterceptedListener: (() -> Unit)? = null // let the home grid react on swallowed clicks, for example by hiding the widget resize frame 22 | 23 | override fun onTouchEvent(event: MotionEvent?): Boolean { 24 | return if (ignoreTouches) { 25 | onIgnoreInterceptedListener?.invoke() 26 | true 27 | } else { 28 | super.onTouchEvent(event) 29 | } 30 | } 31 | 32 | override fun onInterceptTouchEvent(event: MotionEvent?): Boolean { 33 | if (ignoreTouches || event == null) { 34 | return true 35 | } 36 | 37 | if (hasLongPressed) { 38 | hasLongPressed = false 39 | return true 40 | } 41 | 42 | when (event.actionMasked) { 43 | MotionEvent.ACTION_DOWN -> { 44 | longPressHandler.postDelayed(longPressRunnable, ViewConfiguration.getLongPressTimeout().toLong()) 45 | actionDownCoords.x = event.rawX 46 | actionDownCoords.y = event.rawY 47 | currentCoords.x = event.rawX 48 | currentCoords.y = event.rawY 49 | actionDownMS = System.currentTimeMillis() 50 | } 51 | 52 | MotionEvent.ACTION_MOVE -> { 53 | currentCoords.x = event.rawX 54 | currentCoords.y = event.rawY 55 | if (abs(actionDownCoords.x - currentCoords.x) > moveGestureThreshold) { 56 | resetTouches() 57 | return true 58 | } 59 | } 60 | 61 | MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> { 62 | resetTouches() 63 | } 64 | } 65 | 66 | return false 67 | } 68 | 69 | private val longPressRunnable = Runnable { 70 | if (abs(actionDownCoords.x - currentCoords.x) < moveGestureThreshold && abs(actionDownCoords.y - currentCoords.y) < moveGestureThreshold) { 71 | longPressHandler.removeCallbacksAndMessages(null) 72 | hasLongPressed = true 73 | longPressListener?.invoke(actionDownCoords.x, actionDownCoords.y) 74 | } 75 | } 76 | 77 | fun resetTouches() { 78 | longPressHandler.removeCallbacksAndMessages(null) 79 | } 80 | 81 | private fun hasFingerMoved(x: Float, y: Float) = 82 | ((abs(actionDownCoords.x - x) > moveGestureThreshold) || (abs(actionDownCoords.y - y) > moveGestureThreshold)) 83 | } 84 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_monochrome.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_resize_vector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/placeholder_drawable.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/widget_preview_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_hidden_icons.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | 16 | 21 | 22 | 29 | 30 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 15 | 16 | 20 | 21 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/layout/all_apps_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 19 | 20 | 29 | 30 | 31 | 32 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_folder_icons.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 17 | 18 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_rename_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/layout/home_screen_grid.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 13 | 14 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_hidden_icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 20 | 21 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_launcher_label.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 18 | 19 | 28 | 29 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_widget_list_items_holder.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_widget_list_section.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 16 | 17 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_widget_preview.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 19 | 20 | 32 | 33 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /app/src/main/res/layout/widgets_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/menu/cab_hidden_icons.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_app_icon.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_home_screen.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 9 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_amber.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_blue_grey.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_brown.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_cyan.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_deep_orange.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_deep_purple.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_grey_black.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_indigo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_light_blue.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_light_green.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_lime.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_orange.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_pink.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_purple.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_red.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_teal.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_yellow.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values-ar/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | إعدادات المشغل 4 | معلومات التطبيق 5 | اضغط مطولاً على الويدجت واسحبها إلى شاشتك الرئيسية 6 | إلغاء التثبيت 7 | إخفاء اﻷيقونة 8 | إضافة اﻷيقونات المخفية 9 | إدارة اﻷيقونات المخفية 10 | اﻷيقونات المخفية 11 | لا يمكن إلغاء تثبيت بعض التطبيقات بسبب قيود النظام، ولكن يمكن إخفاء أيقوناتها لتجنب ظهورها. 12 | درج التطبيق 13 | إغلاق درج التطبيق عند فتح تطبيق 14 | الأداة كبيرة جدًا بالنسبة لحجم الشاشة الرئيسية الحالي 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/values-az/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-b+es+419/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-be/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-bg/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Начален екран 4 | Начален Екран Настройки 5 | Информация за приложението 6 | Натиснете дълго приспособлението и го плъзнете на началния екран 7 | Деинсталиране 8 | Скриване на иконата 9 | Добавяне на скритите икони 10 | Управлявай скритите икони 11 | Скрити икони 12 | Някои приложения не могат да бъдат деинсталирани поради системни ограничения, но можете поне да скриете иконите им, за да не ги виждате. 13 | -------------------------------------------------------------------------------- /app/src/main/res/values-bn-rBD/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-bn/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-br/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-bs/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Pokretač 4 | Postavke pokretača 5 | Informacije o aplikaciji 6 | Pritisni widget i povuci ga na početni ekran 7 | Deinstaliraj 8 | Sakrij ikonu 9 | Dodajte skrivene ikone 10 | Upravljanje skrivenim ikonama 11 | Skrivene ikone 12 | Neke aplikacije se ne mogu deinstalirati zbog ograničenja sistema, ali njihove ikone možeš sakriti. 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/values-ca/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Llançador 4 | Configuració del llançador 5 | Informació de l\'aplicació 6 | Premeu llargament el giny i arrossegueu-lo a la pantalla d\'inici 7 | Desinstal·la 8 | Oculta la icona 9 | Afegeix icones ocultes 10 | Gestiona les icones ocultes 11 | Icones ocultes 12 | Algunes aplicacions no es poden desinstal·lar a causa de les restriccions del sistema, però almenys podeu ocultar les seves icones per a evitar que es vegin. 13 | Calaix d\'aplicacions 14 | Tanca el calaix d\'aplicacions en obrir una aplicació 15 | El giny és massa gros per a la mida de la pantalla d\'inici actual 16 | Pantalla inicial 17 | Toc doble per a bloquejar la pantalla 18 | 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. 19 | Desactivant el permís d\'administració es desactivarà la funció de toc doble per a bloquejar la pantalla. 20 | -------------------------------------------------------------------------------- /app/src/main/res/values-ckb/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ڕێکخستنەکان 4 | زانیاری بەرنامە 5 | ماوەیەک دەست ڕاگرە لەسەر کورتکراوەکە بۆ زیادکردن بۆسەر شاشەی سەرەکی 6 | سڕینەوە 7 | شاردنەوەی ئایکۆن 8 | زیادکردنی ئایکۆنە شاراوەکان 9 | ڕێکخستنی ئایکۆنە شاراوەکان 10 | ئایکۆنە شاراوەکان 11 | هەندێ بەرنامە ناتوانرێ بسڕدرێتەوە بەهۆی ڕێگریکردنی سیستەمەوە، بەڵام ئەتوانی ئایکۆنەکەی بشاریتەوە لە لیستەکەدا. 12 | پیشاندانی بەرنامەکان 13 | داخستنی پیشاندەری بەرنامەکان لەکاتی کردنەوەی بەرنامەکاندا 14 | شاشەی سەرەکی 15 | قەبارەی کورتکراوەکە زۆر گەورەیە بۆ زیادکردنی بۆ شاشەی سەرەکی 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/values-cr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-cs/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Spuštěč 4 | Nastavení spouštěče 5 | O aplikaci 6 | Widget dlouze stiskněte a přetáhněte jej na domovskou obrazovku 7 | Odinstalovat 8 | Skrýt ikonu 9 | Přidat skryté ikony 10 | Spravovat skryté ikony 11 | Skryté ikony 12 | Některé aplikace nelze kvůli systémovým omezením odinstalovat. Ale můžete alespoň skrýt jejich ikony, abyste je neviděli. 13 | Domovská obrazovka 14 | Widget je příliš velký na aktuální velikost domovské obrazovky 15 | Nabídka aplikací 16 | Zavřít nabídku aplikací po otevření aplikace 17 | 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. 18 | Deaktivací oprávnění správce zakážete funkci zamykání obrazovky dvojitým klepnutím. 19 | Klepněte dvakrát pro zamknutí obrazovky 20 | -------------------------------------------------------------------------------- /app/src/main/res/values-cy/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-da/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Launcher 4 | Launcher Indstillinger 5 | -------------------------------------------------------------------------------- /app/src/main/res/values-de/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Launcher-Einstellungen 4 | App-Infos 5 | Drücke lange auf das Widget und ziehe es auf deinen Startbildschirm 6 | Deinstallieren 7 | Symbol ausblenden 8 | Ausgeblendete Symbole hinzufügen 9 | Ausgeblendete Symbole verwalten 10 | Ausgeblendete Symbole 11 | Einige Apps können aufgrund von Systemeinschränkungen nicht deinstalliert werden, aber du kannst zumindest ihre Symbole ausblenden, um sie nicht zu sehen. 12 | App-Schublade 13 | App-Schublade beim Öffnen einer App schließen 14 | Startbildschirm 15 | Das Widget ist zu groß für den aktuellen Startbildschirm 16 | Launcher 17 | 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. 18 | Doppeltes Antippen zum Sperren des Bildschirms 19 | Durch Entfernen der Administratorberechtigung wird die Funktion „Doppeltes Antippen zum Sperren des Bildschirms“ deaktiviert. 20 | -------------------------------------------------------------------------------- /app/src/main/res/values-el/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Εκκινητής 4 | Ρυθμίσεις Εκκινητή 5 | Πληροφορίες εφαρμογής 6 | Πατήστε παρατεταμένα το γραφικό στοιχείο και σύρετέ το στην αρχική οθόνη 7 | Απεγκατάσταση 8 | Απόκρυψη εικονιδίου 9 | Προσθήκη κρυφών εικονιδίων 10 | Διαχείριση κρυφών εικονιδίων 11 | Κρυφά εικονίδια 12 | Ορισμένες εφαρμογές δεν μπορούν να απεγκατασταθούν λόγω περιορισμών του συστήματος, αλλά μπορείτε να αποκρύψετε τα εικονίδια τους για να μην φαίνονται. 13 | Συρτάρι εφαρμογών 14 | Κλείστε το συρτάρι εφαρμογών κατά το άνοιγμα μιας εφαρμογής 15 | Αρχική οθόνη 16 | Το γραφικό είναι πολύ μεγάλο για το τρέχον μέγεθος της αρχικής οθόνης 17 | Για να ενεργοποιήσετε τη λειτουργία διπλής βρύσης για κλείδωμα οθόνης, πρέπει να παραχωρήσετε άδεια διαχειριστή. Λάβετε υπόψη ότι δεν είναι δυνατή η κατάργηση εγκατάστασης της εφαρμογής μέχρι να καταργηθεί αυτή η άδεια. 18 | Διπλό πάτημα για κλείδωμα οθόνης 19 | Η απενεργοποίηση της άδειας διαχειριστή θα απενεργοποιήσει τη λειτουργία διπλής βρύσης για κλείδωμα οθόνης. 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/values-en-rGB/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-en-rIN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-eo/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Lanĉilo 4 | Lanĉilaj agordoj 5 | Longe premu la fenestraĵon kaj treni ĝin sur vian hejmekranon 6 | Malinstali 7 | Kaŝi bildeton 8 | Kaŝitaj bildetoj 9 | Aplikaĵa tirkesto 10 | Fermi aplikaĵan tirkeston kiam aplikaĵo estas malfermita 11 | Hejmekrano 12 | La fenestraĵo tro grandas por la aktuala grandeco de la hejmekrano 13 | Aldoni kaŝitajn bildetojn 14 | Administri kaŝitajn bildetojn 15 | Ne eblas malinstali kelkajn aplikaĵojn pro sistemaj limigoj, sed almenaŭ eblas kaŝi iliajn bildetojn por eviti vidi ilin. 16 | Duoble frapetu por ŝlosi la ekranon 17 | 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. 18 | Malŝalto de administraj permesoj malŝaltos la funkcion de ŝlosado de ekrano per duobla frapeto. 19 | Aplikaĵaj informoj 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/values-es-rUS/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-es/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Lanzador 4 | Configuración del lanzador 5 | Información de la aplicación 6 | Mantenga presionado el widget y arrástrelo a su pantalla de inicio 7 | Desinstalar 8 | Ocultar icono 9 | Agregar iconos ocultos 10 | Gestionar los iconos ocultos 11 | Iconos ocultos 12 | Algunas aplicaciones no se pueden desinstalar debido a las restricciones del sistema, pero al menos puedes ocultar sus iconos para evitar verlas. 13 | Cajón de aplicaciones 14 | Cerrar el cajón de aplicaciones al abrir una aplicación 15 | El widget es demasiado grande para el tamaño actual de la pantalla de inicio 16 | Pantalla de inicio 17 | Toca dos veces para bloquear la pantalla 18 | Al desactivar el permiso de administrador se desactivará la función de doble toque para bloquear la pantalla. 19 | 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. 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/values-et/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Käivitaja 4 | Käivitaja seadistused 5 | Rakenduse teave 6 | Vajutage pikalt vidinat ja lohistage see oma koduekraanile 7 | Eemalda rakendus 8 | Peida ikoon 9 | Lisa peidetud ikoone 10 | Halda peidetud ikoone 11 | Peidetud ikoonid 12 | Mõnda rakendust ei saa süsteemipiirangute tõttu eemaldada. Selleks, et neid mitte näha, võid vähemalt nende ikoonid ära peita. 13 | Rakenduste kaust 14 | Rakenduse avamisel sulge rakenduste kausta vaade 15 | Avaleht 16 | Vidin on liiga suur praeguse ekraanimõõdu jaoks 17 | Topeltpuudutus lukustusvaates 18 | Peakasutaja õiguste eemaldamine lülitab välja võimaluse kasutada lukustusvaates topeltpuudutust. 19 | Kui soovid lukustusvaates kasutada topeltpuudutust, siis vajab rakendus peakasutaja õigusi. Palun arvesta, et rakenduse eemaldamiseks pead esmalt eemaldama need õigused. 20 | -------------------------------------------------------------------------------- /app/src/main/res/values-eu/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Abiarazlea 4 | Luze sakatu trepeta eta arrastatu hasierako pantailara 5 | Desinstalatu 6 | Ezkutatu ikonoa 7 | Ezkutuko ikonoak 8 | Aplikazioen tiradera 9 | Itxi aplikazioen tiradera aplikazio bat irekitzean 10 | Hasierako pantaila 11 | Trepeta handiegia da duzun hasierako pantailaren tamainarako 12 | Abiarazlearen ezarpenak 13 | Aplikazioaren informazioa 14 | Gehitu ezkutuko ikonoak 15 | Kudeatu ezkutuko ikonoak 16 | Aplikazio batzuk ezin dira desinstalatu sistemaren murrizketak direla eta, baina gutxienez haien ikonoak ezkutatu ditzakezu ez ikusteko. 17 | Sakatu bi aldiz pantaila blokeatzeko 18 | Bi aldiz sakatuta pantaila blokeatzeko, kudeatzaile baimena eman behar duzu. Kontuan izan baimen hau kendu arte ezingo duzula aplikazioa telefonotik kendu. 19 | Kudeatzaile baimena desaktibatzean, pantaila blokeatzeko bi aldiz ikutzea desaktibatu egingo da. 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/values-fa/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-fi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Käynnistin 4 | Käynnistimen asetukset 5 | Sovelluksen tiedot 6 | Paina vimpainta pitkään ja vedä se aloitusnäytöllesi 7 | Poista asennus 8 | Piilota kuvake 9 | Lisää piilotettuja kuvakkeita 10 | Hallitse piilotettuja kuvakkeita 11 | Piilotetut kuvakkeet 12 | Joitakin sovelluksia ei ole järjestelmärajoitusten vuoksi mahdollista poistaa, mutta voit kuitenkin piilottaa niiden kuvakkeet näkyvistä. 13 | Vimpain on liian suuri nykyiseen aloitusnäytön kokoon 14 | Kotinäyttö 15 | Sulje sovellusvedin, kun uusi sovellus avataan 16 | Sovellusvedin 17 | Näytön kaksoisnapautuslukitus vaatii pääkäyttäjäoikeuksia. Huomio, että sovellusta ei voida poistaa, ennen kuin tämä oikeus on poistettu. 18 | Kaksoisnapauta lukitaksesi näytön 19 | Pääkäyttäjäoikeuden poiskytkentä, estää kaksoisnapautuslukituksen toiminnan. 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/values-fil/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-fr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Lanceur 4 | Paramètres du lanceur 5 | Infos sur l\'appli 6 | Appuyez longuement sur le widget et faites-le glisser sur votre écran d\'accueil 7 | Désinstaller 8 | Masquer l\'icône 9 | Ajouter des icônes cachées 10 | Gérer les icônes cachées 11 | Icônes cachées 12 | Certaines applications ne peuvent pas être désinstallées en raison de restrictions du système, mais vous pouvez au moins masquer leurs icônes pour éviter de les voir. 13 | Tiroir d\'appli 14 | Fermer le tiroir de l\'appli à l\'ouverture d\'une application 15 | Le widget est trop grand pour la taille actuelle de l\'écran 16 | Écran d\'accueil 17 | 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. 18 | La désactivation de l\'autorisation d\'administrateur désactivera la fonction de double appui pour verrouiller l\'écran. 19 | Appuyez deux fois pour verrouiller l\'écran 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/values-ga/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Lainseálaí 4 | Socruithe Lainseálaí 5 | Eolas aip 6 | Brúigh fada an ghiuirléid agus tarraing ar do scáileán baile é 7 | Díshuiteáil 8 | Deilbhíní i bhfolach 9 | Bainistigh deilbhíní i bhfolach 10 | Cuir deilbhíní i bhfolach 11 | Ní féidir roinnt aipeanna a dhíshuiteáil mar gheall ar shrianta córais, ach is féidir leat a gcuid deilbhíní a cheilt ar a laghad ionas nach bhfeicfidh tú iad. 12 | Tarraiceán aip 13 | Dún tarraiceán aip nuair a osclaítear aip 14 | Scáileán baile 15 | Tá an ghiuirléid ró-mhór do mhéid an scáileáin baile reatha 16 | Folaigh deilbhín 17 | Tapáil faoi dhó chun an scáileán a ghlasáil 18 | 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. 19 | 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. 20 | -------------------------------------------------------------------------------- /app/src/main/res/values-gl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Lanzador 4 | Axustes do lanzador 5 | Información da aplicación 6 | Manteña premido o widget e arrástrao a túa pantalla de inicio 7 | Desinstalar 8 | Ocultar icona 9 | Engade iconas ocultas 10 | Xestionar iconas ocultas 11 | Iconas ocultas 12 | Algunhas aplicacións non se poden desinstalar debido ás restricións do sistema, pero polo menos podes ocultar as súas iconas para evitar velas. 13 | Panel de apps 14 | Pechar o panel ao abrir unha app 15 | O widget é demasiado grande para o tamaño da pantalla de inicio 16 | Pantalla de inicio 17 | -------------------------------------------------------------------------------- /app/src/main/res/values-hi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | लांचर 4 | लॉन्चर सेटिंग्स 5 | ऐप जानकारी 6 | विजेट को देर तक दबाकर रखें और इसे अपनी होम स्क्रीन पर खींचें 7 | अनइंस्टॉल करें 8 | ऑइकन छुपायें 9 | छिपे हुए आइकन जोड़ें 10 | छुपे हुए आइकन प्रबंधित करें 11 | छिपे हुए आइकन 12 | सिस्टम प्रतिबंधों के कारण कुछ ऐप्स को अनइंस्टॉल नहीं किया जा सकता है, लेकिन आप उन्हें देखने से बचने के लिए कम से कम उनके आइकन छिपा सकते हैं। 13 | ऐप ड्रॉअर 14 | ऐप खोलने पर ऐप ड्रॉअर बंद कर दें 15 | होम स्क्रीन 16 | वर्तमान होम स्क्रीन आकार के लिए विजेट बहुत बड़ा है 17 | स्क्रीन लॉक करने के लिए डबल-टैप करने वाले फीचर को सक्षम करने के लिए प्रशासनिक अनुमति आवश्यक है। ध्यान रखें कि ये ऐप अनइंस्टॉल नहीं हो पाएगा जब तक ये अनुमति रहेगी। 18 | स्क्रीन लॉक करने के लिए डबल टैप करें 19 | प्रशासनिक अनुमतियाँ हटाये जाने पर डबल-टैप स्क्रीन लॉक सुविधा अक्षम हो जायेगी। 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/values-hr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Pokretač 4 | Postavke pokretača 5 | Informacije o aplikaciji 6 | Pritisni widget i povuci ga na početni ekran 7 | Deinstaliraj 8 | Sakrij ikonu 9 | Dodajte skrivene ikone 10 | Upravljanje skrivenim ikonama 11 | Skrivene ikone 12 | Neke aplikacije se ne mogu deinstalirati zbog ograničenja sustava, ali njihove ikone možeš sakriti. 13 | Početni ekran 14 | Ladica aplikacije 15 | Zatvori ladicu aplikacija pri otvaranju aplikacije 16 | Widget je prevelik za trenutnu veličinu početnog ekrana 17 | Dodirni dvaput za zaključavanje ekrana 18 | 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. 19 | Uklanjanje administratorske dozvole će deaktivirati funkciju dvostrukog dodira za zaključavanje ekrana. 20 | -------------------------------------------------------------------------------- /app/src/main/res/values-hu/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Indító 4 | Indító beállításai 5 | Alkalmazásinformációk 6 | Nyomja meg hosszan a modult és húzza a kezdőképernyőre 7 | Eltávolítás 8 | Ikon elrejtése 9 | Rejtett ikonok hozzáadása 10 | Rejtett ikonok kezelése 11 | Rejtett ikonok 12 | Egyes alkalmazások rendszerkorlátozások miatt nem távolíthatók el, de legalább elrejtheti az ikonjaikat, hogy ne lássa őket. 13 | Alkalmazásfiók 14 | Alkalmazásfiók bezárása egy alkalmazás megnyitásakor 15 | A modul túl nagy az aktuális kezdőképernyő méretéhez 16 | Kezdőképernyő 17 | Az rendszergazdai engedély kikapcsolása letiltja a képernyő lezárásához szükséges dupla koppintás funkciót. 18 | Dupla koppintás a képernyő zárolásához 19 | 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. 20 | -------------------------------------------------------------------------------- /app/src/main/res/values-ia/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Configurationes de lanceator 4 | Icones occulte 5 | Occultar icone 6 | Clauder le tiratorio al aperir un application 7 | Tiratorio de applicationes 8 | Information super le application 9 | Lanceator 10 | Disinstallar 11 | Schermo de initio 12 | Gestionar icones occulte 13 | Le widget es troppo grande pro le dimension actual del schermo de initio 14 | Adder icones occulte 15 | Alicun applicationes non pote esser disinstallate a causa de restrictiones del systema, ma tu pote al minus occultar lor icones pro evitar vider los. 16 | Preme longemente le widget e traher lo a tu schermo de initio 17 | -------------------------------------------------------------------------------- /app/src/main/res/values-in/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Peluncur 4 | Pengaturan Peluncur 5 | Info aplikasi 6 | Tekan lama pada widget dan seret pada layar beranda Anda 7 | Uninstal 8 | Sembunyikan ikon 9 | Tambahkan ikon tersembunyi 10 | Kelola ikon tersembunyi 11 | Ikon tersembunyi 12 | Beberapa aplikasi tidak dapat di-uninstal karena keterbatasan sistem, tetapi Anda masih dapat menyembunyikan ikon mereka untuk menyembunyikannya. 13 | Tutup laci aplikasi saat membuka aplikasi 14 | Laci aplikasi 15 | Widget terlalu besar untuk ukuran layar beranda saat ini 16 | Layar beranda 17 | Ketuk dua kali untuk mengunci layar 18 | Menonaktifkan izin admin akan menonaktifkan fitur ketuk dua kali untuk mengunci layar. 19 | Untuk mengaktifkan fitur ketuk dua kali untuk mengunci layar, Anda perlu memberikan izin admin. Perhatikan bahwa aplikasi tidak dapat dihapus sampai izin ini dicabut. 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/values-is/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-it/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Impostazioni del launcher 4 | Informazioni sull\'app 5 | Premi a lungo il widget e trascinalo sulla schermata iniziale 6 | Disinstalla 7 | Nascondi icona 8 | Aggiungi icone nascoste 9 | Gestisci le icone nascoste 10 | Icone nascoste 11 | Alcune applicazioni non possono essere disinstallate a causa di restrizioni di sistema, ma è possibile almeno nascondere le loro icone per evitare di vederle. 12 | Cassetto app 13 | Chiudi il cassetto app all\'apertura di un\'app 14 | Il widget è troppo grande per le dimensioni attuali della schermata principale 15 | Launcher 16 | Schermata iniziale 17 | 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. 18 | Doppio tocco per bloccare lo schermo 19 | Disattivando i permessi di amministratore disabiliterai la funzionalità di doppio tocco per bloccare lo schermo. 20 | -------------------------------------------------------------------------------- /app/src/main/res/values-iw/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | משגר 4 | הגדרות משגר 5 | מידע על האפליקציה 6 | לחיצה ארוכה על הווידג\'ט וגרירה שלו במסך הראשי 7 | הסרה 8 | הסתר אייקון 9 | הוסף אייקונים נסתרים 10 | ניהול אייקונים נסתרים 11 | אייקונים נסתרים 12 | לא ניתן להסיר אפליקציות מסוימות עקב מגבלות מערכת, אבל אתה יכול לפחות להסתיר את הסמלים שלהן כדי להימנע מלראות אותם. 13 | סגור את מגירת האפליקציות בעת פתיחת אפליקציה 14 | מסך בית 15 | הקש פעמיים כדי לנעול את המסך 16 | כדי להפעיל הקשה כפולה לנעילת מסך, עליך להעניק הרשאת מנהל. שימו לב שלא ניתן להסיר את האפליקציה עד להסרת ההרשאה הזו. 17 | ביטול הרשאת מנהל ישבית את אפשרות ההקשה הכפולה לנעילת מסך. 18 | מגירת אפליקציות 19 | הווידג\'ט גדול מדי לגודל מסך הבית הנוכחי 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/values-ja/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ランチャー 4 | ランチャー設定 5 | アプリ情報 6 | ウィジェットを長押しして、ホーム画面にドラッグします 7 | アンインストール 8 | アイコンを非表示 9 | 非表示のアイコンを追加 10 | 非表示アイコンの管理 11 | 非表示のアイコン 12 | 一部のアプリはシステムの制限によりアンインストールできませんが、非表示によって表示されないようにすることはできます。 13 | アプリドローワー 14 | アプリを開く際にドローワーを閉じる 15 | ホーム画面 16 | ウィジェットが現在のホーム画面のサイズよりも大きいです 17 | -------------------------------------------------------------------------------- /app/src/main/res/values-kn/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-ko/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-kr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-lt/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/values-ltg/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-lv/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-mk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-ml/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ലോഞ്ചർ 4 | ലോഞ്ചർ ക്രമീകരണങ്ങൾ 5 | പ്രയോഗ വിവരം 6 | അൺഇൻസ്റ്റാൾ ചെയ്യുക 7 | ബിംബം മറയ്ക്കുക 8 | മറഞ്ഞിരിക്കുന്ന ബിംബം ചേർക്കുക 9 | മറഞ്ഞിരിക്കുന്ന ബിംബം കൈകാര്യം ചെയ്യുക 10 | മറഞ്ഞിരിക്കുന്ന ബിംബ 11 | സിസ്റ്റം നിയന്ത്രണങ്ങൾ കാരണം ചില ആപ്പുകൾ അൺഇൻസ്‌റ്റാൾ ചെയ്യാൻ കഴിയില്ല, എന്നാൽ അവ കാണാതിരിക്കാൻ നിങ്ങൾക്ക് അവയുടെ ഐക്കണുകളെങ്കിലും മറയ്‌ക്കാം. 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/values-ms/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-my/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-nb-rNO/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | App-starter 4 | Innstillinger for App-starter 5 | Programinfo 6 | Lang-trykk miniprogrammet og dra det til din hjemmeskjerm 7 | Avinstaller 8 | Skjul ikon 9 | Legg til skjulte ikoner 10 | Håndter skjulte ikoner 11 | Skjulte ikoner 12 | Noen apper kan ikke avinstalleres pga. systemrestriksjoner, men du kan i det minste skjule deres ikoner for å unngå å se dem. 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/values-ne/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-nl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Instellingen Launcher 4 | App-info 5 | Druk lang op de widget en sleep hem vervolgens naar het beginscherm 6 | De-installeren 7 | Icoon verbergen 8 | Verborgen iconen toevoegen 9 | Verborgen iconen beheren 10 | Verborgen iconen 11 | Sommige apps kunnen niet worden verwijderd van het systeem, maar hun iconen kunnen wel worden verborgen. 12 | App-overzicht 13 | App-overzicht sluiten na het kiezen van een app 14 | Beginscherm 15 | Widget is te groot voor de huidige afmetingen van het beginscherm 16 | Launcher 17 | Als je het recht voor apparaatbeheer niet toekent, wordt de functie \'dubbeltikken om het scherm te vergrendelen\' uitgeschakeld. 18 | 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. 19 | Dubbeltikken om het scherm te vergrendelen 20 | -------------------------------------------------------------------------------- /app/src/main/res/values-nn/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-or/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-pa-rPK/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | شروع 4 | شروع سیٹنگاں 5 | اَیپ دی جاݨکاری 6 | ایہہ وِجٹ نوں دیر تک دباؤ تے تہاڈے گھر دی سکرن تے پایو 7 | اݨ‌ایسٹال کرو 8 | آئیکون لُکاؤ 9 | لُکاۓ آئیکون پایو 10 | لُکاۓ آئیکون دیاں سیٹنگاں 11 | لُکاۓ آئیکون 12 | سِسٹم پابندیاں کرکے کجھ اَیپاں اݨ‌اینسٹال کر نہیں سکیاں، پر تسیں آئیکون لُکا سکدے او۔ 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/values-pa/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-pl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Ustawienia launchera 4 | Informacje o aplikacji 5 | Długo naciśnij widżet i przeciągnij go na ekran główny 6 | Odinstaluj 7 | Ukryj ikonę 8 | Dodaj ukryte ikony 9 | Zarządzaj ukrytymi ikonami 10 | Ukryte ikony 11 | Niektórych aplikacji nie można odinstalować ze względu na ograniczenia systemowe, ale możesz przynajmniej ukryć ich ikony, aby ich nie widzieć. 12 | Szuflada aplikacji 13 | Zamykaj szufladę aplikacji przy uruchomieniu aplikacji 14 | Ekran główny 15 | Widżet jest za duży dla aktualnego rozmiaru ekranu głównego 16 | Launcher 17 | Naciśnij dwukrotnie, aby zablokować ekran 18 | 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. 19 | Dezaktywacja uprawnienia administratora spowoduje wyłączenie funkcji dwukrotnego naciśnięcia w celu zablokowania ekranu. 20 | -------------------------------------------------------------------------------- /app/src/main/res/values-pt-rBR/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Configurações do Iniciador 4 | Informações do aplicativo 5 | Toque e segure o widget e arraste-o para sua tela inicial 6 | Desinstalar 7 | Ocultar ícone 8 | Adicionar ícones ocultos 9 | Gerenciar ícones ocultos 10 | Ícones ocultos 11 | Alguns aplicativos não podem ser desinstalados devido a restrições do sistema, mas você pode ao menos ocultar seus ícones para evitar vê-los. 12 | Gaveta de aplicativos 13 | Fechar gaveta de aplicativos ao abrir um aplicativo 14 | Tela inicial 15 | O widget é muito grande para o tamanho atual da tela inicial 16 | Fossify - Launcher 17 | Toque duas vezes para bloquear a tela 18 | 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. 19 | Desativar a permissão de administrador desabilitará o recurso de toque duplo para bloquear a tela. 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/values-pt-rPT/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Ocultar ícone 4 | Adicionar ícones ocultos 5 | Lançador 6 | Definições 7 | Gerir ícones ocultos 8 | Ícones ocultos 9 | Algumas aplicações não podem ser desinstaladas, mas pode ocultar os seus ícones. 10 | Ecrã inicial 11 | O widget é muito grande para o ecrã disponível 12 | Menu de aplicações 13 | Fechar menu de aplicações ao abrir uma aplicação 14 | Info da aplicação 15 | Toque longo no widget e arraste-o para o ecrã 16 | Desinstalar 17 | -------------------------------------------------------------------------------- /app/src/main/res/values-pt/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Lançador 4 | Definições 5 | Info da aplicação 6 | Toque longo no widget e arraste-o para o ecrã 7 | Desinstalar 8 | Ocultar ícone 9 | Adicionar ícones ocultos 10 | Gerir ícones ocultos 11 | Ícones ocultos 12 | Algumas aplicações não podem ser desinstaladas, mas pode ocultar os seus ícones. 13 | Menu de aplicações 14 | Fechar menu de aplicações ao abrir uma aplicação 15 | O widget é muito grande para o ecrã disponível 16 | Ecrã inicial 17 | Dois toques para bloquear o ecrã 18 | 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. 19 | Ao desativar a permissão, também desativa a possibilidade de bloquear o ecrã com dois toques. 20 | -------------------------------------------------------------------------------- /app/src/main/res/values-ro/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Lansator de aplicații 4 | Setări lansator de aplicații 5 | Informații despre aplicație 6 | Apăsați lung pe widget și trageți-l pe ecranul principal 7 | Dezinstalați 8 | Ascundeți iconița 9 | Adăugați iconițe ascunse 10 | Administrați iconițele ascunse 11 | Iconițe ascunse 12 | Unele aplicații nu pot fi dezinstalate din cauza restricțiilor de sistem, dar puteți ascunde iconițele lor pentru a nu le vedea. 13 | Sertar de aplicații 14 | Închideți sertarul de aplicații la deschiderea unei aplicații 15 | Ecran principal 16 | Widget-ul este prea mare pentru dimensiunea ecranului principal 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/values-ru/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Рабочий стол 4 | Настройки 5 | О приложении 6 | Удерживайте нажатие на виджет и перетащите его на главный экран 7 | Удалить 8 | Скрыть значок 9 | Добавить скрытые значки 10 | Управление скрытыми значками 11 | Скрытые значки 12 | Некоторые приложения нельзя удалить из-за системных ограничений, но можно скрыть их значки. 13 | Панель приложения 14 | Закрывать боковую панель при открытии приложения 15 | Домашний экран 16 | Виджет слишком велик для текущего размера домашнего экрана 17 | Двойное нажатие блокирует экран 18 | Для включения функции блокировки экрана двойным нажатием необходимы права администратора. Учтите, что приложение нельзя будет удалить, пока данное разрешение не будет отключено. 19 | Удаление прав администратора приведёт к отключению функции блокировки экрана двойным нажатием. 20 | -------------------------------------------------------------------------------- /app/src/main/res/values-sat/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-si/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-sk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Spúšťač 4 | Nastavenia Spúšťača 5 | Informácie o apke 6 | Umiestnite widget na domovskú obrazovku dlhým podržaním a potiahnutím 7 | Odinštalovať 8 | Skryť ikonku 9 | Pridať skryté ikonky 10 | Spravovať skryté ikonky 11 | Skryté ikonky 12 | Niektoré apky nemôžu byť odinštalované kvôli systémovým obmedzeniam, viete ich ale aspoň skryť, aby ste ich nevideli. 13 | Zoznam apiek 14 | Zavrieť zoznam apiek po spustení apky 15 | Domáca obrazovka 16 | Widget je príliš veľký pre súčasnú domácu obrazovku 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/values-sl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Zaganjalnik 4 | Nastavitve zaganjalnika 5 | Podatki o aplikaciji 6 | Dolgo pritisnite pripomoček in povlecite na domači zaslon 7 | Deinstalacija 8 | Skrijte ikono 9 | Dodajte skrite ikone 10 | Upravljajte s skritimi ikonami 11 | Skrite ikone 12 | Določenih aplikacij zaradi sistemskih omejitev ni mogoče odstraniti, njihove ikone pa skrijete, da jih ne vidite. 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/values-sr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Иницијатор 4 | Подешавања покретача 5 | Информације о апликацији 6 | Дуго притисните виџет и превуците га на почетни екран 7 | Деинсталирај 8 | Сакриј икону 9 | Додајте скривене иконе 10 | Управљајте скривеним иконама 11 | Скривене иконе 12 | Неке апликације се не могу деинсталирати због системских ограничења, али можете барем сакрити њихове иконе да их не видите. 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/values-sv/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Startprogram 4 | Inställningar för startprogrammet 5 | Appinformation 6 | Tryck länge på widgeten och dra den på startskärmen 7 | Avinstallera 8 | Dölj ikon 9 | Lägg till dolda ikoner 10 | Hantera dolda ikoner 11 | Dolda ikoner 12 | Vissa appar kan inte avinstalleras på grund av systembegränsningar, men du kan åtminstone dölja deras ikoner för att slippa se dem. 13 | Applåda 14 | Stäng applådan när en app öppnas 15 | Startskärm 16 | Widgeten är för stor för startskärmens aktuella storlek 17 | 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. 18 | Dubbeltryck för att låsa skärmen 19 | Om du inaktiverar administratörsbehörigheten inaktiveras funktionen dubbeltryck för att låsa skärmen. 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/values-ta/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-te/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-th/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-tr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Başlatıcı 4 | Başlatıcı Ayarları 5 | Uygulama bilgisi 6 | Widget\'a uzun basın ve ana ekranınıza sürükleyin 7 | Kaldır 8 | Simgeyi gizle 9 | Gizli simgeler ekle 10 | Gizli simgeleri yönet 11 | Gizli simgeler 12 | Bazı uygulamalar sistem kısıtlamaları nedeniyle kaldırılamaz, ancak bu uygulamaları görmemek için simgelerini gizleyebilirsiniz. 13 | Uygulama çekmecesi 14 | Bir uygulama açıldığında uygulama çekmecesini kapat 15 | Ana ekran 16 | Widget, şu anki ana ekran boyutu için çok büyük 17 | Kilit ekranına çift dokun 18 | Yönetici iznini devre dışı bırakmak, kilit ekranı özelliğini devre dışı bırakır. 19 | 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. 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/values-uk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Лаунчер 4 | Налаштування 5 | Про застосунок 6 | Натисніть і утримуйте віджет і перетягніть його на головний екран 7 | Видалити 8 | Приховати піктограму 9 | Додати приховані значки 10 | Керування прихованими піктограмами 11 | Приховані піктограми 12 | Деякі застосунки не можна видалити через системні обмеження, але ви можете принаймні приховати їх піктограми, щоб уникнути їх перегляду. 13 | Панель застосунку 14 | Закривати панель застосунок при відкриті застосунку 15 | Домашній екран 16 | Віджет надто великий для поточного розміру домашнього екрану 17 | Скасування прав адміністратора вимкне функцію подвійного дотику для блокування екрана. 18 | Двічі торкніться, щоб заблокувати екран 19 | Щоб увімкнути функцію блокування екрана подвійним дотиком, вам потрібно надати права адміністратора. Зверніть увагу, що застосунок не можна буде видалити, поки цей дозвіл не буде скасовано. 20 | -------------------------------------------------------------------------------- /app/src/main/res/values-vi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Trình khởi chạy 4 | Cài đặt trình khởi chạy 5 | Thông tin ứng dụng 6 | Nhấn giữ tiện ích và kéo nó vào màn hình chính của bạn 7 | Gỡ cài đặt 8 | Ẩn biểu tượng 9 | Quản lí biểu tượng đã ẩn 10 | Thêm biểu tượng đã ẩn 11 | Biểu tượng đã ẩn 12 | Một số ứng dụng không thể bị gỡ cài đặt do giới hạn của hệ thống, nhưng bạn vẫn có thể ẩn biểu tượng của chúng để khỏi nhìn thấy chúng. 13 | Ngăn kéo ứng dụng 14 | Đóng ngăn kéo ứng dụng khi mở ứng dụng 15 | Màn hình chính 16 | Tiện ích này quá lớn với kích thước màn hình chính hiện tại 17 | -------------------------------------------------------------------------------- /app/src/main/res/values-w600dp/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 3 | 10 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/values-zgh/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ⵜⴰⵎⵣⵡⴰⵔⵓⵜ 4 | ⵜⵉⵙⵖⴰⵍ ⵏ ⵜⵎⵣⵡⴰⵔⵓⵜ 5 | ⵉⵏⵖⵎⵉⵙⵏ ⵅⴼ ⵜⵙⵏⵙⵉ 6 | ⴰⴷⵔ ⵎⵍⵉⵃ ⵅⴼ widget ⵜⴰⵡⵉ ⵜⵜ ⵖⵔ ⵓⵎⵉⵥⴰⵕ ⵏⵏⴽ ⴰⵎⵇⵇⵔⴰⵏ 7 | ⵜⵓⵙⵙⵔⴰ ⵏ ⵡⴰⴳⴰⵎ 8 | ⴼⴼⵔ ⵜⴰⵙⴰⵔⵓⵜ 9 | ⵔⵏⵓ ⵜⵉⵙⵓⵔⴰ ⵉⴼⴼⵔⵏ 10 | ⴰⵙⵡⵓⴷⴷⵓ ⵏ ⵜⵙⵓⵔⴰ ⵉⴼⴼⵔⵏ 11 | ⵜⵉⵙⵓⵔⴰ ⵉⴼⴼⵔⵏ 12 | ⵓⵔ ⵜⵣⵔⵉⵏ ⵜⵓⵙⵙⵔⴰ ⵏ ⴽⵔⴰ ⵏ ⵜⵙⵏⵙⵉⵡⵉⵏ ⵙ ⵜⵎⵏⵜⵉⵍⵜ ⵏ ⵉⵙⵍⴳⵏⵏ ⵏ ⵓⵏⴳⵔⴰⵡ, ⵎⴰⵛⴰ ⵜⵣⵔⵉ ⵜⵓⴼⴼⵔⴰ ⵏ ⵜⵙⵓⵔⴰ ⵏⵏⵙⵏⵜ ⵃⵎⴰ ⵓⵔ ⴷ ⵜⵜⴹⵀⴰⵕⵏⵜ. 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 启动器 4 | 启动器设置 5 | 应用信息 6 | 长按微件并将其拖动到主屏幕 7 | 卸载 8 | 隐藏图标 9 | 添加隐藏的图标 10 | 管理隐藏的图标 11 | 隐藏的图标 12 | 某些应用因系统限制而无法卸载, 但你至少可以隐藏它们的图标避免看见它们。 13 | 应用抽屉 14 | 打开抽屉内应用时关闭抽屉 15 | 主屏幕 16 | 微件对当前屏幕尺寸而言太大了 17 | 双击锁屏 18 | 停用管理员权限将禁用双击锁屏功能。 19 | 要启用双击锁屏功能,您需要授予管理员权限。请注意,在移除此权限之前无法卸载该应用。 20 | -------------------------------------------------------------------------------- /app/src/main/res/values-zh-rHK/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/values-zh-rTW/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 啟動器 4 | 啟動器設定 5 | 應用程式資訊 6 | 長按小工具並將其拖曳至你的主畫面 7 | 解除安裝 8 | 隱藏圖示 9 | 新增隱藏圖示 10 | 管理隱藏圖示 11 | 隱藏圖示 12 | 由於系統限制,有些應用程式無法被移除,但您至少可以將它們的圖示隱藏起來,避免看到它們。 13 | 應用程式抽屜 14 | 開啟應用程式時關閉應用程式抽屜 15 | 主畫面 16 | 小工具對於目前主畫面大小來說太大 17 | 輕觸兩下以鎖定螢幕 18 | 停用管理權限將會停用輕觸兩下以鎖定螢幕的功能。 19 | 要啟用輕觸兩下以鎖定螢幕的功能,您必須授予管理權限。請注意,在移除此權限前,無法解除安裝應用程式。 20 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #33000000 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 55dp 3 | 150dp 4 | 50dp 5 | 140dp 6 | 10dp 7 | 8dp 8 | 20dp 9 | 6dp 10 | 1dp 11 | 6dp 12 | 200dp 13 | 500dp 14 | 24dp 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/values/donottranslate.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Fossify Launcher 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/values/ic_launcher_amber_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #106D20 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #106D20 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/ic_launcher_blue_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #106D20 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 3 | 8 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Launcher 4 | Launcher Settings 5 | App info 6 | Long press the widget and drag it on your home screen 7 | Uninstall 8 | Hide icon 9 | Add hidden icons 10 | Manage hidden icons 11 | Hidden icons 12 | Some apps cannot be uninstalled due to system restrictions, but you can at least hide their icons to avoid seeing them. 13 | App drawer 14 | Close app drawer on opening an app 15 | Home screen 16 | Widget is too big for current home screen size 17 | Double tap to lock screen 18 | 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. 19 | Deactivating admin permission will disable the double tap to lock screen feature. 20 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/xml/device_admin_policies.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.android).apply(false) 3 | alias(libs.plugins.kotlinAndroid).apply(false) 4 | alias(libs.plugins.ksp).apply(false) 5 | alias(libs.plugins.detekt).apply(false) 6 | } 7 | -------------------------------------------------------------------------------- /fastlane/Appfile: -------------------------------------------------------------------------------- 1 | json_key_file("fastlane/fastlane.json") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one 2 | package_name("org.fossify.home") # e.g. com.krausefx.app 3 | -------------------------------------------------------------------------------- /fastlane/Fastfile: -------------------------------------------------------------------------------- 1 | default_platform(:android) 2 | 3 | platform :android do 4 | desc 'Run unit & instrumentation tests' 5 | lane(:test) { test_android } 6 | 7 | desc 'Build & deploy AAB to Google Play (includes metadata)' 8 | lane(:deploy) { deploy_android } 9 | 10 | desc 'Push Play Store metadata' 11 | lane(:metadata) { metadata_android } 12 | end 13 | -------------------------------------------------------------------------------- /fastlane/README.md: -------------------------------------------------------------------------------- 1 | fastlane documentation 2 | ---- 3 | 4 | # Installation 5 | 6 | Make sure you have the latest version of the Xcode command line tools installed: 7 | 8 | ```sh 9 | xcode-select --install 10 | ``` 11 | 12 | For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane) 13 | 14 | # Available Actions 15 | 16 | ## Android 17 | 18 | ### android test 19 | 20 | ```sh 21 | [bundle exec] fastlane android test 22 | ``` 23 | 24 | Run unit & instrumentation tests 25 | 26 | ### android deploy 27 | 28 | ```sh 29 | [bundle exec] fastlane android deploy 30 | ``` 31 | 32 | Build & deploy AAB to Google Play (includes metadata) 33 | 34 | ### android metadata 35 | 36 | ```sh 37 | [bundle exec] fastlane android metadata 38 | ``` 39 | 40 | Push Play Store metadata 41 | 42 | ---- 43 | 44 | This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. 45 | 46 | More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools). 47 | 48 | The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools). 49 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ca/full_description.txt: -------------------------------------------------------------------------------- 1 | El Fossify Launcher és la porta d'entrada a una experiència de pantalla d'inici ràpida, personalitzada i amb prioritat de la privadesa. Sense anuncis, sense programari inflat: només un llançador suau i eficient dissenyat per adaptar-se al vostre estil i preferències úniques.

2 | 🚀 NAVEGACIÓ RÀPIDA:
3 | Navegueu pel dispositiu amb rapidesa i precisió. El Fossify Launcher està optimitzat per ser responsiu i fluid, donant-vos accés instantani a les aplicacions preferides sense retard.

4 | 🎨 PERSONALITZACIÓ COMPLETA:
5 | Adapteu la pantalla d'inici amb temes dinàmics, colors personalitzats i disposicions. Personalitzeu el llançador perquè coincideixi amb el vostre estil amb eines fàcils d'utilitzar que us permeten crear una configuració única.

6 | 🖼️ SUPORT COMPLET DE GINYS:
7 | Integreu ginys totalment redimensionables amb facilitat. Tant si necessiteu rellotges, calendaris o altres eines útils, el Fossify Launcher garanteix que es fusionen perfectament amb el disseny de la pantalla d'inici.

8 | 📱 SENSE DESORDRE NO DESITJAT-:
9 | Gestioneu les aplicacions amagant-les o desinstal·lant-les amb pocs tocs, mantenint la pantalla d'inici organitzada i lliure de desordre.

10 | 🔒 PRIVADESA I SEGURETAT:
11 | La teva privacitat és al cor del Fossify Launcher. Sense accés a Internet i sense permisos intrusius, les vostres dades es queden amb vós. Sense seguiment, sense anuncis: només un llançador construït per a respectar la vostra privadesa.

12 | 🌐 GARANTIA DEL CODI OBERT:
13 | El Fossify Launcher està construït sobre una base de codi obert, que us permet revisar el nostre codi a GitHub, fomentant la confiança i una comunitat compromesa amb la privadesa.

14 | Trobeu l'equilibri de velocitat, personalització i privacitat amb el Fossify Launcher.

15 | Exploreu més aplicacions de Fossify: https://www.fossify.org
16 | Codi obert: https://www.github.com/FossifyOrg
17 | Uniu-vos a la comunitat a Reddit: https://www.reddit.com/r/Fossify
18 | Connecteu a Telegram: https://t.me/Fossify
19 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ca/short_description.txt: -------------------------------------------------------------------------------- 1 | Personalitzeu la pantalla d'inici amb un llançador ràpid, sense anuncis i lliure 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/cs-CZ/full_description.txt: -------------------------------------------------------------------------------- 1 | Launcher Fossify je vstupní branou k rychlému, personalizovanému a na soukromí zaměřenému prostředí domovské obrazovky. Žádné reklamy, žádné zbytečnosti – jen plynulý a efektivní launcher navržený tak, aby vyhovoval vašemu jedinečnému stylu a preferencím.

2 | 🚀 RYCHLÁ NAVIGACE:
3 | Navigujte své zařízení rychle a přesně. Launcher Fossify je optimalizován tak, aby reagoval rychle a plynule a poskytoval vám okamžitý přístup k vašim oblíbeným aplikacím.

4 | 🎨 PLNÉ PŘIZPŮSOBENÍ:
5 | Domovskou obrazovku si můžete přizpůsobit pomocí dynamických motivů, vlastních barev a rozvržení. Přizpůsobte si launcher svému stylu pomocí snadno použitelných nástrojů, které vám umožní vytvořit skutečně jedinečné nastavení.

6 | 🖼️ KOMPLETNÍ PODPORA WIDGETŮ:
7 | Snadná integrace widgetů s možností změny velikosti. Ať už potřebujete hodiny, kalendáře nebo jiné praktické nástroje, Launcher Fossify zajistí, že se hladce začlení do designu vaší domovské obrazovky.

8 | 📱 BEZ NEPOTŘEBNÝCH FUNKCÍ:
9 | Snadná správa aplikací jejich skrýváním nebo odinstalováním pomocí několika klepnutí, aby byla domovská obrazovka přehledná a bez nepořádku.

10 | 🔒 SOUKROMÍ A BEZPEČNOST:
11 | Vaše soukromí je základem Launcheru Fossify. Bez přístupu k internetu a bez rušivých oprávnění zůstanou vaše data u vás. Žádné sledování, žádné reklamy - jen launcher vytvořený tak, aby respektoval vaše soukromí.

12 | 🌐 OTEVŘENÝ ZDROJ:
13 | Launcher Fossify je postavena na open-source základu, který vám umožňuje prohlížet si náš kód na GitHubu, což podporuje důvěru a má komunitu, která se zavázala k ochraně soukromí. 14 | Najděte si rovnováhu mezi rychlostí, přizpůsobením a soukromím s Launcherem Fossify.

15 | Prozkoumejte další aplikace Fossify: https://www.fossify.org 16 | Otevřený zdrojový kód: https://www.github.com/FossifyOrg 17 | Připojte se ke komunitě na Redditu: https://www.reddit.com/r/Fossify 18 | Připojte se k Telegramu: https://t.me/Fossify 19 | -------------------------------------------------------------------------------- /fastlane/metadata/android/cs-CZ/short_description.txt: -------------------------------------------------------------------------------- 1 | Přizpůsobte svou domovskou stránku s rychlým, open-source launcherem bez reklam 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/de-DE/full_description.txt: -------------------------------------------------------------------------------- 1 | Fossify Launcher ist dein Zugang zu einem schnellen, personalisierten und datenschutzfreundlichen Startbildschirm. Keine Werbung, kein Ballast – nur ein reibungsloser, effizienter Launcher, der auf deinen individuellen Stil und deine Vorlieben zugeschnitten ist.

2 | 🚀 BLITZSCHNELLE NAVIGATION:
3 | Navigiere mit Geschwindigkeit und Präzision auf deinem Gerät. Fossify Launcher ist so optimiert, dass er reaktionsschnell und flüssig ist und du sofort und ohne Verzögerung auf deine Lieblingsapps zugreifen kannst.

4 | 🎨 VOLLE ANPASSUNGSFÄHIGKEIT:
5 | Passe deinen Startbildschirm mit dynamischen Farbschemas, eigenen Farben und Layouts an. Mit einfach zu bedienenden Tools kannst du deinen Launcher an deinen Stil anpassen und so ein wirklich einzigartiges Setup erstellen.

6 | 🖼️ VOLLSTÄNDIGE WIDGET-UNTERSTÜTZUNG:
7 | 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.

8 | 📱 KEIN UNERWÜNSCHTES DURCHEINANDER:
9 | Verwalte deine Apps mühelos, indem du sie mit nur wenigen Fingertipps ausblendest oder deinstallierst, damit dein Startbildschirm übersichtlich bleibt.

10 | 🔒 DATENSCHUTZ UND SICHERHEIT:
11 | 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.

12 | 🌐 OPEN-SOURCE-GARANTIE:
13 | 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.

14 | Finde mit Fossify Launcher dein Gleichgewicht zwischen Geschwindigkeit, Anpassbarkeit und Privatsphäre.

15 | Entdecke weitere Apps von Fossify: https://www.fossify.org
16 | Open-Source-Code: https://www.github.com/FossifyOrg
17 | Tritt der Community auf Reddit bei: https://www.reddit.com/r/Fossify
18 | Verbinde dich auf Telegram: https://t.me/Fossify
19 | -------------------------------------------------------------------------------- /fastlane/metadata/android/de-DE/short_description.txt: -------------------------------------------------------------------------------- 1 | Startbildschirm mit einem schnellen, werbefreien, quelloffenen Launcher anpassen 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/1.txt: -------------------------------------------------------------------------------- 1 | * Initial release -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/2.txt: -------------------------------------------------------------------------------- 1 | * Fixed scrolling performance issues 2 | * Fixed various issues related to widgets 3 | * Other minor bug fixes and improvements 4 | * Added more translations -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/3.txt: -------------------------------------------------------------------------------- 1 | * Added double tap to lock screen feature 2 | * Added more translations -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/4.txt: -------------------------------------------------------------------------------- 1 | Changed: 2 | 3 | • Updated translations 4 | 5 | Removed: 6 | 7 | • Removed redundant launcher settings icon from the app drawer 8 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/5.txt: -------------------------------------------------------------------------------- 1 | Changed: 2 | 3 | • Updated translations 4 | 5 | Fixed: 6 | 7 | • Clicking home screen app labels now works as expected 8 | 9 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/full_description.txt: -------------------------------------------------------------------------------- 1 | Fossify Launcher is your gateway to a fast, personalized, and privacy-first home screen experience. No ads, no bloat – just a smooth, efficient launcher designed to fit your unique style and preferences.

2 | 🚀 LIGHTNING-FAST NAVIGATION:
3 | Navigate your device with speed and precision. Fossify Launcher is optimized to be responsive and fluid, giving you instant access to your favorite apps without lag.

4 | 🎨 FULL CUSTOMIZATION:
5 | Tailor your home screen with dynamic themes, custom colors, and layouts. Personalize your launcher to match your style with easy-to-use tools that let you create a truly unique setup.

6 | 🖼️ COMPLETE WIDGET SUPPORT:
7 | Integrate fully resizable widgets with ease. Whether you need clocks, calendars, or other handy tools, Fossify Launcher ensures they blend seamlessly into your home screen design.

8 | 📱 NO UNWANTED CLUTTER:
9 | Effortlessly manage your apps by hiding or uninstalling them in just a few taps, keeping your home screen organized and clutter-free.

10 | 🔒 PRIVACY AND SECURITY:
11 | Your privacy is at the heart of Fossify Launcher. With no internet access and no intrusive permissions, your data stays with you. No tracking, no ads – just a launcher built to respect your privacy.

12 | 🌐 OPEN-SOURCE ASSURANCE:
13 | Fossify Launcher is built on an open-source foundation, allowing you to review our code on GitHub, fostering trust and a community committed to privacy.

14 | Find your balance of speed, customization, and privacy with Fossify Launcher.

15 | Explore more Fossify apps: https://www.fossify.org
16 | Open-Source Code: https://www.github.com/FossifyOrg
17 | Join the community on Reddit: https://www.reddit.com/r/Fossify
18 | Connect on Telegram: https://t.me/Fossify
19 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/featureGraphic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Launcher/66c5bb89eff919f1f127070fb52c895803a5a6e9/fastlane/metadata/android/en-US/images/featureGraphic.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Launcher/66c5bb89eff919f1f127070fb52c895803a5a6e9/fastlane/metadata/android/en-US/images/icon.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/1_en-US.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Launcher/66c5bb89eff919f1f127070fb52c895803a5a6e9/fastlane/metadata/android/en-US/images/phoneScreenshots/1_en-US.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/2_en-US.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Launcher/66c5bb89eff919f1f127070fb52c895803a5a6e9/fastlane/metadata/android/en-US/images/phoneScreenshots/2_en-US.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/3_en-US.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Launcher/66c5bb89eff919f1f127070fb52c895803a5a6e9/fastlane/metadata/android/en-US/images/phoneScreenshots/3_en-US.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/4_en-US.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Launcher/66c5bb89eff919f1f127070fb52c895803a5a6e9/fastlane/metadata/android/en-US/images/phoneScreenshots/4_en-US.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/short_description.txt: -------------------------------------------------------------------------------- 1 | Customize your home screen with a fast, ad-free, open-source launcher -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/title.txt: -------------------------------------------------------------------------------- 1 | Fossify Launcher Beta -------------------------------------------------------------------------------- /fastlane/metadata/android/eo/short_description.txt: -------------------------------------------------------------------------------- 1 | Tajloru vian hejmekranon helpe de rapida, senreklama, malfermitkoda lanĉilo 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/es-ES/full_description.txt: -------------------------------------------------------------------------------- 1 | Fossify Launcher es tu puerta de entrada a una experiencia de pantalla de inicio rápida, personalizada y que prioriza la privacidad. Sin anuncios ni sobrecarga: solo un lanzador fluido y eficiente diseñado para adaptarse a tu estilo.

2 | 🚀 NAVEGACIÓN RÁPIDA COMO EL RELÁMPAGO:
3 | Navega por tu dispositivo con rapidez y precisión. Fossify Launcher está optimizado para responder de forma fluida y rápida, lo que te permite acceder al instante a tus aplicaciones favoritas.

4 | 🎨 PERSONALIZACIÓN COMPLETA:
5 | Personaliza tu pantalla de inicio con temas dinámicos, colores y diseños personalizados. Personaliza lo para que se adapte a tu estilo con herramientas fáciles de usar que te permiten crear una configuración verdaderamente única.

6 | 🖼️ SOPORTE COMPLETO PARA WIDGETS:
7 | Integre widgets totalmente redimensionables. Ya sea que necesite relojes, calendarios u otras herramientas útiles, Fossify Launcher garantiza que se integren perfectamente en su pantalla de inicio.

8 | 📱 SIN DESORDEN NO DESEADO:
9 | Administra sin esfuerzo tus aplicaciones ocultándolas o desinstalándolas con solo unos pocos toques, manteniendo tu pantalla de inicio organizada y sin desorden.

10 | 🔒 PRIVACIDAD Y SEGURIDAD:
11 | Tu privacidad es la prioridad de Fossify Launcher. Sin acceso a Internet ni permisos intrusivos, tus datos se quedan contigo. Sin seguimiento, sin anuncios: solo un launcher diseñado para respetar tu privacidad.

12 | 🌐 GARANTÍA DE CÓDIGO ABIERTO:
13 | Fossify Launcher está desarrollado sobre una base de código abierto, lo que le permite revisar nuestro código en GitHub, fomentando la confianza y una comunidad comprometida con la privacidad.

14 | Encuentra tu equilibrio entre velocidad, personalización y privacidad con Fossify Launcher.

15 | Explora más aplicaciones de Fossify: https://www.fossify.org
16 | Código fuente abierto: https://www.github.com/FossifyOrg
17 | Únase a la comunidad en Reddit: https://www.reddit.com/r/Fossify
18 | Conéctate en Telegram: https://t.me/Fossify
19 | -------------------------------------------------------------------------------- /fastlane/metadata/android/es-ES/short_description.txt: -------------------------------------------------------------------------------- 1 | Personaliza Inicio con un iniciador rápido, sin publicidad y de código abierto 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/et/short_description.txt: -------------------------------------------------------------------------------- 1 | Kohenda oma avalehte kiire, reklaamivaba ja avatud lähtekoodiga käivitajaga 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/fr-FR/full_description.txt: -------------------------------------------------------------------------------- 1 | Le Lanceur Fossify 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.

2 | 🚀 NAVIGATION ULTRA-RAPIDE :
3 | Naviguez sur votre appareil avec rapidité et précision. Le Lanceur Fossify est optimisé pour être réactif et fluide, vous donnant un accès instantané à vos applications préférées sans décalage.

4 | 🎨 PERSONNALISATION COMPLÈTE :
5 | 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.

6 | 🖼️ PRISE EN CHARGE COMPLÈTE DES WIDGETS :
7 | Intégrez facilement des widgets entièrement redimensionnables. Que vous ayez besoin d'horloges, de calendriers ou d'autres outils pratiques, le Lanceur Fossify veille à ce qu'ils s'intègrent parfaitement dans la conception de votre écran d'accueil.

8 | 📱 PAS D'ENCOMBREMENT INDÉSIRABLE :
9 | 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.

10 | 🔒 CONFIDENTIALITÉ ET SÉCURITÉ :
11 | Votre vie privée est au cœur du Lanceur Fossify. 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.

12 | 🌐 ASSURANCE OPEN SOURCE :
13 | Le Lanceur Fossify 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é.

14 | Trouvez votre équilibre entre vitesse, personnalisation et confidentialité avec le Lanceur Fossify.

15 | Découvrez d'autres applications Fossify : https://www.fossify.org
16 | Code open source : https://www.github.com/FossifyOrg
17 | Rejoignez la communauté sur Reddit : https://www.reddit.com/r/Fossify
18 | Connectez-vous sur Telegram : https://t.me/Fossify
19 | -------------------------------------------------------------------------------- /fastlane/metadata/android/fr-FR/short_description.txt: -------------------------------------------------------------------------------- 1 | Paramétrez votre écran d'accueil avec un lanceur rapide, sans pub, open-source 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ga/full_description.txt: -------------------------------------------------------------------------------- 1 | Is é Fossify Launcher do thairseach chuig eispéireas scáileáin baile tapa, pearsantaithe agus príobháideachta. Gan fógraí, gan bloat – níl ann ach tosaitheoir mín, éifeachtach atá deartha chun a bheith oiriúnach le do stíl uathúil agus do shainroghanna.

2 | 🚀 LOINGSEOIREACHT SOILSIÚCHÁIN:
3 | Déan do ghléas a nascleanúint le luas agus cruinneas. Tá Fossify Launcher optamaithe le bheith sofhreagrach agus sreabhán, rud a thugann rochtain láithreach duit ar na haipeanna is fearr leat gan mhoill.

4 | 🎨 CHUID IOMLÁN:
5 | Cuir do scáileán baile in oiriúint le téamaí dinimiciúla, dathanna saincheaptha agus leagan amach. Cuir do tosaitheoir in oiriúint duit féin le do stíl a mheaitseáil le huirlisí atá éasca le húsáid a ligeann duit socrú uathúil a chruthú.

6 | 🖼️ TACAÍOCHT GUIRLÍN CHOMHLÁNAIGH:
7 | Comhtháthaigh giuirléidí in-athmhéadaithe go hiomlán gan stró. Cibé an bhfuil cloig, féilirí, nó uirlisí áisiúla eile uait, cinntíonn Fossify Launcher go meascann siad gan uaim isteach i do dhearadh scáileáin baile.

8 | 📱 NÍL GLUAISEACHT GAN DÁIL:
9 | Déan do chuid aipeanna a bhainistiú gan stró trí iad a chur i bhfolach nó a dhíshuiteáil i gcúpla sconnaí, ag coinneáil do scáileán baile eagraithe agus saor ó thranglam.

10 | 🔒 PRÍOBHÁIDEACHT AGUS SLÁNDÁLA:
11 | Tá do phríobháideachas i gcroílár Fossify Launcher. Gan aon rochtain idirlín agus gan aon cheadanna ionsáite, fanann do shonraí leat. Gan rianú, gan aon fhógraí - níl ann ach tosaitheoir a tógadh chun do phríobháideachas a urramú.

12 | 🌐 ÁRACHAS FOINSE OSCAILTE:
13 | Tá Fossify Launcher bunaithe ar fhondúireacht foinse oscailte, a ligeann duit athbhreithniú a dhéanamh ar ár gcód ar GitHub, ag cothú muiníne agus pobail atá tiomanta do phríobháideachas.

14 | Faigh do chothromaíocht luais, saincheaptha agus príobháideachta le Fossify Launcher.

15 | Déan tuilleadh aipeanna Fossify a iniúchadh: https://www.fossify.org
16 | Cód Foinse Oscailte: https://www.github.com/FossifyOrg
17 | Bí leis an bpobal ar Reddit: https://www.reddit.com/r/Fossify
18 | Ceangail ar Telegram: https://t.me/Fossify
19 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ga/short_description.txt: -------------------------------------------------------------------------------- 1 | Saincheap do scáileán baile le tosaitheoir tapa foinse oscailte saor ó fhógraí 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/gl-ES/full_description.txt: -------------------------------------------------------------------------------- 1 | O Fossify Launcher é o acceso a unha experiencia de Incio rápida, personalizada e privada. Sen publicidade, sen elementos innecesarios - só un lanzador eficiente deseñado para encaixar co teu estilo único e preferencias.

2 | 🚀 NAVEGACIÓN RÁPIDA COMO UN RAIO:
3 | Usa o teu dispositivo dun xeito rápido e preciso. Fossify Launcher está optimizado para ser fluído e rápido, dándoche acceso ás túas apps favoritas ao instante.

4 | 🎨 PERSONALIZACIÓN COMPLETA:
5 | Configura a pantalla de inicio ao teu xeito, con decorados dinámicos, cores personalizadas e capas. Personaliza o lanzador para adaptalo ao teu estilo con ferramentas fáciles de usar que crearán o teu propio estilo.

6 | 🖼️ COMPATIBLE CON WIDGETS:
7 | Integra os widgets adaptando o seu tamaño facilmente. Precises reloxos, calendarios, ou outros trebellos útiles, Fossify Launcher pon coidado en que se integre correctamente na pantalla de inicio.

8 | 📱 SEN ELEMENTOS IRRELEVANTES:
9 | Xestiona as túas apps sen esforzo agochandoas ou desinstalándoas cun par de toques, mantendo a pantalla de inicio ordenada e sen lixo.

10 | 🔒 PRIVADO E SEGURO:
11 | A privacidade está no núcleo de Fossify Launcher. Non ten acceso a internet nin require permisos intrusivos, os teus datos son teus. Sen rastrexo nin publicidade - só un lanzador que respecta a túa privacidade.

12 | 🌐 CERTEZA DE CÓDIGO-ABERTO:
13 | O Fossify Launcher desenvólvese con código aberto, permitindo a revisión do seu código en GitHub, proporcionando confianza e unha comunidade comprometida coa privacidade.

14 | Atopa o equilibrio entre velocidade, personalización e privacidade usando Fossify Launcher.

15 | Coñece mais apps Fossify: https://www.fossify.org
16 | Código Aberto: https://www.github.com/FossifyOrg
17 | Únete á comunidade en Reddit: https://www.reddit.com/r/Fossify
18 | Contacta en Telegram: https://t.me/Fossify
19 | -------------------------------------------------------------------------------- /fastlane/metadata/android/gl-ES/short_description.txt: -------------------------------------------------------------------------------- 1 | Personaliza o Inicio cun lanzador rápido, sen publicidade e de código aberto 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/it-IT/full_description.txt: -------------------------------------------------------------------------------- 1 | Launcher Fossify è la tua entrata per un'esperienza di schermata iniziale veloce, personalizzata e incentrata sulla privacy. Nessuna pubblicità, nessun gonfiore: solo un lanciatore di app fluido ed efficiente progettato per adattarsi al tuo stile e alle tue preferenze unici.

2 | 🚀 NAVIGAZIONE VELOCISSIMA:
3 | Naviga sul tuo dispositivo con velocità e precisione. Launcher Fossify è ottimizzato per essere reattivo e fluido, dandoti accesso immediato alle tue app preferite senza ritardi.

4 | 🎨 PERSONALIZZAZIONE COMPLETA:
5 | Personalizza la tua schermata iniziale con temi dinamici, colori personalizzati e layout. Personalizza il tuo launcher in base al tuo stile con strumenti facili da usare che ti consentono di creare una configurazione davvero unica.

6 | 🖼️ SUPPORTO WIDGET COMPLETO:
7 | Integra widget completamente ridimensionabili con facilità. Che tu abbia bisogno di orologi, calendari o altri strumenti utili, Launcher Fossify assicura che si integrino perfettamente nel design della tua schermata iniziale.

8 | 📱 NESSUN DISORDINE INDESIDERATO:
9 | Gestisci senza sforzo le tue app nascondendole o disinstallandole in pochi tocchi, mantenendo la tua schermata iniziale organizzata e ordinata.

10 | 🔒 PRIVACY E SICUREZZA:
11 | La tua privacy è al centro di Launcher Fossify. Senza accesso a Internet e senza permessi intrusivi, i tuoi dati restano con te. Nessun tracciamento, nessuna pubblicità: solo un launcher creato per rispettare la tua privacy.

12 | 🌐 GARANZIA OPEN-SOURCE:
13 | Launcher Fossify è basato su una fondazione open source, che ti consente di esaminare il nostro codice su GitHub, promuovendo la fiducia e una community impegnata a proteggere la privacy.

14 | Trova il tuo equilibrio tra velocità, personalizzazione e privacy con Launcher Fossify.

15 | Scopri altre app Fossify: https://www.fossify.org
16 | Codice open source: https://www.github.com/FossifyOrg
17 | Unisciti alla community su Reddit: https://www.reddit.com/r/Fossify
18 | Connettiti su Telegram: https://t.me/Fossify
19 | -------------------------------------------------------------------------------- /fastlane/metadata/android/it-IT/short_description.txt: -------------------------------------------------------------------------------- 1 | Personalizza la tua schermata iniziale con un launcher veloce e senza pubblicità 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/iw-IL/full_description.txt: -------------------------------------------------------------------------------- 1 | Fossify משגר הוא השער שלך לחווית מסך בית מהירה, מותאמת אישית ששומרת על פרטיותך. ללא פרסומות, בלי עומס – רק משגר חלק ויעיל שנועד להתאים לסגנון ולהעדפות הייחודיות שלך.

2 | 🚀 ניווט מהיר כברק:
3 | נווט במכשיר שלך במהירות ובדיוק. Fossify משגר מותאם להיות רספונסיבי וזורם, ומעניק לך גישה מיידית לאפליקציות המועדפות עליך ללא השהיה.

4 | 🎨 התאמה אישית מלאה:
5 | עצב את מסך הבית שלך עם ערכות נושא דינמיות, צבעים מותאמים אישית ופריסות. התאם אישית את המשגר שלך כדי להתאים לסגנון שלך באמצעות כלים קלים לשימוש המאפשרים לך ליצור הגדרה ייחודית באמת.

6 | 🖼️ תמיכה מלאה בווידג'טים:
7 | שלב ווידג'טים הניתנים לשינוי גודל בקלות. בין אם אתה צריך שעונים, לוחות שנה או כלים שימושיים אחרים, Fossify Launcher מבטיח שהם ישתלבו בצורה חלקה בעיצוב מסך הבית שלך.

8 | 📱 ללא עומס מיותר:
9 | נהל את האפליקציות שלך ללא מאמץ על ידי הסתרתן או הסרתן בכמה לחיצות בלבד, ושמור על מסך הבית שלך מאורגן ונקי מעומס.

10 | 🔒 פרטיות ואבטחה:
11 | הפרטיות שלך היא לב ליבו של Fossify Launcher. ללא גישה לאינטרנט וללא הרשאות חודרניות, הנתונים שלך נשארים איתך. ללא מעקב, ללא פרסומות – רק משגר שנבנה כדי לכבד את פרטיותך.

12 | 🌐 הבטחה בקוד פתוח:
13 | Fossify משגר בנוי על בסיס קוד פתוח, המאפשר לך לסקור את הקוד שלנו ב-GitHub, ומטפח אמון וקהילה המחויבת לפרטיות.

14 | מצא את האיזון שלך בין מהירות, התאמה אישית ופרטיות עם Fossify Launcher.

15 | חקור עוד אפליקציות Fossify: https://www.fossify.org
16 | קוד פתוח: https://www.github.com/FossifyOrg
17 | הצטרף לקהילה ב-Reddit: https://www.reddit.com/r/Fossify
18 | התחבר בטלגרם: https://t.me/Fossify
19 | -------------------------------------------------------------------------------- /fastlane/metadata/android/iw-IL/short_description.txt: -------------------------------------------------------------------------------- 1 | התאם אישית את מסך הבית שלך עם משגר מהיר, ללא פרסומות, ובקוד פתוח 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/nl-NL/short_description.txt: -------------------------------------------------------------------------------- 1 | Pas je beginscherm aan met deze snelle, reclamevrije, opensource launcher 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/pl-PL/full_description.txt: -------------------------------------------------------------------------------- 1 | Fossify Launcher to Twoja brama do szybkiego, spersonalizowanego i dbającego o prywatność doświadczenia z ekranem głównym. Żadnych reklam, żadnych śmieci – po prostu płynny, wydajny launcher zaprojektowany tak, aby pasował do Twojego unikalnego stylu i preferencji.

2 | 🚀 BŁYSKAWICZNA NAWIGACJA:
3 | Nawiguj po swoim urządzeniu szybko i precyzyjnie. Fossify Launcher jest zoptymalizowany tak, aby był responsywny i płynny, zapewniając Ci natychmiastowy dostęp do Twoich ulubionych aplikacji bez opóźnień.

4 | 🎨 PEŁNA PERSONALIZACJA:
5 | Dostosuj swój ekran główny za pomocą dynamicznych motywów, niestandardowych kolorów i układów. Spersonalizuj swój launcher, aby pasował do Twojego stylu, dzięki łatwym w użyciu narzędziom, które pozwolą Ci stworzyć naprawdę wyjątkową konfigurację.

6 | 🖼️ CAŁKOWITA OBSŁUGA WIDŻETÓW:
7 | Łatwo integruj w pełni skalowalne widżety. Niezależnie od tego, czy potrzebujesz zegarów, kalendarzy, czy innych przydatnych narzędzi, Fossify Launcher zapewnia, że płynnie wpasują się one w Twój projekt ekranu głównego.

8 | 📱 BRAK NIECHCIANEGO BAŁAGANU:
9 | Bez wysiłku zarządzaj swoimi aplikacjami, ukrywając je lub odinstalowując za pomocą kilku naciśnięć, utrzymując Twój ekran główny uporządkowany i wolny od bałaganu.

10 | 🔒 PRYWATNOŚĆ I BEZPIECZEŃSTWO:
11 | Twoja prywatność jest sercem Fossify Launcher. Bez dostępu do Internetu i bez natrętnych uprawnień Twoje dane pozostają z Tobą. Żadnego śledzenia, żadnych reklam – po prostu launcher stworzony z myślą o poszanowaniu Twojej prywatności.

12 | 🌐 GWARANCJA OTWARTOŹRÓDŁOWOŚCI:
13 | Fossify Launcher jest zbudowany na fundamencie otwartego źródła, umożliwiając Ci przeglądanie naszego kodu na GitHubie, rozwijając zaufanie i społeczność dbającą o prywatność.

14 | Znajdź równowagę między szybkością, personalizacją i prywatnością z Fossify Launcher.

15 | Odkryj więcej aplikacji od Fossify: https://www.fossify.org
16 | Kod źródłowy: https://www.github.com/FossifyOrg
17 | Dołącz do społeczności na Reddicie: https://www.reddit.com/r/Fossify
18 | Połącz się na Telegramie: https://t.me/Fossify
19 | -------------------------------------------------------------------------------- /fastlane/metadata/android/pl-PL/short_description.txt: -------------------------------------------------------------------------------- 1 | Dostosuj swój ekran główny z szybkim, otwartoźrdłowym launcherem bez reklam 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ru-RU/full_description.txt: -------------------------------------------------------------------------------- 1 | Лаунчер Fossify — это ваш способ быстрого, персонализированного и приватному домашнему экрану. Без рекламы, никаких излишеств — просто плавный, эффективный лаунчер, разработанный с учётом вашего уникального стиля и предпочтений.

2 | 3 | 🚀 LIGHTNING-FAST NAVIGATION:
4 | Navigate your device with speed and precision. Fossify Launcher is optimized to be responsive and fluid, giving you instant access to your favorite apps without lag.

5 | 🎨 FULL CUSTOMIZATION:
6 | Tailor your home screen with dynamic themes, custom colors, and layouts. Personalize your launcher to match your style with easy-to-use tools that let you create a truly unique setup.

7 | 🖼️ COMPLETE WIDGET SUPPORT:
8 | Integrate fully resizable widgets with ease. Whether you need clocks, calendars, or other handy tools, Fossify Launcher ensures they blend seamlessly into your home screen design.

9 | 📱 NO UNWANTED CLUTTER:
10 | Effortlessly manage your apps by hiding or uninstalling them in just a few taps, keeping your home screen organized and clutter-free.

11 | 🔒 PRIVACY AND SECURITY:
12 | Your privacy is at the heart of Fossify Launcher. With no internet access and no intrusive permissions, your data stays with you. No tracking, no ads – just a launcher built to respect your privacy.

13 | 🌐 OPEN-SOURCE ASSURANCE:
14 | Fossify Launcher is built on an open-source foundation, allowing you to review our code on GitHub, fostering trust and a community committed to privacy.

15 | Find your balance of speed, customization, and privacy with Fossify Launcher.

16 | Ознакомьтесь с другими приложениями от Fossify: https://www.fossify.org 17 | Исходный код: https://www.github.com/FossifyOrg 18 | Присоединяйтесь к сообществу на Reddit: https://www.reddit.com/r/Fossify 19 | Подключайтесь в Telegram: https://t.me/Fossify 20 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ru-RU/short_description.txt: -------------------------------------------------------------------------------- 1 | Настройте домашний экран с быстрым, безрекламным и свободным лаунчером 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sv-SE/short_description.txt: -------------------------------------------------------------------------------- 1 | Anpassa startskärmen med ett snabbt, reklamfritt startprogram med öppen källkod 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/tr-TR/short_description.txt: -------------------------------------------------------------------------------- 1 | Ana ekranınızı hızlı, reklamsız, açık kaynaklı bir başlatıcı ile özelleştirin 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/full_description.txt: -------------------------------------------------------------------------------- 1 | Fossify Лаунчер – це ваш шлях до швидкого, персоналізованого та приватного домашнього екрану. Ніякої реклами, ніякого роздування, лише плавний, ефективний лаунчер, розроблений відповідно до вашого унікального стилю та вподобань. 2 | 🚀 БЛИСКАВИЧНА НАВІГАЦІЯ: 3 | Переміщайтеся на своєму пристрої швидко і точно. Fossify Лаунчер оптимізовано для швидкої та плавної роботи, що дає вам миттєвий доступ до улюблених застосунків без затримок. 4 | 🎨 ПОВНА ПЕРСОНАЛІЗАЦІЯ: 5 | Налаштуйте свій домашній екран за допомогою динамічних тем, персоналізованиз кольорів та макетів. Персоналізуйте лаунчер відповідно до свого стилю за допомогою простих у використанні інструментів, які дозволять вам створити справді унікальне налаштування. 6 | 🖼️ ПОВНА ПІДТРИМКА ВІДЖЕТІВ: 7 | Легко інтегруйте віджети, розмір яких можна змінювати. Незалежно від того, чи потрібен вам годинник, календар або інші зручні інструменти, Fossify Лаунчер гарантує, що вони бездоганно впишуться у дизайн вашого домашнього екрану. 8 | 📱 НІЯКОГО НЕБАЖАНОГО БЕЗЛАДУ: 9 | Легко керуйте своїми застосунками, приховуючи або видаляючи їх лише кількома дотиками, зберігаючи домашній екран впорядкованим та вільним від безладу. 10 | 🔒 ПРИВАТНІСТЬ І БЕЗПЕКА: 11 | Ваша приватність лежить в основі Fossify Лаунчер. Без доступу до мережі та без нав'язливих дозволів, ваші дані залишаються з вами. Ніякого відстеження, ніякої реклами; просто лаунчер, створений з повагою до вашої приватності. 12 | 🌐 УПЕВНЕНІСТЬ З ВІДКРИТИМ КОДОМ: 13 | Fossify Лаунчер побудований на основі відкритого коду, що дозволяє вам переглядати наш код на GitHub, зміцнюючи довіру та спільноту, прихильну до приватності. 14 | Знайдіть свій баланс швидкості, персоналізації та приватності за допомогою Fossify Лаунчер. 15 | Дізнайтеся більше про застосунки Fossify: https://www.fossify.org 16 | Відкритий код: https://www.github.com/FossifyOrg 17 | Приєднуйтесь до спільноти на Reddit: https://www.reddit.com/r/Fossify 18 | Приєднуйтесь у Telegram: https://t.me/Fossify 19 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/short_description.txt: -------------------------------------------------------------------------------- 1 | Налаштуйте домашній екран з швидким, безрекламним лаунчером з відкритим кодом 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/full_description.txt: -------------------------------------------------------------------------------- 1 | Fossify 启动器可让您获得快速、个性化且隐私至上的主屏幕体验。没有广告,没有臃肿——只有流畅、高效的启动器,旨在满足您独特的风格和偏好。

2 | 🚀 快如闪电的导航:
3 | 快速准确地导航您的设备。Fossify 启动器经过优化,反应灵敏,流畅,可让您立即访问您最喜欢的应用,没有延迟。

4 | 🎨 完全自定义:
5 | 使用动态主题、自定义颜色和布局自定义您的主屏幕。使用易于使用的工具个性化您的启动器,以匹配您的风格,让您创建真正独特的设置。

6 | 🖼️ 完整的微件支持:
7 | 轻松集成完全可调整大小的微件。无论您需要时钟、日历还是其他方便的工具,Fossify 启动器都能确保它们无缝融入您的主屏幕设计。

8 | 📱 没有不必要的混乱:
9 | 只需轻点几下即可隐藏或卸载应用,轻松管理应用,保持主屏幕整洁有序。

10 | 🔒 隐私和安全:
11 | 您的隐私是 Fossify 启动器的核心。没有互联网接入,也没有侵入性权限,您的数据归您所有。没有跟踪,没有广告——只是一个尊重您隐私的启动器。

12 | 🌐 开源保障:
13 | Fossify 启动器建立在开源基础上,允许您在 GitHub 上查看我们的代码,培养信任和致力于隐私的社区。

14 | 使用 Fossify 启动器找到速度、自定义和隐私之间的平衡。

15 | 探索更多 Fossify 应用:https://www.fossify.org
16 | 开源代码:https://www.github.com/FossifyOrg
17 | 加入 Reddit 社区:https://www.reddit.com/r/Fossify
18 | 在 Telegram 上联系:https://t.me/Fossify
19 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/short_description.txt: -------------------------------------------------------------------------------- 1 | 使用快速、无广告的开源启动器自定义您的主屏幕 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-TW/short_description.txt: -------------------------------------------------------------------------------- 1 | 使用快速、無廣告、且開源的啟動器自訂您的主畫面 2 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | android.enableJetifier=true 2 | android.useAndroidX=true 3 | android.nonTransitiveRClass=true 4 | 5 | org.gradle.jvmargs=-Xmx4096M 6 | 7 | # Versioning 8 | VERSION_NAME=1.1.2 9 | VERSION_CODE=5 10 | APP_ID=org.fossify.home 11 | -------------------------------------------------------------------------------- /gradle/libs.versions.toml: -------------------------------------------------------------------------------- 1 | [versions] 2 | #jetbrains 3 | kotlin = "2.1.21" 4 | #KSP 5 | ksp = "2.1.21-2.0.1" 6 | #Detekt 7 | detekt = "1.23.8" 8 | #Room 9 | room = "2.7.1" 10 | #Fossify 11 | commons = "2.0.1" 12 | #Gradle 13 | gradlePlugins-agp = "8.10.1" 14 | #build 15 | app-build-compileSDKVersion = "34" 16 | app-build-targetSDK = "34" 17 | app-build-minimumSDK = "26" 18 | app-build-javaVersion = "VERSION_17" 19 | app-build-kotlinJVMTarget = "17" 20 | [libraries] 21 | #Room 22 | androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" } 23 | androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" } 24 | androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" } 25 | #Fossify 26 | fossify-commons = { module = "org.fossify:commons", version.ref = "commons" } 27 | [bundles] 28 | room = [ 29 | "androidx-room-ktx", 30 | "androidx-room-runtime", 31 | ] 32 | [plugins] 33 | android = { id = "com.android.application", version.ref = "gradlePlugins-agp" } 34 | kotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } 35 | ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } 36 | detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } 37 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Launcher/66c5bb89eff919f1f127070fb52c895803a5a6e9/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | @rem SPDX-License-Identifier: Apache-2.0 17 | @rem 18 | 19 | @if "%DEBUG%"=="" @echo off 20 | @rem ########################################################################## 21 | @rem 22 | @rem Gradle startup script for Windows 23 | @rem 24 | @rem ########################################################################## 25 | 26 | @rem Set local scope for the variables with windows NT shell 27 | if "%OS%"=="Windows_NT" setlocal 28 | 29 | set DIRNAME=%~dp0 30 | if "%DIRNAME%"=="" set DIRNAME=. 31 | @rem This is normally unused 32 | set APP_BASE_NAME=%~n0 33 | set APP_HOME=%DIRNAME% 34 | 35 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 36 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 37 | 38 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 39 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 40 | 41 | @rem Find java.exe 42 | if defined JAVA_HOME goto findJavaFromJavaHome 43 | 44 | set JAVA_EXE=java.exe 45 | %JAVA_EXE% -version >NUL 2>&1 46 | if %ERRORLEVEL% equ 0 goto execute 47 | 48 | echo. 1>&2 49 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 50 | echo. 1>&2 51 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2 52 | echo location of your Java installation. 1>&2 53 | 54 | goto fail 55 | 56 | :findJavaFromJavaHome 57 | set JAVA_HOME=%JAVA_HOME:"=% 58 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 59 | 60 | if exist "%JAVA_EXE%" goto execute 61 | 62 | echo. 1>&2 63 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 64 | echo. 1>&2 65 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2 66 | echo location of your Java installation. 1>&2 67 | 68 | goto fail 69 | 70 | :execute 71 | @rem Setup the command line 72 | 73 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 74 | 75 | 76 | @rem Execute Gradle 77 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 78 | 79 | :end 80 | @rem End local scope for the variables with windows NT shell 81 | if %ERRORLEVEL% equ 0 goto mainEnd 82 | 83 | :fail 84 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 85 | rem the _cmd.exe /c_ return code! 86 | set EXIT_CODE=%ERRORLEVEL% 87 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 88 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 89 | exit /b %EXIT_CODE% 90 | 91 | :mainEnd 92 | if "%OS%"=="Windows_NT" endlocal 93 | 94 | :omega 95 | -------------------------------------------------------------------------------- /graphics/foreground.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 19 | -------------------------------------------------------------------------------- /graphics/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | -------------------------------------------------------------------------------- /graphics/icon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FossifyOrg/Launcher/66c5bb89eff919f1f127070fb52c895803a5a6e9/graphics/icon.webp -------------------------------------------------------------------------------- /keystore.properties_sample: -------------------------------------------------------------------------------- 1 | storePassword=123456 2 | keyPassword=abcdef 3 | keyAlias=myAlias 4 | storeFile=../keystore.jks 5 | -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | google() 5 | mavenCentral() 6 | } 7 | } 8 | dependencyResolutionManagement { 9 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 10 | repositories { 11 | google() 12 | mavenCentral() 13 | maven { setUrl("https://jitpack.io") } 14 | } 15 | } 16 | include(":app") 17 | --------------------------------------------------------------------------------