├── .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 |
4 |
5 |
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 |
45 |
46 |
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 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_app_icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
31 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_home_screen.xml:
--------------------------------------------------------------------------------
1 |
2 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
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 |
4 |
5 |
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 启动器可让您获得快速、个性化且隐私至上的主屏幕体验。没有广告,没有臃肿——只有流畅、高效的启动器,旨在满足您独特的风格和偏好。