mirror of
https://github.com/FossifyOrg/Launcher.git
synced 2025-12-28 10:09:33 -05:00
Compare commits
179 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
66c5bb89ef | ||
|
|
c0cfab1a19 | ||
|
|
aa96344a2f | ||
|
|
aca9945ad8 | ||
|
|
07924360ab | ||
|
|
94fa10982a | ||
|
|
6359da6d6c | ||
|
|
61148a880d | ||
|
|
de83a3e3ac | ||
|
|
f19d289909 | ||
|
|
de14db9cd5 | ||
|
|
cd6a3ec5c9 | ||
|
|
5a56ac9e3b | ||
|
|
018dd2dd69 | ||
|
|
7aeff1fd73 | ||
|
|
b4553b7abe | ||
|
|
c37b911cf6 | ||
|
|
5b57af9a2e | ||
|
|
1314f56042 | ||
|
|
c31798faf9 | ||
|
|
1c02710bff | ||
|
|
0964e1a448 | ||
|
|
cd4688d35c | ||
|
|
a229b99432 | ||
|
|
b483db96c1 | ||
|
|
e0a4133bcf | ||
|
|
d055684056 | ||
|
|
0a7283e757 | ||
|
|
35ed71bb40 | ||
|
|
6da6265d73 | ||
|
|
e23ff94832 | ||
|
|
66ea58b192 | ||
|
|
740471bc1d | ||
|
|
3b47d8d79e | ||
|
|
338518e493 | ||
|
|
7d59256d6c | ||
|
|
245a6d1c03 | ||
|
|
91b42f3758 | ||
|
|
5eec1d87d5 | ||
|
|
2d01e5c46c | ||
|
|
eb3f8f6ad3 | ||
|
|
4d0ba27326 | ||
|
|
bdd12d84a8 | ||
|
|
bd08d29e7c | ||
|
|
35fc459787 | ||
|
|
fc2ade5cea | ||
|
|
0d81e44d68 | ||
|
|
a0cb828f63 | ||
|
|
bff35b8b9e | ||
|
|
653a229c6a | ||
|
|
06bf7062b8 | ||
|
|
13d8358cdb | ||
|
|
f73958f3c6 | ||
|
|
8334136002 | ||
|
|
0f5ef439c6 | ||
|
|
49a9524b84 | ||
|
|
c508ddebd2 | ||
|
|
c985558a83 | ||
|
|
abfdb77e6a | ||
|
|
4a9eaee83b | ||
|
|
90f5db27d5 | ||
|
|
b373839683 | ||
|
|
95b111b4c8 | ||
|
|
f61492daa4 | ||
|
|
1a44fb5b18 | ||
|
|
6ca12b1d51 | ||
|
|
b2d9ab317d | ||
|
|
aa88f1d0a7 | ||
|
|
cb3f946c5b | ||
|
|
48e54d173b | ||
|
|
e1e6c978ed | ||
|
|
03c080592b | ||
|
|
a47918fa9c | ||
|
|
e9089a72a1 | ||
|
|
a48e1dc610 | ||
|
|
ff8d2eab1e | ||
|
|
960348fe82 | ||
|
|
cf4a1eab30 | ||
|
|
a0bdb4c9ba | ||
|
|
bccb5c7996 | ||
|
|
be66c357a8 | ||
|
|
d6902df7dc | ||
|
|
7211448134 | ||
|
|
8c3a74aae9 | ||
|
|
f96d53a769 | ||
|
|
790dc44002 | ||
|
|
5954afca56 | ||
|
|
b178396d0d | ||
|
|
79ffabc89a | ||
|
|
0cc6bbdef8 | ||
|
|
8420722cef | ||
|
|
583b731ddf | ||
|
|
53ca4ff059 | ||
|
|
0e54d7adfa | ||
|
|
a9298a46c4 | ||
|
|
b4cdc3f80e | ||
|
|
9f86e423d4 | ||
|
|
005554bd1f | ||
|
|
fec78ce229 | ||
|
|
a228362711 | ||
|
|
66d5248695 | ||
|
|
8bb328f509 | ||
|
|
ad1b46dce1 | ||
|
|
899863da4c | ||
|
|
e229b2cfdd | ||
|
|
57c58a55e3 | ||
|
|
c8cd31fef8 | ||
|
|
8e81c09e6e | ||
|
|
db5bf9fbdd | ||
|
|
089da3a95f | ||
|
|
e0e0ce7696 | ||
|
|
d05710b977 | ||
|
|
b0bc730e94 | ||
|
|
13256eb237 | ||
|
|
8387e6c8d6 | ||
|
|
99a60fa148 | ||
|
|
74adfd1fff | ||
|
|
734d483bc2 | ||
|
|
8315774f1e | ||
|
|
148f2d98c8 | ||
|
|
e91e4c43ac | ||
|
|
16331a198c | ||
|
|
cb9b224268 | ||
|
|
7a6c699af5 | ||
|
|
21a33310a3 | ||
|
|
1ee3a05742 | ||
|
|
7522a2020d | ||
|
|
f29d2039c1 | ||
|
|
17234b210b | ||
|
|
3385c2850e | ||
|
|
b8e7cc8e29 | ||
|
|
01789c3df4 | ||
|
|
76a250925f | ||
|
|
6f1cc3274f | ||
|
|
c7a90cb491 | ||
|
|
cdd8e63fa4 | ||
|
|
c67a58014f | ||
|
|
3b8a6de77b | ||
|
|
6140ec2f9b | ||
|
|
98e41eed2f | ||
|
|
94cd418c72 | ||
|
|
25d33d0968 | ||
|
|
5f276eac11 | ||
|
|
de29653788 | ||
|
|
d188856bdd | ||
|
|
c44af5df52 | ||
|
|
ad9ad86f9f | ||
|
|
a3438b73fd | ||
|
|
e31d7ea133 | ||
|
|
6866b9712e | ||
|
|
bfd73c8543 | ||
|
|
ba5845adf6 | ||
|
|
b4ea4d8dd7 | ||
|
|
79fe209bd3 | ||
|
|
1bfb4c6c66 | ||
|
|
38f6ba63e5 | ||
|
|
9666d616e4 | ||
|
|
2054034907 | ||
|
|
d13b0e2dfb | ||
|
|
c796b295fc | ||
|
|
cc2e4db250 | ||
|
|
bf3dc65a3c | ||
|
|
d4a829a1cb | ||
|
|
a951cf512e | ||
|
|
1c843a5aab | ||
|
|
902ab01b72 | ||
|
|
d151e5bd6e | ||
|
|
c9e2c80332 | ||
|
|
b5ccd837ee | ||
|
|
0d4e513946 | ||
|
|
7afd6a71e0 | ||
|
|
6c05ce1864 | ||
|
|
f85109ecd1 | ||
|
|
f8059ff00a | ||
|
|
600eb26205 | ||
|
|
6e116baf85 | ||
|
|
7c553256e0 | ||
|
|
7b2ef9f3db | ||
|
|
6f27a4503f |
2
.fossify/release-marker.txt
Normal file
2
.fossify/release-marker.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
# Auto-generated file. DO NOT EDIT.
|
||||
1.1.2
|
||||
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -112,7 +112,7 @@ body:
|
||||
description: |
|
||||
A picture or video is worth a thousand words.
|
||||
|
||||
If applicable, drag and drop screenshots or a screen recording to help explain your problem. If your file is too big for Github to accept, try to compress it (ZIP file), or feel free to paste a link to an image/video hoster here instead.
|
||||
If applicable, drag and drop screenshots or a screen recording to help explain your problem. If your file is too big for Github to accept, try to compress it (ZIP file), or feel free to paste a link to an image/video instead.
|
||||
|
||||
- type: textarea
|
||||
id: additional-information
|
||||
|
||||
4
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
4
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@@ -20,14 +20,12 @@ body:
|
||||
required: true
|
||||
- label: "I have read the FAQs inside the app (Menu -> About -> FAQs) and my problem isn't listed."
|
||||
required: true
|
||||
- label: "**I have taken the time to fill in all the required details. I understand that the bug report will be dismissed otherwise.**"
|
||||
- label: "**I have taken the time to fill in all the required details. I understand that the request will be dismissed otherwise.**"
|
||||
required: true
|
||||
- label: "This issue contains only one feature request."
|
||||
required: true
|
||||
- label: "I have read and understood the [contribution guidelines](https://github.com/FossifyOrg/Launcher/blob/main/CONTRIBUTING.md)."
|
||||
required: true
|
||||
- label: "I optionally [donated](https://fossify.org/donate) to support the Fossify mission."
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
id: feature-description
|
||||
|
||||
28
.github/PULL_REQUEST_TEMPLATE.md
vendored
28
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,28 +0,0 @@
|
||||
<!-- Hey there. Thank you so much for improving Fossify. Please consider filling out the details :)-->
|
||||
|
||||
#### What is it?
|
||||
- [ ] Bugfix
|
||||
- [ ] Feature
|
||||
- [ ] Codebase improvement
|
||||
|
||||
#### Description of the changes in your PR
|
||||
<!-- Bullet points are preferred. The following is an example -->
|
||||
- Updated colors
|
||||
- Update strings
|
||||
- Added documentation
|
||||
|
||||
#### Before/After Screenshots/Screen Record
|
||||
<!-- If your PR changes the app's UI in any way, consider including screenshots or a video showing exactly what changed, so that developers and users can pinpoint it easily. Delete this if it doesn't apply to your PR.-->
|
||||
- Before:
|
||||
- After:
|
||||
|
||||
#### Fixes the following issue(s)
|
||||
<!-- Prefix issues with "Fixes" so that GitHub closes them when the PR is merged (note that each "Fixes #" should be in its own item). Also add any other relevant links. -->
|
||||
- Fixes #
|
||||
|
||||
#### Relies on the following changes
|
||||
<!-- Delete this if it doesn't apply to your PR. -->
|
||||
-
|
||||
|
||||
#### Acknowledgement
|
||||
- [ ] I read the [contribution guidelines](https://github.com/FossifyOrg/Launcher/blob/main/CONTRIBUTING.md).
|
||||
52
.github/dependabot.yml
vendored
Normal file
52
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
version: 2
|
||||
|
||||
registries:
|
||||
maven-google:
|
||||
type: maven-repository
|
||||
url: "https://dl.google.com/dl/android/maven2/"
|
||||
|
||||
maven-central:
|
||||
type: maven-repository
|
||||
url: "https://repo.maven.apache.org/maven2"
|
||||
|
||||
jitpack:
|
||||
type: maven-repository
|
||||
url: "https://jitpack.io"
|
||||
|
||||
updates:
|
||||
- package-ecosystem: "bundler"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
commit-message:
|
||||
prefix: "chore"
|
||||
prefix-development: "chore"
|
||||
include: "scope"
|
||||
assignees:
|
||||
- "naveensingh"
|
||||
|
||||
- package-ecosystem: "gradle"
|
||||
directory: "/"
|
||||
registries:
|
||||
- maven-central
|
||||
- maven-google
|
||||
- jitpack
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
commit-message:
|
||||
prefix: "chore"
|
||||
prefix-development: "chore"
|
||||
include: "scope"
|
||||
assignees:
|
||||
- "naveensingh"
|
||||
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
commit-message:
|
||||
prefix: "chore"
|
||||
prefix-development: "chore"
|
||||
include: "scope"
|
||||
assignees:
|
||||
- "naveensingh"
|
||||
148
.github/workflows/image-minimizer.js
vendored
148
.github/workflows/image-minimizer.js
vendored
@@ -1,148 +0,0 @@
|
||||
/*
|
||||
* Script for minimizing big images (jpg,gif,png) when they are uploaded to GitHub and not edited otherwise.
|
||||
* Source: https://github.com/TeamNewPipe/NewPipe/blob/dev/.github/workflows/image-minimizer.js
|
||||
*/
|
||||
module.exports = async ({github, context}) => {
|
||||
const IGNORE_KEY = '<!-- IGNORE IMAGE MINIFY -->';
|
||||
const IGNORE_ALT_NAME_END = 'ignoreImageMinify';
|
||||
// Targeted maximum height
|
||||
const IMG_MAX_HEIGHT_PX = 400;
|
||||
// maximum width of GitHub issues/comments
|
||||
const IMG_MAX_WIDTH_PX = 800;
|
||||
// all images that have a lower aspect ratio (-> have a smaller width) than this will be minimized
|
||||
const MIN_ASPECT_RATIO = IMG_MAX_WIDTH_PX / IMG_MAX_HEIGHT_PX
|
||||
|
||||
// Get the body of the image
|
||||
let initialBody = null;
|
||||
if (context.eventName == 'issue_comment') {
|
||||
initialBody = context.payload.comment.body;
|
||||
} else if (context.eventName == 'issues') {
|
||||
initialBody = context.payload.issue.body;
|
||||
} else if (context.eventName == 'pull_request') {
|
||||
initialBody = context.payload.pull_request.body;
|
||||
} else {
|
||||
console.log('Aborting: No body found');
|
||||
return;
|
||||
}
|
||||
console.log(`Found body: \n${initialBody}\n`);
|
||||
|
||||
// Check if we should ignore the currently processing element
|
||||
if (initialBody.includes(IGNORE_KEY)) {
|
||||
console.log('Ignoring: Body contains IGNORE_KEY');
|
||||
return;
|
||||
}
|
||||
|
||||
// Regex for finding images (simple variant) 
|
||||
const REGEX_USER_CONTENT_IMAGE_LOOKUP = /\!\[(.*)\]\((https:\/\/[-a-z0-9]+\.githubusercontent\.com\/\d+\/[-0-9a-f]{32,512}\.(jpg|gif|png))\)/gm;
|
||||
const REGEX_ASSETS_IMAGE_LOCKUP = /\!\[(.*)\]\((https:\/\/github\.com\/user-attachments\/assets\/[\-0-9a-f]{36,})\)/gm;
|
||||
|
||||
// Check if we found something
|
||||
let foundSimpleImages = REGEX_USER_CONTENT_IMAGE_LOOKUP.test(initialBody)
|
||||
|| REGEX_ASSETS_IMAGE_LOCKUP.test(initialBody);
|
||||
if (!foundSimpleImages) {
|
||||
console.log('Found no simple images to process');
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('Found at least one simple image to process');
|
||||
|
||||
// Require the probe lib for getting the image dimensions
|
||||
const probe = require('probe-image-size');
|
||||
|
||||
var wasMatchModified = false;
|
||||
|
||||
// Try to find and replace the images with minimized ones
|
||||
let newBody = await replaceAsync(initialBody, REGEX_USER_CONTENT_IMAGE_LOOKUP, minimizeAsync);
|
||||
newBody = await replaceAsync(newBody, REGEX_ASSETS_IMAGE_LOCKUP, minimizeAsync);
|
||||
|
||||
if (!wasMatchModified) {
|
||||
console.log('Nothing was modified. Skipping update');
|
||||
return;
|
||||
}
|
||||
|
||||
// Update the corresponding element
|
||||
if (context.eventName == 'issue_comment') {
|
||||
console.log('Updating comment with id', context.payload.comment.id);
|
||||
await github.rest.issues.updateComment({
|
||||
comment_id: context.payload.comment.id,
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
body: newBody
|
||||
})
|
||||
} else if (context.eventName == 'issues') {
|
||||
console.log('Updating issue', context.payload.issue.number);
|
||||
await github.rest.issues.update({
|
||||
issue_number: context.payload.issue.number,
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
body: newBody
|
||||
});
|
||||
} else if (context.eventName == 'pull_request') {
|
||||
console.log('Updating pull request', context.payload.pull_request.number);
|
||||
await github.rest.pulls.update({
|
||||
pull_number: context.payload.pull_request.number,
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
body: newBody
|
||||
});
|
||||
}
|
||||
|
||||
// Async replace function from https://stackoverflow.com/a/48032528
|
||||
async function replaceAsync(str, regex, asyncFn) {
|
||||
const promises = [];
|
||||
str.replace(regex, (match, ...args) => {
|
||||
const promise = asyncFn(match, ...args);
|
||||
promises.push(promise);
|
||||
});
|
||||
const data = await Promise.all(promises);
|
||||
return str.replace(regex, () => data.shift());
|
||||
}
|
||||
|
||||
async function minimizeAsync(match, g1, g2) {
|
||||
console.log(`Found match '${match}'`);
|
||||
|
||||
if (g1.endsWith(IGNORE_ALT_NAME_END)) {
|
||||
console.log(`Ignoring match '${match}': IGNORE_ALT_NAME_END`);
|
||||
return match;
|
||||
}
|
||||
|
||||
let probeAspectRatio = 0;
|
||||
let shouldModify = false;
|
||||
try {
|
||||
console.log(`Probing ${g2}`);
|
||||
let probeResult = await probe(g2);
|
||||
if (probeResult == null) {
|
||||
throw 'No probeResult';
|
||||
}
|
||||
if (probeResult.hUnits != 'px') {
|
||||
throw `Unexpected probeResult.hUnits (expected px but got ${probeResult.hUnits})`;
|
||||
}
|
||||
if (probeResult.height <= 0) {
|
||||
throw `Unexpected probeResult.height (height is invalid: ${probeResult.height})`;
|
||||
}
|
||||
if (probeResult.wUnits != 'px') {
|
||||
throw `Unexpected probeResult.wUnits (expected px but got ${probeResult.wUnits})`;
|
||||
}
|
||||
if (probeResult.width <= 0) {
|
||||
throw `Unexpected probeResult.width (width is invalid: ${probeResult.width})`;
|
||||
}
|
||||
console.log(`Probing resulted in ${probeResult.width}x${probeResult.height}px`);
|
||||
|
||||
probeAspectRatio = probeResult.width / probeResult.height;
|
||||
shouldModify = probeResult.height > IMG_MAX_HEIGHT_PX && probeAspectRatio < MIN_ASPECT_RATIO;
|
||||
} catch(e) {
|
||||
console.log('Probing failed:', e);
|
||||
// Immediately abort
|
||||
return match;
|
||||
}
|
||||
|
||||
if (shouldModify) {
|
||||
wasMatchModified = true;
|
||||
console.log(`Modifying match '${match}'`);
|
||||
return `<img alt="${g1}" src="${g2}" width=${Math.min(600, Math.floor(IMG_MAX_HEIGHT_PX * probeAspectRatio))} />`;
|
||||
}
|
||||
|
||||
console.log(`Match '${match}' is ok/will not be modified`);
|
||||
return match;
|
||||
}
|
||||
}
|
||||
29
.github/workflows/image-minimizer.yml
vendored
29
.github/workflows/image-minimizer.yml
vendored
@@ -5,31 +5,10 @@ on:
|
||||
types: [created, edited]
|
||||
issues:
|
||||
types: [opened, edited]
|
||||
pull_request:
|
||||
pull_request_target:
|
||||
types: [opened, edited]
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
try-minimize:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- name: Install probe-image-size
|
||||
run: npm i probe-image-size@7.2.3 --ignore-scripts
|
||||
|
||||
- name: Minimize simple images
|
||||
uses: actions/github-script@v7
|
||||
timeout-minutes: 3
|
||||
with:
|
||||
script: |
|
||||
const script = require('.github/workflows/image-minimizer.js');
|
||||
await script({github, context});
|
||||
call-image-minimizer-workflow:
|
||||
uses: FossifyOrg/.github/.github/workflows/image-minimizer.yml@main
|
||||
secrets: inherit
|
||||
|
||||
26
.github/workflows/no-response.yml
vendored
26
.github/workflows/no-response.yml
vendored
@@ -1,25 +1,11 @@
|
||||
name: no-response
|
||||
name: No Response
|
||||
|
||||
# Both `issue_comment` and `scheduled` event types are required for this Action
|
||||
# to work properly.
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
schedule:
|
||||
# Run daily at midnight.
|
||||
- cron: '0 0 * * *'
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
- cron: "0 12 * * *" # Runs daily at noon
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
noResponse:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: lee-dohm/no-response@v0.5.0
|
||||
with:
|
||||
token: ${{ github.token }}
|
||||
# Number of days of inactivity before an issue is closed for lack of response.
|
||||
daysUntilClose: 30
|
||||
responseRequiredLabel: waiting for author
|
||||
call-no-response-workflow:
|
||||
uses: FossifyOrg/.github/.github/workflows/no-response.yml@main
|
||||
secrets: inherit
|
||||
|
||||
10
.github/workflows/pr-labeler.yml
vendored
Normal file
10
.github/workflows/pr-labeler.yml
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
name: PR Labeler
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [opened]
|
||||
|
||||
jobs:
|
||||
call-pr-labeler-workflow:
|
||||
uses: FossifyOrg/.github/.github/workflows/pr-labeler.yml@main
|
||||
secrets: inherit
|
||||
11
.github/workflows/prepare-release-pr.yml
vendored
Normal file
11
.github/workflows/prepare-release-pr.yml
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
name: Prepare Release PR
|
||||
|
||||
on:
|
||||
repository_dispatch:
|
||||
types: [prepare-release]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
call-release-pr:
|
||||
uses: FossifyOrg/.github/.github/workflows/prepare-release-pr.yml@main
|
||||
secrets: inherit
|
||||
17
.github/workflows/release.yml
vendored
Normal file
17
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
name: Release
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
paths:
|
||||
- ".fossify/release-marker.txt"
|
||||
|
||||
jobs:
|
||||
call-release-workflow:
|
||||
name: Release
|
||||
uses: FossifyOrg/.github/.github/workflows/release.yml@main
|
||||
with:
|
||||
track: ${{ vars.GPLAY_TRACK || 'beta' }}
|
||||
rollout: ${{ vars.GPLAY_ROLLOUT || '0.05' }}
|
||||
validate_only: ${{ vars.GPLAY_DRY_RUN == 'true' }}
|
||||
secrets: inherit
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -9,5 +9,4 @@
|
||||
keystore.jks
|
||||
keystore.properties
|
||||
fastlane/fastlane.json
|
||||
Gemfile
|
||||
Gemfile.lock
|
||||
fastlane/report.xml
|
||||
|
||||
74
CHANGELOG.md
74
CHANGELOG.md
@@ -1,7 +1,71 @@
|
||||
Changelog
|
||||
==========
|
||||
# Changelog
|
||||
|
||||
Version 1.0.0 *(2024-10-16)*
|
||||
----------------------------
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
* Initial release
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [1.1.2] - 2025-06-06
|
||||
|
||||
### Changed
|
||||
|
||||
- Updated translations
|
||||
|
||||
### Fixed
|
||||
|
||||
- Clicking home screen app labels now works as expected ([#115])
|
||||
|
||||
## [1.1.1] - 2025-05-14
|
||||
|
||||
### Changed
|
||||
|
||||
- Updated translations
|
||||
|
||||
### Removed
|
||||
|
||||
- Removed redundant launcher settings icon from the app drawer ([#51])
|
||||
|
||||
## [1.1.0] - 2025-03-19
|
||||
|
||||
### Added
|
||||
|
||||
- Added double tap to lock screen feature ([#63])
|
||||
|
||||
### Changed
|
||||
|
||||
- Added more translations
|
||||
|
||||
## [1.0.1] - 2025-01-01
|
||||
|
||||
### Changed
|
||||
|
||||
- Other minor bug fixes and improvements
|
||||
- Added more translations
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed scrolling performance issues ([#65])
|
||||
- Fixed various issues related to widgets ([#5], [#44], [#74])
|
||||
|
||||
## [1.0.0] - 2024-10-16
|
||||
|
||||
### Added
|
||||
|
||||
- Initial release
|
||||
|
||||
[Unreleased]: https://github.com/FossifyOrg/Launcher/compare/1.1.2...HEAD
|
||||
[1.1.2]: https://github.com/FossifyOrg/Launcher/compare/1.1.1...1.1.2
|
||||
[1.1.1]: https://github.com/FossifyOrg/Launcher/compare/1.1.0...1.1.1
|
||||
[1.1.0]: https://github.com/FossifyOrg/Launcher/compare/1.0.1...1.1.0
|
||||
[1.0.1]: https://github.com/FossifyOrg/Launcher/compare/1.0.0...1.0.1
|
||||
[1.0.0]: https://github.com/FossifyOrg/Launcher/releases/tag/1.0.0
|
||||
|
||||
[#5]: https://github.com/FossifyOrg/Launcher/issues/5
|
||||
[#44]: https://github.com/FossifyOrg/Launcher/issues/44
|
||||
[#51]: https://github.com/FossifyOrg/Launcher/issues/51
|
||||
[#63]: https://github.com/FossifyOrg/Launcher/issues/63
|
||||
[#65]: https://github.com/FossifyOrg/Launcher/issues/65
|
||||
[#74]: https://github.com/FossifyOrg/Launcher/issues/74
|
||||
[#115]: https://github.com/FossifyOrg/Launcher/issues/115
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Before you report something, read the reporting rules [here](https://github.com/FossifyOrg/General-Discussion#how-do-i-suggest-an-improvement-ask-a-question-or-report-an-issue) please.
|
||||
|
||||
### Contributing as a developer
|
||||
Some instructions about code style and everything that has to be done to increase the change of your code getting accepted can be found at the [General Discussion](https://github.com/FossifyOrg/General-Discussion#contribution-rules-for-developers) section.
|
||||
Some instructions about code style and everything that has to be done to increase the chance of your code getting accepted can be found at the [General Discussion](https://github.com/FossifyOrg/General-Discussion#contribution-rules-for-developers) section.
|
||||
|
||||
### Contributing as a non developer
|
||||
In case you just want to for example improve a translation, you can find the way of doing it [here](https://github.com/FossifyOrg/General-Discussion#how-can-i-suggest-an-edit-to-a-file).
|
||||
|
||||
4
Gemfile
Normal file
4
Gemfile
Normal file
@@ -0,0 +1,4 @@
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "fastlane"
|
||||
gem "fastlane-plugin-fossify", "~> 1.0"
|
||||
231
Gemfile.lock
Normal file
231
Gemfile.lock
Normal file
@@ -0,0 +1,231 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
CFPropertyList (3.0.7)
|
||||
base64
|
||||
nkf
|
||||
rexml
|
||||
abbrev (0.1.2)
|
||||
addressable (2.8.7)
|
||||
public_suffix (>= 2.0.2, < 7.0)
|
||||
artifactory (3.0.17)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.3.2)
|
||||
aws-partitions (1.1097.0)
|
||||
aws-sdk-core (3.223.0)
|
||||
aws-eventstream (~> 1, >= 1.3.0)
|
||||
aws-partitions (~> 1, >= 1.992.0)
|
||||
aws-sigv4 (~> 1.9)
|
||||
base64
|
||||
jmespath (~> 1, >= 1.6.1)
|
||||
logger
|
||||
aws-sdk-kms (1.100.0)
|
||||
aws-sdk-core (~> 3, >= 3.216.0)
|
||||
aws-sigv4 (~> 1.5)
|
||||
aws-sdk-s3 (1.185.0)
|
||||
aws-sdk-core (~> 3, >= 3.216.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.5)
|
||||
aws-sigv4 (1.11.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
babosa (1.0.4)
|
||||
base64 (0.2.0)
|
||||
claide (1.1.0)
|
||||
colored (1.2)
|
||||
colored2 (3.1.2)
|
||||
commander (4.6.0)
|
||||
highline (~> 2.0.0)
|
||||
declarative (0.0.20)
|
||||
digest-crc (0.7.0)
|
||||
rake (>= 12.0.0, < 14.0.0)
|
||||
domain_name (0.6.20240107)
|
||||
dotenv (2.8.1)
|
||||
emoji_regex (3.2.3)
|
||||
excon (0.112.0)
|
||||
faraday (1.10.4)
|
||||
faraday-em_http (~> 1.0)
|
||||
faraday-em_synchrony (~> 1.0)
|
||||
faraday-excon (~> 1.1)
|
||||
faraday-httpclient (~> 1.0)
|
||||
faraday-multipart (~> 1.0)
|
||||
faraday-net_http (~> 1.0)
|
||||
faraday-net_http_persistent (~> 1.0)
|
||||
faraday-patron (~> 1.0)
|
||||
faraday-rack (~> 1.0)
|
||||
faraday-retry (~> 1.0)
|
||||
ruby2_keywords (>= 0.0.4)
|
||||
faraday-cookie_jar (0.0.7)
|
||||
faraday (>= 0.8.0)
|
||||
http-cookie (~> 1.0.0)
|
||||
faraday-em_http (1.0.0)
|
||||
faraday-em_synchrony (1.0.0)
|
||||
faraday-excon (1.1.0)
|
||||
faraday-httpclient (1.0.1)
|
||||
faraday-multipart (1.1.0)
|
||||
multipart-post (~> 2.0)
|
||||
faraday-net_http (1.0.2)
|
||||
faraday-net_http_persistent (1.2.0)
|
||||
faraday-patron (1.0.0)
|
||||
faraday-rack (1.0.0)
|
||||
faraday-retry (1.0.3)
|
||||
faraday_middleware (1.2.1)
|
||||
faraday (~> 1.0)
|
||||
fastimage (2.4.0)
|
||||
fastlane (2.227.2)
|
||||
CFPropertyList (>= 2.3, < 4.0.0)
|
||||
addressable (>= 2.8, < 3.0.0)
|
||||
artifactory (~> 3.0)
|
||||
aws-sdk-s3 (~> 1.0)
|
||||
babosa (>= 1.0.3, < 2.0.0)
|
||||
bundler (>= 1.12.0, < 3.0.0)
|
||||
colored (~> 1.2)
|
||||
commander (~> 4.6)
|
||||
dotenv (>= 2.1.1, < 3.0.0)
|
||||
emoji_regex (>= 0.1, < 4.0)
|
||||
excon (>= 0.71.0, < 1.0.0)
|
||||
faraday (~> 1.0)
|
||||
faraday-cookie_jar (~> 0.0.6)
|
||||
faraday_middleware (~> 1.0)
|
||||
fastimage (>= 2.1.0, < 3.0.0)
|
||||
fastlane-sirp (>= 1.0.0)
|
||||
gh_inspector (>= 1.1.2, < 2.0.0)
|
||||
google-apis-androidpublisher_v3 (~> 0.3)
|
||||
google-apis-playcustomapp_v1 (~> 0.1)
|
||||
google-cloud-env (>= 1.6.0, < 2.0.0)
|
||||
google-cloud-storage (~> 1.31)
|
||||
highline (~> 2.0)
|
||||
http-cookie (~> 1.0.5)
|
||||
json (< 3.0.0)
|
||||
jwt (>= 2.1.0, < 3)
|
||||
mini_magick (>= 4.9.4, < 5.0.0)
|
||||
multipart-post (>= 2.0.0, < 3.0.0)
|
||||
naturally (~> 2.2)
|
||||
optparse (>= 0.1.1, < 1.0.0)
|
||||
plist (>= 3.1.0, < 4.0.0)
|
||||
rubyzip (>= 2.0.0, < 3.0.0)
|
||||
security (= 0.1.5)
|
||||
simctl (~> 1.6.3)
|
||||
terminal-notifier (>= 2.0.0, < 3.0.0)
|
||||
terminal-table (~> 3)
|
||||
tty-screen (>= 0.6.3, < 1.0.0)
|
||||
tty-spinner (>= 0.8.0, < 1.0.0)
|
||||
word_wrap (~> 1.0.0)
|
||||
xcodeproj (>= 1.13.0, < 2.0.0)
|
||||
xcpretty (~> 0.4.1)
|
||||
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
|
||||
fastlane-plugin-fossify (1.0.2)
|
||||
abbrev
|
||||
fastlane-sirp (1.0.0)
|
||||
sysrandom (~> 1.0)
|
||||
gh_inspector (1.1.3)
|
||||
google-apis-androidpublisher_v3 (0.54.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-apis-core (0.11.3)
|
||||
addressable (~> 2.5, >= 2.5.1)
|
||||
googleauth (>= 0.16.2, < 2.a)
|
||||
httpclient (>= 2.8.1, < 3.a)
|
||||
mini_mime (~> 1.0)
|
||||
representable (~> 3.0)
|
||||
retriable (>= 2.0, < 4.a)
|
||||
rexml
|
||||
google-apis-iamcredentials_v1 (0.17.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-apis-playcustomapp_v1 (0.13.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-apis-storage_v1 (0.31.0)
|
||||
google-apis-core (>= 0.11.0, < 2.a)
|
||||
google-cloud-core (1.8.0)
|
||||
google-cloud-env (>= 1.0, < 3.a)
|
||||
google-cloud-errors (~> 1.0)
|
||||
google-cloud-env (1.6.0)
|
||||
faraday (>= 0.17.3, < 3.0)
|
||||
google-cloud-errors (1.5.0)
|
||||
google-cloud-storage (1.47.0)
|
||||
addressable (~> 2.8)
|
||||
digest-crc (~> 0.4)
|
||||
google-apis-iamcredentials_v1 (~> 0.1)
|
||||
google-apis-storage_v1 (~> 0.31.0)
|
||||
google-cloud-core (~> 1.6)
|
||||
googleauth (>= 0.16.2, < 2.a)
|
||||
mini_mime (~> 1.0)
|
||||
googleauth (1.8.1)
|
||||
faraday (>= 0.17.3, < 3.a)
|
||||
jwt (>= 1.4, < 3.0)
|
||||
multi_json (~> 1.11)
|
||||
os (>= 0.9, < 2.0)
|
||||
signet (>= 0.16, < 2.a)
|
||||
highline (2.0.3)
|
||||
http-cookie (1.0.8)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.9.0)
|
||||
mutex_m
|
||||
jmespath (1.6.2)
|
||||
json (2.11.3)
|
||||
jwt (2.10.1)
|
||||
base64
|
||||
logger (1.7.0)
|
||||
mini_magick (4.13.2)
|
||||
mini_mime (1.1.5)
|
||||
multi_json (1.15.0)
|
||||
multipart-post (2.4.1)
|
||||
mutex_m (0.3.0)
|
||||
nanaimo (0.4.0)
|
||||
naturally (2.2.1)
|
||||
nkf (0.2.0)
|
||||
optparse (0.6.0)
|
||||
os (1.1.4)
|
||||
plist (3.7.2)
|
||||
public_suffix (6.0.2)
|
||||
rake (13.2.1)
|
||||
representable (3.2.0)
|
||||
declarative (< 0.1.0)
|
||||
trailblazer-option (>= 0.1.1, < 0.2.0)
|
||||
uber (< 0.2.0)
|
||||
retriable (3.1.2)
|
||||
rexml (3.4.1)
|
||||
rouge (3.28.0)
|
||||
ruby2_keywords (0.0.5)
|
||||
rubyzip (2.4.1)
|
||||
security (0.1.5)
|
||||
signet (0.20.0)
|
||||
addressable (~> 2.8)
|
||||
faraday (>= 0.17.5, < 3.a)
|
||||
jwt (>= 1.5, < 3.0)
|
||||
multi_json (~> 1.10)
|
||||
simctl (1.6.10)
|
||||
CFPropertyList
|
||||
naturally
|
||||
sysrandom (1.0.5)
|
||||
terminal-notifier (2.0.0)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
trailblazer-option (0.1.2)
|
||||
tty-cursor (0.7.1)
|
||||
tty-screen (0.8.2)
|
||||
tty-spinner (0.9.3)
|
||||
tty-cursor (~> 0.7)
|
||||
uber (0.1.0)
|
||||
unicode-display_width (2.6.0)
|
||||
word_wrap (1.0.0)
|
||||
xcodeproj (1.27.0)
|
||||
CFPropertyList (>= 2.3.3, < 4.0)
|
||||
atomos (~> 0.1.3)
|
||||
claide (>= 1.0.2, < 2.0)
|
||||
colored2 (~> 3.1)
|
||||
nanaimo (~> 0.4.0)
|
||||
rexml (>= 3.3.6, < 4.0)
|
||||
xcpretty (0.4.1)
|
||||
rouge (~> 3.28.0)
|
||||
xcpretty-travis-formatter (1.0.1)
|
||||
xcpretty (~> 0.2, >= 0.0.7)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
x86_64-linux
|
||||
|
||||
DEPENDENCIES
|
||||
fastlane
|
||||
fastlane-plugin-fossify (~> 1.0)
|
||||
|
||||
BUNDLED WITH
|
||||
2.6.8
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
<img alt="Logo" src="graphics/icon.webp" width="120" />
|
||||
|
||||
<a href='https://play.google.com/store/apps/details?id=org.fossify.home'><img alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png' height=80/></a> <a href="https://f-droid.org/en/packages/org.fossify.home/"><img src="https://fdroid.gitlab.io/artwork/badge/get-it-on-en.svg" alt="Get it on F-Droid" height=80/></a> <a href="https://apt.izzysoft.de/fdroid/index/apk/org.fossify.home"><img src="https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png" alt="Get it on IzzyOnDroid" height=80/></a>
|
||||
|
||||
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
app/.gitignore
vendored
2
app/.gitignore
vendored
@@ -1,3 +1,3 @@
|
||||
/build
|
||||
/foss
|
||||
/prepaid
|
||||
/gplay
|
||||
|
||||
@@ -15,15 +15,22 @@ if (keystorePropertiesFile.exists()) {
|
||||
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
|
||||
}
|
||||
|
||||
fun hasSigningVars(): Boolean {
|
||||
return providers.environmentVariable("SIGNING_KEY_ALIAS").orNull != null
|
||||
&& providers.environmentVariable("SIGNING_KEY_PASSWORD").orNull != null
|
||||
&& providers.environmentVariable("SIGNING_STORE_FILE").orNull != null
|
||||
&& providers.environmentVariable("SIGNING_STORE_PASSWORD").orNull != null
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdk = project.libs.versions.app.build.compileSDKVersion.get().toInt()
|
||||
|
||||
defaultConfig {
|
||||
applicationId = libs.versions.app.version.appId.get()
|
||||
applicationId = project.property("APP_ID").toString()
|
||||
minSdk = project.libs.versions.app.build.minimumSDK.get().toInt()
|
||||
targetSdk = project.libs.versions.app.build.targetSDK.get().toInt()
|
||||
versionName = project.libs.versions.app.version.versionName.get()
|
||||
versionCode = project.libs.versions.app.version.versionCode.get().toInt()
|
||||
versionName = project.property("VERSION_NAME").toString()
|
||||
versionCode = project.property("VERSION_CODE").toString().toInt()
|
||||
setProperty("archivesBaseName", "launcher-$versionCode")
|
||||
ksp {
|
||||
arg("room.schemaLocation", "$projectDir/schemas")
|
||||
@@ -38,6 +45,15 @@ android {
|
||||
storeFile = file(keystoreProperties.getProperty("storeFile"))
|
||||
storePassword = keystoreProperties.getProperty("storePassword")
|
||||
}
|
||||
} else if (hasSigningVars()) {
|
||||
register("release") {
|
||||
keyAlias = providers.environmentVariable("SIGNING_KEY_ALIAS").get()
|
||||
keyPassword = providers.environmentVariable("SIGNING_KEY_PASSWORD").get()
|
||||
storeFile = file(providers.environmentVariable("SIGNING_STORE_FILE").get())
|
||||
storePassword = providers.environmentVariable("SIGNING_STORE_PASSWORD").get()
|
||||
}
|
||||
} else {
|
||||
logger.warn("Warning: No signing config found. Build will be unsigned.")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,7 +73,7 @@ android {
|
||||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||
"proguard-rules.pro"
|
||||
)
|
||||
if (keystorePropertiesFile.exists()) {
|
||||
if (keystorePropertiesFile.exists() || hasSigningVars()) {
|
||||
signingConfig = signingConfigs.getByName("release")
|
||||
}
|
||||
}
|
||||
@@ -67,7 +83,7 @@ android {
|
||||
productFlavors {
|
||||
register("core")
|
||||
register("foss")
|
||||
register("prepaid")
|
||||
register("gplay")
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
@@ -88,7 +104,7 @@ android {
|
||||
kotlinOptions.jvmTarget = project.libs.versions.app.build.kotlinJVMTarget.get()
|
||||
}
|
||||
|
||||
namespace = libs.versions.app.version.appId.get()
|
||||
namespace = project.property("APP_ID").toString()
|
||||
|
||||
lint {
|
||||
checkReleaseBuilds = false
|
||||
@@ -96,6 +112,12 @@ android {
|
||||
warningsAsErrors = true
|
||||
baseline = file("lint-baseline.xml")
|
||||
}
|
||||
|
||||
bundle {
|
||||
language {
|
||||
enableSplit = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
detekt {
|
||||
|
||||
@@ -2,6 +2,5 @@
|
||||
<resources>
|
||||
<bool name="show_donate_in_about">false</bool>
|
||||
<bool name="hide_google_relations">false</bool>
|
||||
<bool name="hide_all_external_links">false</bool>
|
||||
<bool name="pretend_thank_you_installed">true</bool>
|
||||
</resources>
|
||||
@@ -431,5 +431,17 @@
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
</intent-filter>
|
||||
</activity-alias>
|
||||
|
||||
<receiver
|
||||
android:name=".receivers.LockDeviceAdminReceiver"
|
||||
android:exported="true"
|
||||
android:permission="android.permission.BIND_DEVICE_ADMIN">
|
||||
<meta-data
|
||||
android:name="android.app.device_admin"
|
||||
android:resource="@xml/device_admin_policies" />
|
||||
<intent-filter>
|
||||
<action android:name="android.app.action.DEVICE_ADMIN_ENABLED" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
</application>
|
||||
</manifest>
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.fossify.home.activities
|
||||
import android.animation.ObjectAnimator
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.Activity
|
||||
import android.app.admin.DevicePolicyManager
|
||||
import android.app.role.RoleManager
|
||||
import android.appwidget.AppWidgetHost
|
||||
import android.appwidget.AppWidgetManager
|
||||
@@ -92,6 +93,7 @@ import org.fossify.home.interfaces.ItemMenuListener
|
||||
import org.fossify.home.models.AppLauncher
|
||||
import org.fossify.home.models.HiddenIcon
|
||||
import org.fossify.home.models.HomeScreenGridItem
|
||||
import org.fossify.home.receivers.LockDeviceAdminReceiver
|
||||
import kotlin.math.abs
|
||||
import kotlin.math.max
|
||||
import kotlin.math.min
|
||||
@@ -631,6 +633,23 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
}
|
||||
}
|
||||
|
||||
fun homeScreenDoubleTapped(eventX: Float, eventY: Float) {
|
||||
val (x, y) = binding.homeScreenGrid.root.intoViewSpaceCoords(eventX, eventY)
|
||||
val clickedGridItem = binding.homeScreenGrid.root.isClickingGridItem(x.toInt(), y.toInt())
|
||||
if (clickedGridItem != null) {
|
||||
return
|
||||
}
|
||||
|
||||
val devicePolicyManager =
|
||||
getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
val isLockDeviceAdminActive = devicePolicyManager.isAdminActive(
|
||||
ComponentName(this, LockDeviceAdminReceiver::class.java)
|
||||
)
|
||||
if (isLockDeviceAdminActive) {
|
||||
devicePolicyManager.lockNow()
|
||||
}
|
||||
}
|
||||
|
||||
fun closeAppDrawer(delayed: Boolean = false) {
|
||||
if (isAllAppsFragmentExpanded()) {
|
||||
val close = {
|
||||
@@ -871,6 +890,11 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
return super.onSingleTapUp(event)
|
||||
}
|
||||
|
||||
override fun onDoubleTap(event: MotionEvent): Boolean {
|
||||
(flingListener as MainActivity).homeScreenDoubleTapped(event.x, event.y)
|
||||
return super.onDoubleTap(event)
|
||||
}
|
||||
|
||||
override fun onFling(
|
||||
event1: MotionEvent?,
|
||||
event2: MotionEvent,
|
||||
@@ -996,20 +1020,6 @@ class MainActivity : SimpleActivity(), FlingListener {
|
||||
)
|
||||
}
|
||||
|
||||
// add Launcher settings as an app
|
||||
val drawable = getDrawableForPackageName(packageName)
|
||||
val placeholderColor = calculateAverageColor(drawable!!.toBitmap())
|
||||
val launcherSettings =
|
||||
AppLauncher(
|
||||
id = null,
|
||||
title = getString(R.string.launcher_settings),
|
||||
packageName = packageName,
|
||||
activityName = "",
|
||||
order = 0,
|
||||
thumbnailColor = placeholderColor,
|
||||
drawable = drawable.toBitmap().toDrawable(resources)
|
||||
)
|
||||
allApps.add(launcherSettings)
|
||||
launchersDB.insertAll(allApps)
|
||||
return allApps
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package org.fossify.home.activities
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.app.admin.DevicePolicyManager
|
||||
import android.content.ComponentName
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import org.fossify.commons.dialogs.RadioGroupDialog
|
||||
@@ -25,7 +27,7 @@ import org.fossify.home.helpers.MAX_COLUMN_COUNT
|
||||
import org.fossify.home.helpers.MAX_ROW_COUNT
|
||||
import org.fossify.home.helpers.MIN_COLUMN_COUNT
|
||||
import org.fossify.home.helpers.MIN_ROW_COUNT
|
||||
import org.fossify.home.helpers.REPOSITORY_NAME
|
||||
import org.fossify.home.receivers.LockDeviceAdminReceiver
|
||||
import java.util.Locale
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
@@ -55,6 +57,7 @@ class SettingsActivity : SimpleActivity() {
|
||||
setupPurchaseThankYou()
|
||||
setupCustomizeColors()
|
||||
setupUseEnglish()
|
||||
setupDoubleTapToLock()
|
||||
setupCloseAppDrawerOnOtherAppOpen()
|
||||
setupDrawerColumnCount()
|
||||
setupDrawerSearchBar()
|
||||
@@ -107,7 +110,11 @@ class SettingsActivity : SimpleActivity() {
|
||||
}
|
||||
|
||||
private fun setupUseEnglish() {
|
||||
binding.settingsUseEnglishHolder.beVisibleIf((config.wasUseEnglishToggled || Locale.getDefault().language != "en") && !isTiramisuPlus())
|
||||
binding.settingsUseEnglishHolder.beVisibleIf(
|
||||
beVisible = (config.wasUseEnglishToggled || Locale.getDefault().language != "en")
|
||||
&& !isTiramisuPlus()
|
||||
)
|
||||
|
||||
binding.settingsUseEnglish.isChecked = config.useEnglish
|
||||
binding.settingsUseEnglishHolder.setOnClickListener {
|
||||
binding.settingsUseEnglish.toggle()
|
||||
@@ -116,6 +123,35 @@ class SettingsActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupDoubleTapToLock() {
|
||||
val devicePolicyManager = getSystemService(DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||
binding.settingsDoubleTapToLock.isChecked = devicePolicyManager.isAdminActive(
|
||||
ComponentName(this, LockDeviceAdminReceiver::class.java)
|
||||
)
|
||||
|
||||
binding.settingsDoubleTapToLockHolder.setOnClickListener {
|
||||
val isLockDeviceAdminActive = devicePolicyManager.isAdminActive(
|
||||
ComponentName(this, LockDeviceAdminReceiver::class.java)
|
||||
)
|
||||
if (isLockDeviceAdminActive) {
|
||||
devicePolicyManager.removeActiveAdmin(
|
||||
ComponentName(this, LockDeviceAdminReceiver::class.java)
|
||||
)
|
||||
} else {
|
||||
val intent = Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN)
|
||||
intent.putExtra(
|
||||
DevicePolicyManager.EXTRA_DEVICE_ADMIN,
|
||||
ComponentName(this, LockDeviceAdminReceiver::class.java)
|
||||
)
|
||||
intent.putExtra(
|
||||
DevicePolicyManager.EXTRA_ADD_EXPLANATION,
|
||||
getString(R.string.lock_device_admin_hint)
|
||||
)
|
||||
startActivity(intent)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupCloseAppDrawerOnOtherAppOpen() {
|
||||
binding.settingsCloseAppDrawerOnOtherApp.isChecked = config.closeAppDrawer
|
||||
binding.settingsCloseAppDrawerOnOtherAppHolder.setOnClickListener {
|
||||
@@ -249,7 +285,6 @@ class SettingsActivity : SimpleActivity() {
|
||||
appNameId = R.string.app_name,
|
||||
licenseMask = licenses,
|
||||
versionName = BuildConfig.VERSION_NAME,
|
||||
repositoryName = REPOSITORY_NAME,
|
||||
faqItems = faqItems,
|
||||
showFAQBeforeMail = true
|
||||
)
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.fossify.home.activities
|
||||
|
||||
import org.fossify.commons.activities.BaseSimpleActivity
|
||||
import org.fossify.home.R
|
||||
import org.fossify.home.helpers.REPOSITORY_NAME
|
||||
|
||||
open class SimpleActivity : BaseSimpleActivity() {
|
||||
override fun getAppIconIDs() = arrayListOf(
|
||||
@@ -27,4 +28,6 @@ open class SimpleActivity : BaseSimpleActivity() {
|
||||
)
|
||||
|
||||
override fun getAppLauncherName() = getString(R.string.app_launcher_name)
|
||||
|
||||
override fun getRepositoryName() = REPOSITORY_NAME
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import android.content.pm.LauncherApps
|
||||
import android.content.res.ColorStateList
|
||||
import android.graphics.Color
|
||||
import android.graphics.Rect
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.net.Uri
|
||||
import android.os.Process
|
||||
import android.provider.Settings
|
||||
@@ -39,12 +38,6 @@ import org.fossify.home.interfaces.ItemMenuListener
|
||||
import org.fossify.home.models.HomeScreenGridItem
|
||||
|
||||
fun Activity.launchApp(packageName: String, activityName: String) {
|
||||
// if this is true, launch the app settings
|
||||
if (packageName == this.packageName) {
|
||||
startActivity(Intent(applicationContext, SettingsActivity::class.java))
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
Intent(Intent.ACTION_MAIN).apply {
|
||||
addCategory(Intent.CATEGORY_LAUNCHER)
|
||||
@@ -90,7 +83,7 @@ fun Activity.handleGridItemPopupMenu(
|
||||
anchorView: View,
|
||||
gridItem: HomeScreenGridItem,
|
||||
isOnAllAppsFragment: Boolean,
|
||||
listener: ItemMenuListener
|
||||
listener: ItemMenuListener,
|
||||
): PopupMenu {
|
||||
val contextTheme = ContextThemeWrapper(this, getPopupMenuTheme())
|
||||
return PopupMenu(contextTheme, anchorView, Gravity.TOP or Gravity.END).apply {
|
||||
@@ -114,8 +107,9 @@ fun Activity.handleGridItemPopupMenu(
|
||||
gridItem.type == ITEM_TYPE_ICON && isOnAllAppsFragment
|
||||
menu.findItem(R.id.resize).isVisible = gridItem.type == ITEM_TYPE_WIDGET
|
||||
menu.findItem(R.id.app_info).isVisible = gridItem.type == ITEM_TYPE_ICON
|
||||
menu.findItem(R.id.uninstall).isVisible =
|
||||
gridItem.type == ITEM_TYPE_ICON && canAppBeUninstalled(gridItem.packageName)
|
||||
menu.findItem(R.id.uninstall).isVisible = gridItem.type == ITEM_TYPE_ICON
|
||||
&& canAppBeUninstalled(gridItem.packageName)
|
||||
&& gridItem.packageName != packageName
|
||||
menu.findItem(R.id.remove).isVisible = !isOnAllAppsFragment
|
||||
|
||||
val launcherApps =
|
||||
@@ -145,7 +139,7 @@ fun Activity.handleGridItemPopupMenu(
|
||||
|
||||
menu.add(R.id.group_shortcuts, Menu.NONE, Menu.NONE, shortcutInfo.getLabel())
|
||||
.setIcon(
|
||||
(iconDrawable ?: ColorDrawable(Color.TRANSPARENT))
|
||||
(iconDrawable ?: Color.TRANSPARENT.toDrawable())
|
||||
.toBitmap(width = iconSize, height = iconSize)
|
||||
.toDrawable(resources)
|
||||
)
|
||||
|
||||
@@ -113,7 +113,10 @@ class AllAppsFragment(
|
||||
shouldIntercept =
|
||||
distance > 0 && binding.allAppsGrid.computeVerticalScrollOffset() == 0
|
||||
if (shouldIntercept) {
|
||||
activity?.hideKeyboard()
|
||||
// Hiding is expensive, only do it if focused
|
||||
if (binding.searchBar.hasFocus()) {
|
||||
activity?.hideKeyboard()
|
||||
}
|
||||
activity?.startHandlingTouches(touchDownY)
|
||||
touchDownY = -1
|
||||
}
|
||||
@@ -221,7 +224,8 @@ class AllAppsFragment(
|
||||
binding.allAppsFastscroller.setPadding(leftListPadding, 0, rightListPadding, 0)
|
||||
binding.allAppsGrid.addOnScrollListener(object : OnScrollListener() {
|
||||
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
||||
if (dy > 0 && binding.allAppsGrid.computeVerticalScrollOffset() > 0) {
|
||||
// Hiding is expensive, only do it if focused
|
||||
if (binding.searchBar.hasFocus() && dy > 0 && binding.allAppsGrid.computeVerticalScrollOffset() > 0) {
|
||||
activity?.hideKeyboard()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,9 @@ interface HomeScreenGridItemsDao {
|
||||
@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")
|
||||
fun updateItemPosition(left: Int, top: Int, right: Int, bottom: Int, page: Int, docked: Boolean, parentId: Long?, id: Long)
|
||||
|
||||
@Query("UPDATE home_screen_grid_items SET widget_id = :widgetId WHERE id = :id")
|
||||
fun updateWidgetId(widgetId: Int, id: Long): Int
|
||||
|
||||
@Query("DELETE FROM home_screen_grid_items WHERE id = :id")
|
||||
fun deleteItemById(id: Long)
|
||||
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package org.fossify.home.receivers
|
||||
|
||||
import android.app.admin.DeviceAdminReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import org.fossify.home.R
|
||||
|
||||
class LockDeviceAdminReceiver : DeviceAdminReceiver() {
|
||||
|
||||
override fun onDisableRequested(context: Context, intent: Intent): CharSequence {
|
||||
return context.getString(R.string.lock_device_admin_warning)
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,6 @@ import android.appwidget.AppWidgetManager
|
||||
import android.appwidget.AppWidgetProviderInfo
|
||||
import android.content.Context
|
||||
import android.graphics.*
|
||||
import android.graphics.drawable.BitmapDrawable
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
@@ -25,6 +24,7 @@ import android.view.View
|
||||
import android.view.animation.DecelerateInterpolator
|
||||
import android.view.animation.OvershootInterpolator
|
||||
import android.widget.RelativeLayout
|
||||
import androidx.core.graphics.createBitmap
|
||||
import androidx.core.graphics.drawable.toBitmap
|
||||
import androidx.core.graphics.drawable.toDrawable
|
||||
import androidx.core.graphics.toRect
|
||||
@@ -184,7 +184,7 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
||||
item.drawable = item.toFolder().generateDrawable()
|
||||
} else if (item.type == ITEM_TYPE_SHORTCUT) {
|
||||
if (item.icon != null) {
|
||||
item.drawable = BitmapDrawable(item.icon)
|
||||
item.drawable = item.icon?.toDrawable(context.resources)
|
||||
} else {
|
||||
ensureBackgroundThread {
|
||||
context.homeScreenGridItemsDB.deleteById(item.id!!)
|
||||
@@ -546,7 +546,7 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
||||
redrawIcons = true
|
||||
} else {
|
||||
val center = gridCenters.minBy {
|
||||
Math.abs(it.x - draggedItemCurrentCoords.first + sideMargins.left) + Math.abs(it.y - draggedItemCurrentCoords.second + sideMargins.top)
|
||||
abs(it.x - draggedItemCurrentCoords.first + sideMargins.left) + abs(it.y - draggedItemCurrentCoords.second + sideMargins.top)
|
||||
}
|
||||
|
||||
val gridCells = getClosestGridCells(center)
|
||||
@@ -778,7 +778,7 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
||||
|
||||
private fun addWidget() {
|
||||
val center = gridCenters.minBy {
|
||||
Math.abs(it.x - draggedItemCurrentCoords.first + sideMargins.left) + Math.abs(it.y - draggedItemCurrentCoords.second + sideMargins.top)
|
||||
abs(it.x - draggedItemCurrentCoords.first + sideMargins.left) + abs(it.y - draggedItemCurrentCoords.second + sideMargins.top)
|
||||
}
|
||||
|
||||
val gridCells = getClosestGridCells(center)
|
||||
@@ -826,7 +826,7 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
||||
val itemId = context.homeScreenGridItemsDB.insert(widgetItem)
|
||||
widgetItem.id = itemId
|
||||
post {
|
||||
bindWidget(widgetItem, false)
|
||||
bindWidget(widgetItem)
|
||||
}
|
||||
} else {
|
||||
context.homeScreenGridItemsDB.updateItemPosition(
|
||||
@@ -880,7 +880,7 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
||||
redrawGrid()
|
||||
}
|
||||
|
||||
private fun bindWidget(item: HomeScreenGridItem, isInitialDrawAfterLaunch: Boolean) {
|
||||
private fun bindWidget(item: HomeScreenGridItem) {
|
||||
if (item.outOfBounds()) {
|
||||
return
|
||||
}
|
||||
@@ -888,19 +888,23 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
||||
val activity = context as MainActivity
|
||||
val appWidgetProviderInfo = item.providerInfo ?: appWidgetManager!!.installedProviders.firstOrNull { it.provider.className == item.className }
|
||||
if (appWidgetProviderInfo != null) {
|
||||
val appWidgetId = appWidgetHost.allocateAppWidgetId()
|
||||
activity.handleWidgetBinding(appWidgetManager, appWidgetId, appWidgetProviderInfo) { canBind ->
|
||||
item.widgetId = appWidgetHost.allocateAppWidgetId()
|
||||
ensureBackgroundThread {
|
||||
context.homeScreenGridItemsDB.updateWidgetId(item.widgetId, item.id!!)
|
||||
}
|
||||
|
||||
activity.handleWidgetBinding(appWidgetManager, item.widgetId, appWidgetProviderInfo) { canBind ->
|
||||
if (canBind) {
|
||||
if (appWidgetProviderInfo.configure != null && !isInitialDrawAfterLaunch) {
|
||||
activity.handleWidgetConfigureScreen(appWidgetHost, appWidgetId) { success ->
|
||||
if (appWidgetProviderInfo.configure != null) {
|
||||
activity.handleWidgetConfigureScreen(appWidgetHost, item.widgetId) { success ->
|
||||
if (success) {
|
||||
placeAppWidget(appWidgetId, appWidgetProviderInfo, item)
|
||||
placeAppWidget(appWidgetProviderInfo, item)
|
||||
} else {
|
||||
removeItemFromHomeScreen(item)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
placeAppWidget(appWidgetId, appWidgetProviderInfo, item)
|
||||
placeAppWidget(appWidgetProviderInfo, item)
|
||||
}
|
||||
} else {
|
||||
removeItemFromHomeScreen(item)
|
||||
@@ -913,12 +917,11 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
||||
}
|
||||
}
|
||||
|
||||
private fun placeAppWidget(appWidgetId: Int, appWidgetProviderInfo: AppWidgetProviderInfo, item: HomeScreenGridItem) {
|
||||
item.widgetId = appWidgetId
|
||||
private fun placeAppWidget(appWidgetProviderInfo: AppWidgetProviderInfo, item: HomeScreenGridItem) {
|
||||
// we have to pass the base context here, else there will be errors with the themes
|
||||
val widgetView = appWidgetHost.createView((context as MainActivity).baseContext, appWidgetId, appWidgetProviderInfo) as MyAppWidgetHostView
|
||||
widgetView.tag = appWidgetId
|
||||
widgetView.setAppWidget(appWidgetId, appWidgetProviderInfo)
|
||||
val widgetView = appWidgetHost.createView((context as MainActivity).baseContext, item.widgetId, appWidgetProviderInfo) as MyAppWidgetHostView
|
||||
widgetView.tag = item.widgetId
|
||||
widgetView.setAppWidget(item.widgetId, appWidgetProviderInfo)
|
||||
widgetView.longPressListener = { x, y ->
|
||||
val activity = context as? MainActivity
|
||||
if (activity?.isAllAppsFragmentExpanded() == false) {
|
||||
@@ -937,7 +940,7 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
||||
|
||||
// remove the drawable so that it gets refreshed on long press
|
||||
item.drawable = null
|
||||
// Delete existing windget if it has already been loaded to the list
|
||||
// Delete existing widget if it has already been loaded to the list
|
||||
gridItems.removeIf { it.id == item.id }
|
||||
gridItems.add(item)
|
||||
}
|
||||
@@ -1051,7 +1054,8 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
||||
|
||||
if (isFirstDraw) {
|
||||
gridItems.filter { it.type == ITEM_TYPE_WIDGET && !it.outOfBounds() }.forEach { item ->
|
||||
bindWidget(item, true)
|
||||
val appWidgetProviderInfo = item.providerInfo ?: appWidgetManager!!.installedProviders.firstOrNull { it.provider.className == item.className }
|
||||
placeAppWidget(appWidgetProviderInfo!!, item)
|
||||
}
|
||||
} else {
|
||||
gridItems.filter { it.type == ITEM_TYPE_WIDGET && !it.outOfBounds() }.forEach { item ->
|
||||
@@ -1171,7 +1175,7 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
||||
// at first draw we are loading the widget from the database at some exact spot, not dragging it
|
||||
if (!isFirstDraw) {
|
||||
val center = gridCenters.minBy {
|
||||
Math.abs(it.x - draggedItemCurrentCoords.first + sideMargins.left) + Math.abs(it.y - draggedItemCurrentCoords.second + sideMargins.top)
|
||||
abs(it.x - draggedItemCurrentCoords.first + sideMargins.left) + abs(it.y - draggedItemCurrentCoords.second + sideMargins.top)
|
||||
}
|
||||
|
||||
val gridCells = getClosestGridCells(center)
|
||||
@@ -1274,8 +1278,12 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
||||
cell.top - iconMargin
|
||||
} + sideMargins.top
|
||||
}
|
||||
|
||||
return Rect(clickableLeft, clickableTop, clickableLeft + iconSize + 2 * iconMargin, clickableTop + iconSize + 2 * iconMargin)
|
||||
val additionalHeight = if (!item.docked) {
|
||||
// multiply line count by line height to get label height
|
||||
// we multiply all line heights by 2 so all widgets get the same clickable area and 2 is the max line count
|
||||
(2 * (textPaint.fontMetrics.bottom - textPaint.fontMetrics.top)).toInt()
|
||||
} else 0
|
||||
return Rect(clickableLeft, clickableTop, clickableLeft + iconSize + 2 * iconMargin, clickableTop + iconSize + 2 * iconMargin + additionalHeight)
|
||||
}
|
||||
|
||||
// drag the center of the widget, not the top left corner
|
||||
@@ -1317,6 +1325,11 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
||||
}
|
||||
}
|
||||
|
||||
// if a folder is open, we only want to allow clicks on items in the folder
|
||||
if (currentlyOpenFolder != null) {
|
||||
return null
|
||||
}
|
||||
|
||||
for (gridItem in gridItems.filterVisibleOnCurrentPageOnly()) {
|
||||
if (gridItem.outOfBounds()) {
|
||||
continue
|
||||
@@ -1626,7 +1639,7 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
||||
return null
|
||||
}
|
||||
|
||||
val bitmap = Bitmap.createBitmap(iconSize, iconSize, Bitmap.Config.ARGB_8888)
|
||||
val bitmap = createBitmap(iconSize, iconSize)
|
||||
val canvas = Canvas(bitmap)
|
||||
val circlePath = Path().apply { addCircle((iconSize / 2).toFloat(), (iconSize / 2).toFloat(), (iconSize / 2).toFloat(), Path.Direction.CCW) }
|
||||
canvas.clipPath(circlePath)
|
||||
@@ -1645,7 +1658,7 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
||||
newDrawable?.setBounds(drawableX, drawableY, drawableX + scaledIconSize.toInt(), drawableY + scaledIconSize.toInt())
|
||||
newDrawable?.draw(canvas)
|
||||
}
|
||||
return BitmapDrawable(resources, bitmap)
|
||||
return bitmap.toDrawable(resources)
|
||||
}
|
||||
|
||||
fun getDrawingRect(): RectF {
|
||||
|
||||
@@ -136,6 +136,22 @@
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_double_tap_to_lock_holder"
|
||||
style="@style/SettingsHolderSwitchStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/ripple_background">
|
||||
|
||||
<org.fossify.commons.views.MyMaterialSwitch
|
||||
android:id="@+id/settings_double_tap_to_lock"
|
||||
style="@style/SettingsSwitchStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/double_tap_to_lock" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<include
|
||||
android:id="@+id/settings_general_settings_divider"
|
||||
layout="@layout/divider" />
|
||||
|
||||
@@ -10,6 +10,6 @@
|
||||
app:showAsAction="always" />
|
||||
<item
|
||||
android:id="@+id/more_apps_from_us"
|
||||
android:title="@string/more_apps_from_us"
|
||||
android:title="@string/more_fossify_apps"
|
||||
app:showAsAction="never" />
|
||||
</menu>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_launcher_name">Начален Екран</string>
|
||||
<string name="app_launcher_name">Начален екран</string>
|
||||
<string name="launcher_settings">Начален Екран Настройки</string>
|
||||
<string name="app_info">Информация за приложението</string>
|
||||
<string name="touch_hold_widget">Натиснете дълго приспособлението и го плъзнете на началния екран</string>
|
||||
@@ -10,4 +10,4 @@
|
||||
<string name="manage_hidden_icons">Управлявай скритите икони</string>
|
||||
<string name="hidden_icons">Скрити икони</string>
|
||||
<string name="hidden_icons_placeholder">Някои приложения не могат да бъдат деинсталирани поради системни ограничения, но можете поне да скриете иконите им, за да не ги виждате.</string>
|
||||
</resources>
|
||||
</resources>
|
||||
@@ -14,4 +14,7 @@
|
||||
<string name="close_app_drawer_on_app_open">Tanca el calaix d\'aplicacions en obrir una aplicació</string>
|
||||
<string name="widget_too_big">El giny és massa gros per a la mida de la pantalla d\'inici actual</string>
|
||||
<string name="home_screen_settings">Pantalla inicial</string>
|
||||
<string name="double_tap_to_lock">Toc doble per a bloquejar la pantalla</string>
|
||||
<string name="lock_device_admin_hint">Per a activar la funció de toc doble per a bloquejar la pantalla, heu de concedir permís d\'administració. Tingueu en compte que l\'aplicació no es pot desinstal·lar fins que no s\'elimini aquest permís.</string>
|
||||
<string name="lock_device_admin_warning">Desactivant el permís d\'administració es desactivarà la funció de toc doble per a bloquejar la pantalla.</string>
|
||||
</resources>
|
||||
@@ -14,4 +14,7 @@
|
||||
<string name="widget_too_big">Widget je příliš velký na aktuální velikost domovské obrazovky</string>
|
||||
<string name="app_drawer_settings">Nabídka aplikací</string>
|
||||
<string name="close_app_drawer_on_app_open">Zavřít nabídku aplikací po otevření aplikace</string>
|
||||
<string name="lock_device_admin_hint">Chcete-li povolit funkci zamykání obrazovky dvojitým klepnutím, musíte udělit oprávnění správce. Upozornění: aplikaci nelze odinstalovat, dokud toto oprávnění neodeberete.</string>
|
||||
<string name="lock_device_admin_warning">Deaktivací oprávnění správce zakážete funkci zamykání obrazovky dvojitým klepnutím.</string>
|
||||
<string name="double_tap_to_lock">Klepněte dvakrát pro zamknutí obrazovky</string>
|
||||
</resources>
|
||||
@@ -14,4 +14,7 @@
|
||||
<string name="home_screen_settings">Startbildschirm</string>
|
||||
<string name="widget_too_big">Das Widget ist zu groß für den aktuellen Startbildschirm</string>
|
||||
<string name="app_launcher_name">Launcher</string>
|
||||
<string name="lock_device_admin_hint">Um die Funktion „Doppeltes Antippen zum Sperren des Bildschirms“ zu aktivieren, musst du die Administratorberechtigung erteilen. Beachte, dass die App nicht deinstalliert werden kann, bis diese Berechtigung entfernt wird.</string>
|
||||
<string name="double_tap_to_lock">Doppeltes Antippen zum Sperren des Bildschirms</string>
|
||||
<string name="lock_device_admin_warning">Durch Entfernen der Administratorberechtigung wird die Funktion „Doppeltes Antippen zum Sperren des Bildschirms“ deaktiviert.</string>
|
||||
</resources>
|
||||
@@ -3,7 +3,7 @@
|
||||
<string name="app_launcher_name">Εκκινητής</string>
|
||||
<string name="launcher_settings">Ρυθμίσεις Εκκινητή</string>
|
||||
<string name="app_info">Πληροφορίες εφαρμογής</string>
|
||||
<string name="touch_hold_widget">Παρατεταμένο άγγιγμα στο Γραφικό και σύρετέ το στην αρχική σας οθόνη.</string>
|
||||
<string name="touch_hold_widget">Πατήστε παρατεταμένα το γραφικό στοιχείο και σύρετέ το στην αρχική οθόνη</string>
|
||||
<string name="uninstall">Απεγκατάσταση</string>
|
||||
<string name="hide_icon">Απόκρυψη εικονιδίου</string>
|
||||
<string name="add_hidden_icons">Προσθήκη κρυφών εικονιδίων</string>
|
||||
@@ -14,4 +14,7 @@
|
||||
<string name="close_app_drawer_on_app_open">Κλείστε το συρτάρι εφαρμογών κατά το άνοιγμα μιας εφαρμογής</string>
|
||||
<string name="home_screen_settings">Αρχική οθόνη</string>
|
||||
<string name="widget_too_big">Το γραφικό είναι πολύ μεγάλο για το τρέχον μέγεθος της αρχικής οθόνης</string>
|
||||
<string name="lock_device_admin_hint">Για να ενεργοποιήσετε τη λειτουργία διπλής βρύσης για κλείδωμα οθόνης, πρέπει να παραχωρήσετε άδεια διαχειριστή. Λάβετε υπόψη ότι δεν είναι δυνατή η κατάργηση εγκατάστασης της εφαρμογής μέχρι να καταργηθεί αυτή η άδεια.</string>
|
||||
<string name="double_tap_to_lock">Διπλό πάτημα για κλείδωμα οθόνης</string>
|
||||
<string name="lock_device_admin_warning">Η απενεργοποίηση της άδειας διαχειριστή θα απενεργοποιήσει τη λειτουργία διπλής βρύσης για κλείδωμα οθόνης.</string>
|
||||
</resources>
|
||||
|
||||
@@ -1,2 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources></resources>
|
||||
<resources>
|
||||
<string name="app_launcher_name">Lanĉilo</string>
|
||||
<string name="launcher_settings">Lanĉilaj agordoj</string>
|
||||
<string name="touch_hold_widget">Longe premu la fenestraĵon kaj treni ĝin sur vian hejmekranon</string>
|
||||
<string name="uninstall">Malinstali</string>
|
||||
<string name="hide_icon">Kaŝi bildeton</string>
|
||||
<string name="hidden_icons">Kaŝitaj bildetoj</string>
|
||||
<string name="app_drawer_settings">Aplikaĵa tirkesto</string>
|
||||
<string name="close_app_drawer_on_app_open">Fermi aplikaĵan tirkeston kiam aplikaĵo estas malfermita</string>
|
||||
<string name="home_screen_settings">Hejmekrano</string>
|
||||
<string name="widget_too_big">La fenestraĵo tro grandas por la aktuala grandeco de la hejmekrano</string>
|
||||
<string name="add_hidden_icons">Aldoni kaŝitajn bildetojn</string>
|
||||
<string name="manage_hidden_icons">Administri kaŝitajn bildetojn</string>
|
||||
<string name="hidden_icons_placeholder">Ne eblas malinstali kelkajn aplikaĵojn pro sistemaj limigoj, sed almenaŭ eblas kaŝi iliajn bildetojn por eviti vidi ilin.</string>
|
||||
<string name="double_tap_to_lock">Duoble frapetu por ŝlosi la ekranon</string>
|
||||
<string name="lock_device_admin_hint">Por aktivigi la funkcion de ŝlosado de ekrano per duobla frapeto, endas koncedi administrajn permesojn. Notu, ke ne eblas malinstali la aplikaĵon antaŭ senvalidigi tiujn permesojn.</string>
|
||||
<string name="lock_device_admin_warning">Malŝalto de administraj permesoj malŝaltos la funkcion de ŝlosado de ekrano per duobla frapeto.</string>
|
||||
<string name="app_info">Aplikaĵaj informoj</string>
|
||||
</resources>
|
||||
|
||||
@@ -14,4 +14,7 @@
|
||||
<string name="close_app_drawer_on_app_open">Cerrar el cajón de aplicaciones al abrir una aplicación</string>
|
||||
<string name="widget_too_big">El widget es demasiado grande para el tamaño actual de la pantalla de inicio</string>
|
||||
<string name="home_screen_settings">Pantalla de inicio</string>
|
||||
<string name="double_tap_to_lock">Toca dos veces para bloquear la pantalla</string>
|
||||
<string name="lock_device_admin_warning">Al desactivar el permiso de administrador se desactivará la función de doble toque para bloquear la pantalla.</string>
|
||||
<string name="lock_device_admin_hint">Para activar la función de doble toque para bloquear la pantalla, debes conceder un permiso de administrador. Tenga en cuenta que la aplicación no se puede desinstalar hasta que se elimine este permiso.</string>
|
||||
</resources>
|
||||
|
||||
@@ -14,4 +14,7 @@
|
||||
<string name="close_app_drawer_on_app_open">Rakenduse avamisel sulge rakenduste kausta vaade</string>
|
||||
<string name="home_screen_settings">Avaleht</string>
|
||||
<string name="widget_too_big">Vidin on liiga suur praeguse ekraanimõõdu jaoks</string>
|
||||
</resources>
|
||||
<string name="double_tap_to_lock">Topeltpuudutus lukustusvaates</string>
|
||||
<string name="lock_device_admin_warning">Peakasutaja õiguste eemaldamine lülitab välja võimaluse kasutada lukustusvaates topeltpuudutust.</string>
|
||||
<string name="lock_device_admin_hint">Kui soovid lukustusvaates kasutada topeltpuudutust, siis vajab rakendus peakasutaja õigusi. Palun arvesta, et rakenduse eemaldamiseks pead esmalt eemaldama need õigused.</string>
|
||||
</resources>
|
||||
@@ -14,4 +14,7 @@
|
||||
<string name="add_hidden_icons">Gehitu ezkutuko ikonoak</string>
|
||||
<string name="manage_hidden_icons">Kudeatu ezkutuko ikonoak</string>
|
||||
<string name="hidden_icons_placeholder">Aplikazio batzuk ezin dira desinstalatu sistemaren murrizketak direla eta, baina gutxienez haien ikonoak ezkutatu ditzakezu ez ikusteko.</string>
|
||||
</resources>
|
||||
<string name="double_tap_to_lock">Sakatu bi aldiz pantaila blokeatzeko</string>
|
||||
<string name="lock_device_admin_hint">Bi aldiz sakatuta pantaila blokeatzeko, kudeatzaile baimena eman behar duzu. Kontuan izan baimen hau kendu arte ezingo duzula aplikazioa telefonotik kendu.</string>
|
||||
<string name="lock_device_admin_warning">Kudeatzaile baimena desaktibatzean, pantaila blokeatzeko bi aldiz ikutzea desaktibatu egingo da.</string>
|
||||
</resources>
|
||||
|
||||
@@ -3,11 +3,18 @@
|
||||
<string name="app_launcher_name">Käynnistin</string>
|
||||
<string name="launcher_settings">Käynnistimen asetukset</string>
|
||||
<string name="app_info">Sovelluksen tiedot</string>
|
||||
<string name="touch_hold_widget">Paina widgettiä pitkään ja vedä se aloitusnäytöllesi</string>
|
||||
<string name="touch_hold_widget">Paina vimpainta pitkään ja vedä se aloitusnäytöllesi</string>
|
||||
<string name="uninstall">Poista asennus</string>
|
||||
<string name="hide_icon">Piilota kuvake</string>
|
||||
<string name="add_hidden_icons">Lisää piilotettuja kuvakkeita</string>
|
||||
<string name="manage_hidden_icons">Hallitse piilotettuja kuvakkeita</string>
|
||||
<string name="hidden_icons">Piilotetut kuvakkeet</string>
|
||||
<string name="hidden_icons_placeholder">Joitakin sovelluksia ei ole järjestelmärajoitusten vuoksi mahdollista poistaa, mutta voit kuitenkin piilottaa niiden kuvakkeet näkyvistä.</string>
|
||||
<string name="widget_too_big">Vimpain on liian suuri nykyiseen aloitusnäytön kokoon</string>
|
||||
<string name="home_screen_settings">Kotinäyttö</string>
|
||||
<string name="close_app_drawer_on_app_open">Sulje sovellusvedin, kun uusi sovellus avataan</string>
|
||||
<string name="app_drawer_settings">Sovellusvedin</string>
|
||||
<string name="lock_device_admin_hint">Näytön kaksoisnapautuslukitus vaatii pääkäyttäjäoikeuksia. Huomio, että sovellusta ei voida poistaa, ennen kuin tämä oikeus on poistettu.</string>
|
||||
<string name="double_tap_to_lock">Kaksoisnapauta lukitaksesi näytön</string>
|
||||
<string name="lock_device_admin_warning">Pääkäyttäjäoikeuden poiskytkentä, estää kaksoisnapautuslukituksen toiminnan.</string>
|
||||
</resources>
|
||||
|
||||
@@ -14,4 +14,7 @@
|
||||
<string name="close_app_drawer_on_app_open">Fermer le tiroir de l\'appli à l\'ouverture d\'une application</string>
|
||||
<string name="widget_too_big">Le widget est trop grand pour la taille actuelle de l\'écran</string>
|
||||
<string name="home_screen_settings">Écran d\'accueil</string>
|
||||
</resources>
|
||||
<string name="lock_device_admin_hint">Pour activer la fonction de double appui pour verrouiller l\'écran, vous devez accorder l\'autorisation d\'administrateur. Notez que l\'application ne peut pas être désinstallée tant que cette autorisation n\'est pas supprimée.</string>
|
||||
<string name="lock_device_admin_warning">La désactivation de l\'autorisation d\'administrateur désactivera la fonction de double appui pour verrouiller l\'écran.</string>
|
||||
<string name="double_tap_to_lock">Appuyez deux fois pour verrouiller l\'écran</string>
|
||||
</resources>
|
||||
|
||||
20
app/src/main/res/values-ga/strings.xml
Normal file
20
app/src/main/res/values-ga/strings.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_launcher_name">Lainseálaí</string>
|
||||
<string name="launcher_settings">Socruithe Lainseálaí</string>
|
||||
<string name="app_info">Eolas aip</string>
|
||||
<string name="touch_hold_widget">Brúigh fada an ghiuirléid agus tarraing ar do scáileán baile é</string>
|
||||
<string name="uninstall">Díshuiteáil</string>
|
||||
<string name="hidden_icons">Deilbhíní i bhfolach</string>
|
||||
<string name="manage_hidden_icons">Bainistigh deilbhíní i bhfolach</string>
|
||||
<string name="add_hidden_icons">Cuir deilbhíní i bhfolach</string>
|
||||
<string name="hidden_icons_placeholder">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.</string>
|
||||
<string name="app_drawer_settings">Tarraiceán aip</string>
|
||||
<string name="close_app_drawer_on_app_open">Dún tarraiceán aip nuair a osclaítear aip</string>
|
||||
<string name="home_screen_settings">Scáileán baile</string>
|
||||
<string name="widget_too_big">Tá an ghiuirléid ró-mhór do mhéid an scáileáin baile reatha</string>
|
||||
<string name="hide_icon">Folaigh deilbhín</string>
|
||||
<string name="double_tap_to_lock">Tapáil faoi dhó chun an scáileán a ghlasáil</string>
|
||||
<string name="lock_device_admin_warning">Má dhéantar cead riaracháin a dhíghníomhachtú, díchumasófar an sconna dúbailte chun an ghné scáileáin a ghlasáil.</string>
|
||||
<string name="lock_device_admin_hint">Chun an sconna dúbailte a chumasú chun gné an scáileáin a ghlasáil, ní mór duit cead riaracháin a dheonú. Tabhair faoi deara nach féidir an aip a dhíshuiteáil go dtí go mbaintear an cead seo.</string>
|
||||
</resources>
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="app_launcher_name">Lanzador</string>
|
||||
<string name="launcher_settings">Configuración do lanzador</string>
|
||||
<string name="launcher_settings">Axustes do lanzador</string>
|
||||
<string name="app_info">Información da aplicación</string>
|
||||
<string name="touch_hold_widget">Manteña premido o widget e arrástrao a túa pantalla de inicio</string>
|
||||
<string name="uninstall">Desinstalar</string>
|
||||
@@ -10,4 +10,8 @@
|
||||
<string name="manage_hidden_icons">Xestionar iconas ocultas</string>
|
||||
<string name="hidden_icons">Iconas ocultas</string>
|
||||
<string name="hidden_icons_placeholder">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.</string>
|
||||
</resources>
|
||||
<string name="app_drawer_settings">Panel de apps</string>
|
||||
<string name="close_app_drawer_on_app_open">Pechar o panel ao abrir unha app</string>
|
||||
<string name="widget_too_big">O widget é demasiado grande para o tamaño da pantalla de inicio</string>
|
||||
<string name="home_screen_settings">Pantalla de inicio</string>
|
||||
</resources>
|
||||
@@ -14,4 +14,7 @@
|
||||
<string name="close_app_drawer_on_app_open">ऐप खोलने पर ऐप ड्रॉअर बंद कर दें</string>
|
||||
<string name="home_screen_settings">होम स्क्रीन</string>
|
||||
<string name="widget_too_big">वर्तमान होम स्क्रीन आकार के लिए विजेट बहुत बड़ा है</string>
|
||||
<string name="lock_device_admin_hint">स्क्रीन लॉक करने के लिए डबल-टैप करने वाले फीचर को सक्षम करने के लिए प्रशासनिक अनुमति आवश्यक है। ध्यान रखें कि ये ऐप अनइंस्टॉल नहीं हो पाएगा जब तक ये अनुमति रहेगी।</string>
|
||||
<string name="double_tap_to_lock">स्क्रीन लॉक करने के लिए डबल टैप करें</string>
|
||||
<string name="lock_device_admin_warning">प्रशासनिक अनुमतियाँ हटाये जाने पर डबल-टैप स्क्रीन लॉक सुविधा अक्षम हो जायेगी।</string>
|
||||
</resources>
|
||||
|
||||
@@ -14,4 +14,7 @@
|
||||
<string name="app_drawer_settings">Ladica aplikacije</string>
|
||||
<string name="close_app_drawer_on_app_open">Zatvori ladicu aplikacija pri otvaranju aplikacije</string>
|
||||
<string name="widget_too_big">Widget je prevelik za trenutnu veličinu početnog ekrana</string>
|
||||
<string name="double_tap_to_lock">Dodirni dvaput za zaključavanje ekrana</string>
|
||||
<string name="lock_device_admin_hint">Za aktiviranje funkcije dvostrukog dodira za zaključavanje ekrana moraš odobriti administratorsku dozvolu. Imaj na umu da se aplikacija ne može deinstalirati sve dok se ova dozvola ne ukloni.</string>
|
||||
<string name="lock_device_admin_warning">Uklanjanje administratorske dozvole će deaktivirati funkciju dvostrukog dodira za zaključavanje ekrana.</string>
|
||||
</resources>
|
||||
@@ -14,4 +14,7 @@
|
||||
<string name="close_app_drawer_on_app_open">Alkalmazásfiók bezárása egy alkalmazás megnyitásakor</string>
|
||||
<string name="widget_too_big">A modul túl nagy az aktuális kezdőképernyő méretéhez</string>
|
||||
<string name="home_screen_settings">Kezdőképernyő</string>
|
||||
<string name="lock_device_admin_warning">Az rendszergazdai engedély kikapcsolása letiltja a képernyő lezárásához szükséges dupla koppintás funkciót.</string>
|
||||
<string name="double_tap_to_lock">Dupla koppintás a képernyő zárolásához</string>
|
||||
<string name="lock_device_admin_hint">A képernyőzárolás dupla koppintás funkciójának engedélyezéséhez rendszergazdai hozzáférést kell adnia. Vegye figyelembe, hogy az alkalmazás nem távolítható el, amíg ez az engedély nem kerül eltávolításra.</string>
|
||||
</resources>
|
||||
@@ -1,16 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="launcher_settings">Parametros de lanceator</string>
|
||||
<string name="hidden_icons">Icones celate</string>
|
||||
<string name="hide_icon">Celar le icone</string>
|
||||
<string name="launcher_settings">Configurationes de lanceator</string>
|
||||
<string name="hidden_icons">Icones occulte</string>
|
||||
<string name="hide_icon">Occultar icone</string>
|
||||
<string name="close_app_drawer_on_app_open">Clauder le tiratorio al aperir un application</string>
|
||||
<string name="app_drawer_settings">Tiratorio de applicationes</string>
|
||||
<string name="app_info">Information super le application</string>
|
||||
<string name="app_launcher_name">Lanceator</string>
|
||||
<string name="uninstall">Disinstallar</string>
|
||||
<string name="home_screen_settings">Schermo de initio</string>
|
||||
<string name="manage_hidden_icons">Gerer le icones celate</string>
|
||||
<string name="manage_hidden_icons">Gestionar icones occulte</string>
|
||||
<string name="widget_too_big">Le widget es troppo grande pro le dimension actual del schermo de initio</string>
|
||||
<string name="add_hidden_icons">Adder icones celate</string>
|
||||
<string name="hidden_icons_placeholder">Alcun applicationes non pote esser disinstallate a causa de restrictiones del systema, ma tu pote al minus celar lor icones pro evitar vider los.</string>
|
||||
<string name="add_hidden_icons">Adder icones occulte</string>
|
||||
<string name="hidden_icons_placeholder">Alicun applicationes non pote esser disinstallate a causa de restrictiones del systema, ma tu pote al minus occultar lor icones pro evitar vider los.</string>
|
||||
<string name="touch_hold_widget">Preme longemente le widget e traher lo a tu schermo de initio</string>
|
||||
</resources>
|
||||
@@ -12,4 +12,9 @@
|
||||
<string name="hidden_icons_placeholder">Beberapa aplikasi tidak dapat di-uninstal karena keterbatasan sistem, tetapi Anda masih dapat menyembunyikan ikon mereka untuk menyembunyikannya.</string>
|
||||
<string name="close_app_drawer_on_app_open">Tutup laci aplikasi saat membuka aplikasi</string>
|
||||
<string name="app_drawer_settings">Laci aplikasi</string>
|
||||
</resources>
|
||||
<string name="widget_too_big">Widget terlalu besar untuk ukuran layar beranda saat ini</string>
|
||||
<string name="home_screen_settings">Layar beranda</string>
|
||||
<string name="double_tap_to_lock">Ketuk dua kali untuk mengunci layar</string>
|
||||
<string name="lock_device_admin_warning">Menonaktifkan izin admin akan menonaktifkan fitur ketuk dua kali untuk mengunci layar.</string>
|
||||
<string name="lock_device_admin_hint">Untuk mengaktifkan fitur ketuk dua kali untuk mengunci layar, Anda perlu memberikan izin admin. Perhatikan bahwa aplikasi tidak dapat dihapus sampai izin ini dicabut.</string>
|
||||
</resources>
|
||||
|
||||
@@ -14,4 +14,7 @@
|
||||
<string name="widget_too_big">Il widget è troppo grande per le dimensioni attuali della schermata principale</string>
|
||||
<string name="app_launcher_name">Launcher</string>
|
||||
<string name="home_screen_settings">Schermata iniziale</string>
|
||||
<string name="lock_device_admin_hint">Per abilitare la funzione di doppio tocco per bloccare lo schermo è necessario garantire i permessi di amministratore. L\'app non può essere disinstallata finché non vengono rimossi i permessi.</string>
|
||||
<string name="double_tap_to_lock">Doppio tocco per bloccare lo schermo</string>
|
||||
<string name="lock_device_admin_warning">Disattivando i permessi di amministratore disabiliterai la funzionalità di doppio tocco per bloccare lo schermo.</string>
|
||||
</resources>
|
||||
@@ -5,9 +5,16 @@
|
||||
<string name="app_info">מידע על האפליקציה</string>
|
||||
<string name="touch_hold_widget">לחיצה ארוכה על הווידג\'ט וגרירה שלו במסך הראשי</string>
|
||||
<string name="uninstall">הסרה</string>
|
||||
<string name="hide_icon">החבא אייקון</string>
|
||||
<string name="hide_icon">הסתר אייקון</string>
|
||||
<string name="add_hidden_icons">הוסף אייקונים נסתרים</string>
|
||||
<string name="manage_hidden_icons">ניהול אייקונים נסתרים</string>
|
||||
<string name="hidden_icons">אייקונים נסתרים</string>
|
||||
<string name="hidden_icons_placeholder">חלק מהאפליקציות לא ניתנות להסרה עקב הגבלות מערכת, לפחות אתה יכול להחביא את האייקונים כדי לא לראותם במסך הבית.</string>
|
||||
<string name="hidden_icons_placeholder">לא ניתן להסיר אפליקציות מסוימות עקב מגבלות מערכת, אבל אתה יכול לפחות להסתיר את הסמלים שלהן כדי להימנע מלראות אותם.</string>
|
||||
<string name="close_app_drawer_on_app_open">סגור את מגירת האפליקציות בעת פתיחת אפליקציה</string>
|
||||
<string name="home_screen_settings">מסך בית</string>
|
||||
<string name="double_tap_to_lock">הקש פעמיים כדי לנעול את המסך</string>
|
||||
<string name="lock_device_admin_hint">כדי להפעיל הקשה כפולה לנעילת מסך, עליך להעניק הרשאת מנהל. שימו לב שלא ניתן להסיר את האפליקציה עד להסרת ההרשאה הזו.</string>
|
||||
<string name="lock_device_admin_warning">ביטול הרשאת מנהל ישבית את אפשרות ההקשה הכפולה לנעילת מסך.</string>
|
||||
<string name="app_drawer_settings">מגירת אפליקציות</string>
|
||||
<string name="widget_too_big">הווידג\'ט גדול מדי לגודל מסך הבית הנוכחי</string>
|
||||
</resources>
|
||||
|
||||
@@ -14,4 +14,7 @@
|
||||
<string name="home_screen_settings">Beginscherm</string>
|
||||
<string name="widget_too_big">Widget is te groot voor de huidige afmetingen van het beginscherm</string>
|
||||
<string name="app_launcher_name">Launcher</string>
|
||||
<string name="lock_device_admin_warning">Als je het recht voor apparaatbeheer niet toekent, wordt de functie \'dubbeltikken om het scherm te vergrendelen\' uitgeschakeld.</string>
|
||||
<string name="lock_device_admin_hint">Om de functie \'Dubbeltikken om het scherm te vergrendelen\' in te schakelen, moet je het recht voor apparaatbeheer toekennen. De app kan dan niet worden verwijderd totdat deze toestemming is verwijderd.</string>
|
||||
<string name="double_tap_to_lock">Dubbeltikken om het scherm te vergrendelen</string>
|
||||
</resources>
|
||||
@@ -14,4 +14,7 @@
|
||||
<string name="home_screen_settings">Ekran główny</string>
|
||||
<string name="widget_too_big">Widżet jest za duży dla aktualnego rozmiaru ekranu głównego</string>
|
||||
<string name="app_launcher_name">Launcher</string>
|
||||
<string name="double_tap_to_lock">Naciśnij dwukrotnie, aby zablokować ekran</string>
|
||||
<string name="lock_device_admin_hint">Aby włączyć funkcję dwukrotnego naciśnięcia w celu zablokowania ekranu, musisz udzielić uprawnienia administratora. Uwaga: aplikacja nie może zostać odinstalowana, dopóki to uprawnienie nie zostanie usunięte.</string>
|
||||
<string name="lock_device_admin_warning">Dezaktywacja uprawnienia administratora spowoduje wyłączenie funkcji dwukrotnego naciśnięcia w celu zablokowania ekranu.</string>
|
||||
</resources>
|
||||
@@ -13,5 +13,8 @@
|
||||
<string name="close_app_drawer_on_app_open">Fechar gaveta de aplicativos ao abrir um aplicativo</string>
|
||||
<string name="home_screen_settings">Tela inicial</string>
|
||||
<string name="widget_too_big">O widget é muito grande para o tamanho atual da tela inicial</string>
|
||||
<string name="app_launcher_name">Launcher</string>
|
||||
</resources>
|
||||
<string name="app_launcher_name">Fossify - Launcher</string>
|
||||
<string name="double_tap_to_lock">Toque duas vezes para bloquear a tela</string>
|
||||
<string name="lock_device_admin_hint">Para habilitar o recurso de toque duplo para bloquear a tela, você precisa conceder permissão de administrador. Observe que o aplicativo não pode ser desinstalado até que essa permissão seja removida.</string>
|
||||
<string name="lock_device_admin_warning">Desativar a permissão de administrador desabilitará o recurso de toque duplo para bloquear a tela.</string>
|
||||
</resources>
|
||||
|
||||
@@ -14,4 +14,7 @@
|
||||
<string name="close_app_drawer_on_app_open">Fechar menu de aplicações ao abrir uma aplicação</string>
|
||||
<string name="widget_too_big">O widget é muito grande para o ecrã disponível</string>
|
||||
<string name="home_screen_settings">Ecrã inicial</string>
|
||||
<string name="double_tap_to_lock">Dois toques para bloquear o ecrã</string>
|
||||
<string name="lock_device_admin_hint">Para ativar esta funcionalidade, tem que permitir o acesso de administração. Tenha em atenção se que não conseguirá desinstalar a aplicação sem antes revogar esta permissão.</string>
|
||||
<string name="lock_device_admin_warning">Ao desativar a permissão, também desativa a possibilidade de bloquear o ecrã com dois toques.</string>
|
||||
</resources>
|
||||
@@ -14,4 +14,7 @@
|
||||
<string name="close_app_drawer_on_app_open">Закрывать боковую панель при открытии приложения</string>
|
||||
<string name="home_screen_settings">Домашний экран</string>
|
||||
<string name="widget_too_big">Виджет слишком велик для текущего размера домашнего экрана</string>
|
||||
</resources>
|
||||
<string name="double_tap_to_lock">Двойное нажатие блокирует экран</string>
|
||||
<string name="lock_device_admin_hint">Для включения функции блокировки экрана двойным нажатием необходимы права администратора. Учтите, что приложение нельзя будет удалить, пока данное разрешение не будет отключено.</string>
|
||||
<string name="lock_device_admin_warning">Удаление прав администратора приведёт к отключению функции блокировки экрана двойным нажатием.</string>
|
||||
</resources>
|
||||
@@ -14,4 +14,7 @@
|
||||
<string name="close_app_drawer_on_app_open">Stäng applådan när en app öppnas</string>
|
||||
<string name="home_screen_settings">Startskärm</string>
|
||||
<string name="widget_too_big">Widgeten är för stor för startskärmens aktuella storlek</string>
|
||||
<string name="lock_device_admin_hint">Om du vill aktivera funktionen dubbeltryck för att låsa skärmen måste du bevilja administratörsbehörighet. Observera att appen inte kan avinstalleras förrän behörigheten har tagits bort.</string>
|
||||
<string name="double_tap_to_lock">Dubbeltryck för att låsa skärmen</string>
|
||||
<string name="lock_device_admin_warning">Om du inaktiverar administratörsbehörigheten inaktiveras funktionen dubbeltryck för att låsa skärmen.</string>
|
||||
</resources>
|
||||
|
||||
@@ -9,9 +9,12 @@
|
||||
<string name="add_hidden_icons">Gizli simgeler ekle</string>
|
||||
<string name="manage_hidden_icons">Gizli simgeleri yönet</string>
|
||||
<string name="hidden_icons">Gizli simgeler</string>
|
||||
<string name="hidden_icons_placeholder">Bazı uygulamalar sistem kısıtlamaları nedeniyle kaldırılamaz, ancak en azından onları görmemek için simgelerini gizleyebilirsiniz.</string>
|
||||
<string name="hidden_icons_placeholder">Bazı uygulamalar sistem kısıtlamaları nedeniyle kaldırılamaz, ancak bu uygulamaları görmemek için simgelerini gizleyebilirsiniz.</string>
|
||||
<string name="app_drawer_settings">Uygulama çekmecesi</string>
|
||||
<string name="close_app_drawer_on_app_open">Bir uygulama açıldığında uygulama çekmecesini kapat</string>
|
||||
<string name="home_screen_settings">Ana ekran</string>
|
||||
<string name="widget_too_big">Widget, şu anki ana ekran boyutu için çok büyük</string>
|
||||
<string name="double_tap_to_lock">Kilit ekranına çift dokun</string>
|
||||
<string name="lock_device_admin_warning">Yönetici iznini devre dışı bırakmak, kilit ekranı özelliğini devre dışı bırakır.</string>
|
||||
<string name="lock_device_admin_hint">Kilit ekranı çift dokun özelliğini etkinleştirmek için yönetici izni vermeniz gerekir. Bu izin uygulama kaldırılana kadar kaldırılmayacağını unutmayın.</string>
|
||||
</resources>
|
||||
|
||||
@@ -14,4 +14,7 @@
|
||||
<string name="close_app_drawer_on_app_open">Закривати панель застосунок при відкриті застосунку</string>
|
||||
<string name="home_screen_settings">Домашній екран</string>
|
||||
<string name="widget_too_big">Віджет надто великий для поточного розміру домашнього екрану</string>
|
||||
</resources>
|
||||
<string name="lock_device_admin_warning">Скасування прав адміністратора вимкне функцію подвійного дотику для блокування екрана.</string>
|
||||
<string name="double_tap_to_lock">Двічі торкніться, щоб заблокувати екран</string>
|
||||
<string name="lock_device_admin_hint">Щоб увімкнути функцію блокування екрана подвійним дотиком, вам потрібно надати права адміністратора. Зверніть увагу, що застосунок не можна буде видалити, поки цей дозвіл не буде скасовано.</string>
|
||||
</resources>
|
||||
@@ -3,7 +3,7 @@
|
||||
<string name="app_launcher_name">启动器</string>
|
||||
<string name="launcher_settings">启动器设置</string>
|
||||
<string name="app_info">应用信息</string>
|
||||
<string name="touch_hold_widget">长按小部件并将其拖动到主屏幕</string>
|
||||
<string name="touch_hold_widget">长按微件并将其拖动到主屏幕</string>
|
||||
<string name="uninstall">卸载</string>
|
||||
<string name="hide_icon">隐藏图标</string>
|
||||
<string name="add_hidden_icons">添加隐藏的图标</string>
|
||||
@@ -13,5 +13,8 @@
|
||||
<string name="app_drawer_settings">应用抽屉</string>
|
||||
<string name="close_app_drawer_on_app_open">打开抽屉内应用时关闭抽屉</string>
|
||||
<string name="home_screen_settings">主屏幕</string>
|
||||
<string name="widget_too_big">小部件对当前屏幕尺寸而言太大了</string>
|
||||
</resources>
|
||||
<string name="widget_too_big">微件对当前屏幕尺寸而言太大了</string>
|
||||
<string name="double_tap_to_lock">双击锁屏</string>
|
||||
<string name="lock_device_admin_warning">停用管理员权限将禁用双击锁屏功能。</string>
|
||||
<string name="lock_device_admin_hint">要启用双击锁屏功能,您需要授予管理员权限。请注意,在移除此权限之前无法卸载该应用。</string>
|
||||
</resources>
|
||||
@@ -14,4 +14,7 @@
|
||||
<string name="close_app_drawer_on_app_open">開啟應用程式時關閉應用程式抽屜</string>
|
||||
<string name="home_screen_settings">主畫面</string>
|
||||
<string name="widget_too_big">小工具對於目前主畫面大小來說太大</string>
|
||||
<string name="double_tap_to_lock">輕觸兩下以鎖定螢幕</string>
|
||||
<string name="lock_device_admin_warning">停用管理權限將會停用輕觸兩下以鎖定螢幕的功能。</string>
|
||||
<string name="lock_device_admin_hint">要啟用輕觸兩下以鎖定螢幕的功能,您必須授予管理權限。請注意,在移除此權限前,無法解除安裝應用程式。</string>
|
||||
</resources>
|
||||
@@ -14,6 +14,9 @@
|
||||
<string name="close_app_drawer_on_app_open">Close app drawer on opening an app</string>
|
||||
<string name="home_screen_settings">Home screen</string>
|
||||
<string name="widget_too_big">Widget is too big for current home screen size</string>
|
||||
<string name="double_tap_to_lock">Double tap to lock screen</string>
|
||||
<string name="lock_device_admin_hint">To enable the double tap to lock screen feature, you need to grant admin permission. Note that the app cannot be uninstalled until this permission is removed.</string>
|
||||
<string name="lock_device_admin_warning">Deactivating admin permission will disable the double tap to lock screen feature.</string>
|
||||
<!--
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/FossifyOrg/Commons/tree/master/commons/src/main/res
|
||||
|
||||
6
app/src/main/res/xml/device_admin_policies.xml
Normal file
6
app/src/main/res/xml/device_admin_policies.xml
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<device-admin>
|
||||
<uses-policies>
|
||||
<force-lock />
|
||||
</uses-policies>
|
||||
</device-admin>
|
||||
@@ -1,38 +1,12 @@
|
||||
# This file contains the fastlane.tools configuration
|
||||
# You can find the documentation at https://docs.fastlane.tools
|
||||
#
|
||||
# For a list of all available actions, check out
|
||||
#
|
||||
# https://docs.fastlane.tools/actions
|
||||
#
|
||||
# For a list of all available plugins, check out
|
||||
#
|
||||
# https://docs.fastlane.tools/plugins/available-plugins
|
||||
#
|
||||
|
||||
# Uncomment the line if you want fastlane to automatically update itself
|
||||
# update_fastlane
|
||||
|
||||
default_platform(:android)
|
||||
|
||||
platform :android do
|
||||
desc "Runs all the tests"
|
||||
lane :test do
|
||||
gradle(task: "test")
|
||||
end
|
||||
desc 'Run unit & instrumentation tests'
|
||||
lane(:test) { test_android }
|
||||
|
||||
desc "Submit a new Beta Build to Crashlytics Beta"
|
||||
lane :beta do
|
||||
gradle(task: "clean assembleRelease")
|
||||
crashlytics
|
||||
|
||||
# sh "your_script.sh"
|
||||
# You can also use other beta testing services here
|
||||
end
|
||||
desc 'Build & deploy AAB to Google Play (includes metadata)'
|
||||
lane(:deploy) { deploy_android }
|
||||
|
||||
desc "Deploy a new version to the Google Play"
|
||||
lane :deploy do
|
||||
gradle(task: "clean assembleRelease")
|
||||
upload_to_play_store
|
||||
end
|
||||
desc 'Push Play Store metadata'
|
||||
lane(:metadata) { metadata_android }
|
||||
end
|
||||
|
||||
48
fastlane/README.md
Normal file
48
fastlane/README.md
Normal file
@@ -0,0 +1,48 @@
|
||||
fastlane documentation
|
||||
----
|
||||
|
||||
# Installation
|
||||
|
||||
Make sure you have the latest version of the Xcode command line tools installed:
|
||||
|
||||
```sh
|
||||
xcode-select --install
|
||||
```
|
||||
|
||||
For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane)
|
||||
|
||||
# Available Actions
|
||||
|
||||
## Android
|
||||
|
||||
### android test
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane android test
|
||||
```
|
||||
|
||||
Run unit & instrumentation tests
|
||||
|
||||
### android deploy
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane android deploy
|
||||
```
|
||||
|
||||
Build & deploy AAB to Google Play (includes metadata)
|
||||
|
||||
### android metadata
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane android metadata
|
||||
```
|
||||
|
||||
Push Play Store metadata
|
||||
|
||||
----
|
||||
|
||||
This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run.
|
||||
|
||||
More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools).
|
||||
|
||||
The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools).
|
||||
18
fastlane/metadata/android/ca/full_description.txt
Normal file
18
fastlane/metadata/android/ca/full_description.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
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.<br><br>
|
||||
<b>🚀 NAVEGACIÓ RÀPIDA:</b><br>
|
||||
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.<br><br>
|
||||
<b>🎨 PERSONALITZACIÓ COMPLETA:</b><br>
|
||||
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.<br><br>
|
||||
<b>🖼️ SUPORT COMPLET DE GINYS:</b><br>
|
||||
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.<br><br>
|
||||
<b>📱 SENSE DESORDRE NO DESITJAT-:</b><br>
|
||||
Gestioneu les aplicacions amagant-les o desinstal·lant-les amb pocs tocs, mantenint la pantalla d'inici organitzada i lliure de desordre.<br><br>
|
||||
<b>🔒 PRIVADESA I SEGURETAT:</b><br>
|
||||
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.<br><br>
|
||||
<b>🌐 GARANTIA DEL CODI OBERT:</b><br>
|
||||
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.<br><br>
|
||||
Trobeu l'equilibri de velocitat, personalització i privacitat amb el Fossify Launcher.<br><br>
|
||||
Exploreu més aplicacions de Fossify: https://www.fossify.org<br>
|
||||
Codi obert: https://www.github.com/FossifyOrg<br>
|
||||
Uniu-vos a la comunitat a Reddit: https://www.reddit.com/r/Fossify<br>
|
||||
Connecteu a Telegram: https://t.me/Fossify<br>
|
||||
1
fastlane/metadata/android/ca/short_description.txt
Normal file
1
fastlane/metadata/android/ca/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Personalitzeu la pantalla d'inici amb un llançador ràpid, sense anuncis i lliure
|
||||
18
fastlane/metadata/android/cs-CZ/full_description.txt
Normal file
18
fastlane/metadata/android/cs-CZ/full_description.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
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.<br><br>
|
||||
<b>🚀 RYCHLÁ NAVIGACE:</b><br>
|
||||
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.<br><br>
|
||||
<b>🎨 PLNÉ PŘIZPŮSOBENÍ:</b><br>
|
||||
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í.<br><br>
|
||||
<b>🖼️ KOMPLETNÍ PODPORA WIDGETŮ:</b><br>
|
||||
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.<br><br>
|
||||
<b>📱 BEZ NEPOTŘEBNÝCH FUNKCÍ:</b><br>
|
||||
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.<br><br>
|
||||
<b>🔒 SOUKROMÍ A BEZPEČNOST:</b><br>
|
||||
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í.<br><br>
|
||||
<b>🌐 OTEVŘENÝ ZDROJ:</b><br>
|
||||
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í.
|
||||
Najděte si rovnováhu mezi rychlostí, přizpůsobením a soukromím s Launcherem Fossify.<br><br>
|
||||
Prozkoumejte další aplikace Fossify: https://www.fossify.org
|
||||
Otevřený zdrojový kód: https://www.github.com/FossifyOrg
|
||||
Připojte se ke komunitě na Redditu: https://www.reddit.com/r/Fossify
|
||||
Připojte se k Telegramu: https://t.me/Fossify
|
||||
1
fastlane/metadata/android/cs-CZ/short_description.txt
Normal file
1
fastlane/metadata/android/cs-CZ/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Přizpůsobte svou domovskou stránku s rychlým, open-source launcherem bez reklam
|
||||
18
fastlane/metadata/android/de-DE/full_description.txt
Normal file
18
fastlane/metadata/android/de-DE/full_description.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
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.<br><br>
|
||||
<b>🚀 BLITZSCHNELLE NAVIGATION:</b><br>
|
||||
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.<br><br>
|
||||
<b>🎨 VOLLE ANPASSUNGSFÄHIGKEIT:</b><br>
|
||||
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.<br><br>
|
||||
<b>🖼️ VOLLSTÄNDIGE WIDGET-UNTERSTÜTZUNG:</b><br>
|
||||
Integriere ganz einfach Widgets mit vollständig veränderbarer Größe. Egal, ob du Uhren, Kalender oder andere praktische Tools brauchst, Fossify Launcher sorgt dafür, dass sie sich nahtlos in dein Startbildschirm-Design einfügen.<br><br>
|
||||
<b>📱 KEIN UNERWÜNSCHTES DURCHEINANDER:</b><br>
|
||||
Verwalte deine Apps mühelos, indem du sie mit nur wenigen Fingertipps ausblendest oder deinstallierst, damit dein Startbildschirm übersichtlich bleibt.<br><br>
|
||||
<b>🔒 DATENSCHUTZ UND SICHERHEIT:</b><br>
|
||||
Deine Privatsphäre steht im Mittelpunkt von Fossify Launcher. Ohne Internetzugang und ohne aufdringliche Berechtigungen bleiben deine Daten bei dir. Kein Tracking, keine Werbung – nur ein Launcher, der deine Privatsphäre respektiert.<br><br>
|
||||
<b>🌐 OPEN-SOURCE-GARANTIE:</b><br>
|
||||
Fossify Launcher wurde auf einer Open-Source-Basis entwickelt, die es dir ermöglicht, unseren Code auf GitHub zu überprüfen, was das Vertrauen und eine Gemeinschaft fördert, die sich für den Datenschutz einsetzt.<br><br>
|
||||
Finde mit Fossify Launcher dein Gleichgewicht zwischen Geschwindigkeit, Anpassbarkeit und Privatsphäre.<br><br>
|
||||
Entdecke weitere Apps von Fossify: https://www.fossify.org<br>
|
||||
Open-Source-Code: https://www.github.com/FossifyOrg<br>
|
||||
Tritt der Community auf Reddit bei: https://www.reddit.com/r/Fossify<br>
|
||||
Verbinde dich auf Telegram: https://t.me/Fossify<br>
|
||||
1
fastlane/metadata/android/de-DE/short_description.txt
Normal file
1
fastlane/metadata/android/de-DE/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Startbildschirm mit einem schnellen, werbefreien, quelloffenen Launcher anpassen
|
||||
4
fastlane/metadata/android/en-US/changelogs/2.txt
Normal file
4
fastlane/metadata/android/en-US/changelogs/2.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
* Fixed scrolling performance issues
|
||||
* Fixed various issues related to widgets
|
||||
* Other minor bug fixes and improvements
|
||||
* Added more translations
|
||||
2
fastlane/metadata/android/en-US/changelogs/3.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/3.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
* Added double tap to lock screen feature
|
||||
* Added more translations
|
||||
7
fastlane/metadata/android/en-US/changelogs/4.txt
Normal file
7
fastlane/metadata/android/en-US/changelogs/4.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Changed:
|
||||
|
||||
• Updated translations
|
||||
|
||||
Removed:
|
||||
|
||||
• Removed redundant launcher settings icon from the app drawer
|
||||
8
fastlane/metadata/android/en-US/changelogs/5.txt
Normal file
8
fastlane/metadata/android/en-US/changelogs/5.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
Changed:
|
||||
|
||||
• Updated translations
|
||||
|
||||
Fixed:
|
||||
|
||||
• Clicking home screen app labels now works as expected
|
||||
|
||||
@@ -1 +1 @@
|
||||
Fossify Launcher
|
||||
Fossify Launcher Beta
|
||||
1
fastlane/metadata/android/eo/short_description.txt
Normal file
1
fastlane/metadata/android/eo/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Tajloru vian hejmekranon helpe de rapida, senreklama, malfermitkoda lanĉilo
|
||||
18
fastlane/metadata/android/es-ES/full_description.txt
Normal file
18
fastlane/metadata/android/es-ES/full_description.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
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.<br><br>
|
||||
<b>🚀 NAVEGACIÓN RÁPIDA COMO EL RELÁMPAGO:</b><br>
|
||||
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.<br><br>
|
||||
<b>🎨 PERSONALIZACIÓN COMPLETA:</b><br>
|
||||
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.<br><br>
|
||||
<b>🖼️ SOPORTE COMPLETO PARA WIDGETS:</b><br>
|
||||
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.<br><br>
|
||||
<b>📱 SIN DESORDEN NO DESEADO:</b><br>
|
||||
Administra sin esfuerzo tus aplicaciones ocultándolas o desinstalándolas con solo unos pocos toques, manteniendo tu pantalla de inicio organizada y sin desorden.<br><br>
|
||||
<b>🔒 PRIVACIDAD Y SEGURIDAD:</b><br>
|
||||
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.<br><br>
|
||||
<b>🌐 GARANTÍA DE CÓDIGO ABIERTO:</b><br>
|
||||
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.<br><br>
|
||||
Encuentra tu equilibrio entre velocidad, personalización y privacidad con Fossify Launcher.<br><br>
|
||||
Explora más aplicaciones de Fossify: https://www.fossify.org<br>
|
||||
Código fuente abierto: https://www.github.com/FossifyOrg<br>
|
||||
Únase a la comunidad en Reddit: https://www.reddit.com/r/Fossify<br>
|
||||
Conéctate en Telegram: https://t.me/Fossify<br>
|
||||
1
fastlane/metadata/android/es-ES/short_description.txt
Normal file
1
fastlane/metadata/android/es-ES/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Personaliza Inicio con un iniciador rápido, sin publicidad y de código abierto
|
||||
1
fastlane/metadata/android/et/short_description.txt
Normal file
1
fastlane/metadata/android/et/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Kohenda oma avalehte kiire, reklaamivaba ja avatud lähtekoodiga käivitajaga
|
||||
18
fastlane/metadata/android/fr-FR/full_description.txt
Normal file
18
fastlane/metadata/android/fr-FR/full_description.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
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.<br><br>
|
||||
<b>🚀 NAVIGATION ULTRA-RAPIDE :</b><br>
|
||||
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.<br><br>
|
||||
<b>🎨 PERSONNALISATION COMPLÈTE :</b><br>
|
||||
Personnalisez votre écran d'accueil avec des thèmes dynamiques, des couleurs personnalisées et des mises en page. Personnalisez votre lanceur en fonction de votre style avec des outils faciles à utiliser qui vous permettent de créer une configuration vraiment unique.<br><br>
|
||||
<b>🖼️ PRISE EN CHARGE COMPLÈTE DES WIDGETS :</b><br>
|
||||
Intégrez facilement des widgets entièrement redimensionnables. Que vous ayez besoin d'horloges, de calendriers ou d'autres outils pratiques, le Lanceur Fossify veille à ce qu'ils s'intègrent parfaitement dans la conception de votre écran d'accueil.<br><br>
|
||||
<b>📱 PAS D'ENCOMBREMENT INDÉSIRABLE :</b><br>
|
||||
Gérez facilement vos applications en les masquant ou en les désinstallant en quelques clics, pour garder votre écran d'accueil organisé et sans encombrement.<br><br>
|
||||
<b>🔒 CONFIDENTIALITÉ ET SÉCURITÉ :</b><br>
|
||||
Votre vie privée est au cœur 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.<br><br>
|
||||
<b>🌐 ASSURANCE OPEN SOURCE :</b><br>
|
||||
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é.<br><br>
|
||||
Trouvez votre équilibre entre vitesse, personnalisation et confidentialité avec le Lanceur Fossify.<br><br>
|
||||
Découvrez d'autres applications Fossify : https://www.fossify.org<br>
|
||||
Code open source : https://www.github.com/FossifyOrg<br>
|
||||
Rejoignez la communauté sur Reddit : https://www.reddit.com/r/Fossify<br>
|
||||
Connectez-vous sur Telegram : https://t.me/Fossify<br>
|
||||
1
fastlane/metadata/android/fr-FR/short_description.txt
Normal file
1
fastlane/metadata/android/fr-FR/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Paramétrez votre écran d'accueil avec un lanceur rapide, sans pub, open-source
|
||||
18
fastlane/metadata/android/ga/full_description.txt
Normal file
18
fastlane/metadata/android/ga/full_description.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
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.<br><br>
|
||||
<b>🚀 LOINGSEOIREACHT SOILSIÚCHÁIN:</b><br>
|
||||
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.<br><br>
|
||||
<b> 🎨 CHUID IOMLÁN:</b><br>
|
||||
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ú.<br><br>
|
||||
<b>🖼️ TACAÍOCHT GUIRLÍN CHOMHLÁNAIGH:</b><br>
|
||||
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.<br><br>
|
||||
<b> 📱 NÍL GLUAISEACHT GAN DÁIL:</b><br>
|
||||
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.<br><br>
|
||||
<b>🔒 PRÍOBHÁIDEACHT AGUS SLÁNDÁLA:</b><br>
|
||||
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ú.<br><br>
|
||||
<b> 🌐 ÁRACHAS FOINSE OSCAILTE:</b><br>
|
||||
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.<br><br>
|
||||
Faigh do chothromaíocht luais, saincheaptha agus príobháideachta le Fossify Launcher.<br><br>
|
||||
Déan tuilleadh aipeanna Fossify a iniúchadh: https://www.fossify.org<br>
|
||||
Cód Foinse Oscailte: https://www.github.com/FossifyOrg<br>
|
||||
Bí leis an bpobal ar Reddit: https://www.reddit.com/r/Fossify<br>
|
||||
Ceangail ar Telegram: https://t.me/Fossify<br>
|
||||
1
fastlane/metadata/android/ga/short_description.txt
Normal file
1
fastlane/metadata/android/ga/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Saincheap do scáileán baile le tosaitheoir tapa foinse oscailte saor ó fhógraí
|
||||
18
fastlane/metadata/android/gl-ES/full_description.txt
Normal file
18
fastlane/metadata/android/gl-ES/full_description.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
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.<br><br>
|
||||
<b>🚀 NAVEGACIÓN RÁPIDA COMO UN RAIO:</b><br>
|
||||
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.<br><br>
|
||||
<b>🎨 PERSONALIZACIÓN COMPLETA:</b><br>
|
||||
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.<br><br>
|
||||
<b>🖼️ COMPATIBLE CON WIDGETS:</b><br>
|
||||
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.<br><br>
|
||||
<b>📱 SEN ELEMENTOS IRRELEVANTES:</b><br>
|
||||
Xestiona as túas apps sen esforzo agochandoas ou desinstalándoas cun par de toques, mantendo a pantalla de inicio ordenada e sen lixo.<br><br>
|
||||
<b>🔒 PRIVADO E SEGURO:</b><br>
|
||||
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.<br><br>
|
||||
<b>🌐 CERTEZA DE CÓDIGO-ABERTO:</b><br>
|
||||
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.<br><br>
|
||||
Atopa o equilibrio entre velocidade, personalización e privacidade usando Fossify Launcher.<br><br>
|
||||
Coñece mais apps Fossify: https://www.fossify.org<br>
|
||||
Código Aberto: https://www.github.com/FossifyOrg<br>
|
||||
Únete á comunidade en Reddit: https://www.reddit.com/r/Fossify<br>
|
||||
Contacta en Telegram: https://t.me/Fossify<br>
|
||||
1
fastlane/metadata/android/gl-ES/short_description.txt
Normal file
1
fastlane/metadata/android/gl-ES/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Personaliza o Inicio cun lanzador rápido, sen publicidade e de código aberto
|
||||
18
fastlane/metadata/android/it-IT/full_description.txt
Normal file
18
fastlane/metadata/android/it-IT/full_description.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
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.<br><br>
|
||||
<b>🚀 NAVIGAZIONE VELOCISSIMA:</b><br>
|
||||
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.<br><br>
|
||||
<b>🎨 PERSONALIZZAZIONE COMPLETA:</b><br>
|
||||
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.<br><br>
|
||||
<b>🖼️ SUPPORTO WIDGET COMPLETO:</b><br>
|
||||
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.<br><br>
|
||||
<b>📱 NESSUN DISORDINE INDESIDERATO:</b><br>
|
||||
Gestisci senza sforzo le tue app nascondendole o disinstallandole in pochi tocchi, mantenendo la tua schermata iniziale organizzata e ordinata.<br><br>
|
||||
<b>🔒 PRIVACY E SICUREZZA:</b><br>
|
||||
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.<br><br>
|
||||
<b>🌐 GARANZIA OPEN-SOURCE:</b><br>
|
||||
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.<br><br>
|
||||
Trova il tuo equilibrio tra velocità, personalizzazione e privacy con Launcher Fossify.<br><br>
|
||||
Scopri altre app Fossify: https://www.fossify.org<br>
|
||||
Codice open source: https://www.github.com/FossifyOrg<br>
|
||||
Unisciti alla community su Reddit: https://www.reddit.com/r/Fossify<br>
|
||||
Connettiti su Telegram: https://t.me/Fossify<br>
|
||||
1
fastlane/metadata/android/it-IT/short_description.txt
Normal file
1
fastlane/metadata/android/it-IT/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Personalizza la tua schermata iniziale con un launcher veloce e senza pubblicità
|
||||
18
fastlane/metadata/android/iw-IL/full_description.txt
Normal file
18
fastlane/metadata/android/iw-IL/full_description.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
Fossify משגר הוא השער שלך לחווית מסך בית מהירה, מותאמת אישית ששומרת על פרטיותך. ללא פרסומות, בלי עומס – רק משגר חלק ויעיל שנועד להתאים לסגנון ולהעדפות הייחודיות שלך.<br><br>
|
||||
<b>🚀 ניווט מהיר כברק:</b><br>
|
||||
נווט במכשיר שלך במהירות ובדיוק. Fossify משגר מותאם להיות רספונסיבי וזורם, ומעניק לך גישה מיידית לאפליקציות המועדפות עליך ללא השהיה.<br><br>
|
||||
<b>🎨 התאמה אישית מלאה:</b><br>
|
||||
עצב את מסך הבית שלך עם ערכות נושא דינמיות, צבעים מותאמים אישית ופריסות. התאם אישית את המשגר שלך כדי להתאים לסגנון שלך באמצעות כלים קלים לשימוש המאפשרים לך ליצור הגדרה ייחודית באמת.<br><br>
|
||||
<b>🖼️ תמיכה מלאה בווידג'טים:</b><br>
|
||||
שלב ווידג'טים הניתנים לשינוי גודל בקלות. בין אם אתה צריך שעונים, לוחות שנה או כלים שימושיים אחרים, Fossify Launcher מבטיח שהם ישתלבו בצורה חלקה בעיצוב מסך הבית שלך.<br><br>
|
||||
<b>📱 ללא עומס מיותר:</b><br>
|
||||
נהל את האפליקציות שלך ללא מאמץ על ידי הסתרתן או הסרתן בכמה לחיצות בלבד, ושמור על מסך הבית שלך מאורגן ונקי מעומס.<br><br>
|
||||
<b>🔒 פרטיות ואבטחה:</b><br>
|
||||
הפרטיות שלך היא לב ליבו של Fossify Launcher. ללא גישה לאינטרנט וללא הרשאות חודרניות, הנתונים שלך נשארים איתך. ללא מעקב, ללא פרסומות – רק משגר שנבנה כדי לכבד את פרטיותך.<br><br>
|
||||
<b>🌐 הבטחה בקוד פתוח:</b><br>
|
||||
Fossify משגר בנוי על בסיס קוד פתוח, המאפשר לך לסקור את הקוד שלנו ב-GitHub, ומטפח אמון וקהילה המחויבת לפרטיות.<br><br>
|
||||
מצא את האיזון שלך בין מהירות, התאמה אישית ופרטיות עם Fossify Launcher.<br><br>
|
||||
חקור עוד אפליקציות Fossify: https://www.fossify.org<br>
|
||||
קוד פתוח: https://www.github.com/FossifyOrg<br>
|
||||
הצטרף לקהילה ב-Reddit: https://www.reddit.com/r/Fossify<br>
|
||||
התחבר בטלגרם: https://t.me/Fossify<br>
|
||||
1
fastlane/metadata/android/iw-IL/short_description.txt
Normal file
1
fastlane/metadata/android/iw-IL/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
התאם אישית את מסך הבית שלך עם משגר מהיר, ללא פרסומות, ובקוד פתוח
|
||||
1
fastlane/metadata/android/nl-NL/short_description.txt
Normal file
1
fastlane/metadata/android/nl-NL/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Pas je beginscherm aan met deze snelle, reclamevrije, opensource launcher
|
||||
18
fastlane/metadata/android/pl-PL/full_description.txt
Normal file
18
fastlane/metadata/android/pl-PL/full_description.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
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.<br><br>
|
||||
<b>🚀 BŁYSKAWICZNA NAWIGACJA:</b><br>
|
||||
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ń.<br><br>
|
||||
<b>🎨 PEŁNA PERSONALIZACJA:</b><br>
|
||||
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ę.<br><br>
|
||||
<b>🖼️ CAŁKOWITA OBSŁUGA WIDŻETÓW:</b><br>
|
||||
Ł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.<br><br>
|
||||
<b>📱 BRAK NIECHCIANEGO BAŁAGANU:</b><br>
|
||||
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.<br><br>
|
||||
<b>🔒 PRYWATNOŚĆ I BEZPIECZEŃSTWO:</b><br>
|
||||
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.<br><br>
|
||||
<b>🌐 GWARANCJA OTWARTOŹRÓDŁOWOŚCI:</b><br>
|
||||
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ść.<br><br>
|
||||
Znajdź równowagę między szybkością, personalizacją i prywatnością z Fossify Launcher.<br><br>
|
||||
Odkryj więcej aplikacji od Fossify: https://www.fossify.org<br>
|
||||
Kod źródłowy: https://www.github.com/FossifyOrg<br>
|
||||
Dołącz do społeczności na Reddicie: https://www.reddit.com/r/Fossify<br>
|
||||
Połącz się na Telegramie: https://t.me/Fossify<br>
|
||||
1
fastlane/metadata/android/pl-PL/short_description.txt
Normal file
1
fastlane/metadata/android/pl-PL/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Dostosuj swój ekran główny z szybkim, otwartoźrdłowym launcherem bez reklam
|
||||
19
fastlane/metadata/android/ru-RU/full_description.txt
Normal file
19
fastlane/metadata/android/ru-RU/full_description.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
Лаунчер Fossify — это ваш способ быстрого, персонализированного и приватному домашнему экрану. Без рекламы, никаких излишеств — просто плавный, эффективный лаунчер, разработанный с учётом вашего уникального стиля и предпочтений.<br><br>
|
||||
|
||||
<b>🚀 LIGHTNING-FAST NAVIGATION:</b><br>
|
||||
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.<br><br>
|
||||
<b>🎨 FULL CUSTOMIZATION:</b><br>
|
||||
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.<br><br>
|
||||
<b>🖼️ COMPLETE WIDGET SUPPORT:</b><br>
|
||||
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.<br><br>
|
||||
<b>📱 NO UNWANTED CLUTTER:</b><br>
|
||||
Effortlessly manage your apps by hiding or uninstalling them in just a few taps, keeping your home screen organized and clutter-free.<br><br>
|
||||
<b>🔒 PRIVACY AND SECURITY:</b><br>
|
||||
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.<br><br>
|
||||
<b>🌐 OPEN-SOURCE ASSURANCE:</b><br>
|
||||
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.<br><br>
|
||||
Find your balance of speed, customization, and privacy with Fossify Launcher.<br><br>
|
||||
Ознакомьтесь с другими приложениями от Fossify: https://www.fossify.org
|
||||
Исходный код: https://www.github.com/FossifyOrg
|
||||
Присоединяйтесь к сообществу на Reddit: https://www.reddit.com/r/Fossify
|
||||
Подключайтесь в Telegram: https://t.me/Fossify
|
||||
1
fastlane/metadata/android/ru-RU/short_description.txt
Normal file
1
fastlane/metadata/android/ru-RU/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Настройте домашний экран с быстрым, безрекламным и свободным лаунчером
|
||||
1
fastlane/metadata/android/sv-SE/short_description.txt
Normal file
1
fastlane/metadata/android/sv-SE/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Anpassa startskärmen med ett snabbt, reklamfritt startprogram med öppen källkod
|
||||
1
fastlane/metadata/android/tr-TR/short_description.txt
Normal file
1
fastlane/metadata/android/tr-TR/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Ana ekranınızı hızlı, reklamsız, açık kaynaklı bir başlatıcı ile özelleştirin
|
||||
18
fastlane/metadata/android/uk/full_description.txt
Normal file
18
fastlane/metadata/android/uk/full_description.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
Fossify Лаунчер – це ваш шлях до швидкого, персоналізованого та приватного домашнього екрану. Ніякої реклами, ніякого роздування, лише плавний, ефективний лаунчер, розроблений відповідно до вашого унікального стилю та вподобань.
|
||||
🚀 БЛИСКАВИЧНА НАВІГАЦІЯ:
|
||||
Переміщайтеся на своєму пристрої швидко і точно. Fossify Лаунчер оптимізовано для швидкої та плавної роботи, що дає вам миттєвий доступ до улюблених застосунків без затримок.
|
||||
🎨 ПОВНА ПЕРСОНАЛІЗАЦІЯ:
|
||||
Налаштуйте свій домашній екран за допомогою динамічних тем, персоналізованиз кольорів та макетів. Персоналізуйте лаунчер відповідно до свого стилю за допомогою простих у використанні інструментів, які дозволять вам створити справді унікальне налаштування.
|
||||
🖼️ ПОВНА ПІДТРИМКА ВІДЖЕТІВ:
|
||||
Легко інтегруйте віджети, розмір яких можна змінювати. Незалежно від того, чи потрібен вам годинник, календар або інші зручні інструменти, Fossify Лаунчер гарантує, що вони бездоганно впишуться у дизайн вашого домашнього екрану.
|
||||
📱 НІЯКОГО НЕБАЖАНОГО БЕЗЛАДУ:
|
||||
Легко керуйте своїми застосунками, приховуючи або видаляючи їх лише кількома дотиками, зберігаючи домашній екран впорядкованим та вільним від безладу.
|
||||
🔒 ПРИВАТНІСТЬ І БЕЗПЕКА:
|
||||
Ваша приватність лежить в основі Fossify Лаунчер. Без доступу до мережі та без нав'язливих дозволів, ваші дані залишаються з вами. Ніякого відстеження, ніякої реклами; просто лаунчер, створений з повагою до вашої приватності.
|
||||
🌐 УПЕВНЕНІСТЬ З ВІДКРИТИМ КОДОМ:
|
||||
Fossify Лаунчер побудований на основі відкритого коду, що дозволяє вам переглядати наш код на GitHub, зміцнюючи довіру та спільноту, прихильну до приватності.
|
||||
Знайдіть свій баланс швидкості, персоналізації та приватності за допомогою Fossify Лаунчер.
|
||||
Дізнайтеся більше про застосунки Fossify: https://www.fossify.org
|
||||
Відкритий код: https://www.github.com/FossifyOrg
|
||||
Приєднуйтесь до спільноти на Reddit: https://www.reddit.com/r/Fossify
|
||||
Приєднуйтесь у Telegram: https://t.me/Fossify
|
||||
1
fastlane/metadata/android/uk/short_description.txt
Normal file
1
fastlane/metadata/android/uk/short_description.txt
Normal file
@@ -0,0 +1 @@
|
||||
Налаштуйте домашній екран з швидким, безрекламним лаунчером з відкритим кодом
|
||||
18
fastlane/metadata/android/zh-CN/full_description.txt
Normal file
18
fastlane/metadata/android/zh-CN/full_description.txt
Normal file
@@ -0,0 +1,18 @@
|
||||
Fossify 启动器可让您获得快速、个性化且隐私至上的主屏幕体验。没有广告,没有臃肿——只有流畅、高效的启动器,旨在满足您独特的风格和偏好。<br><br>
|
||||
<b>🚀 快如闪电的导航:</b><br>
|
||||
快速准确地导航您的设备。Fossify 启动器经过优化,反应灵敏,流畅,可让您立即访问您最喜欢的应用,没有延迟。<br><br>
|
||||
<b>🎨 完全自定义:</b><br>
|
||||
使用动态主题、自定义颜色和布局自定义您的主屏幕。使用易于使用的工具个性化您的启动器,以匹配您的风格,让您创建真正独特的设置。<br><br>
|
||||
<b>🖼️ 完整的微件支持:</b><br>
|
||||
轻松集成完全可调整大小的微件。无论您需要时钟、日历还是其他方便的工具,Fossify 启动器都能确保它们无缝融入您的主屏幕设计。<br><br>
|
||||
<b>📱 没有不必要的混乱:</b><br>
|
||||
只需轻点几下即可隐藏或卸载应用,轻松管理应用,保持主屏幕整洁有序。<br><br>
|
||||
<b>🔒 隐私和安全:</b><br>
|
||||
您的隐私是 Fossify 启动器的核心。没有互联网接入,也没有侵入性权限,您的数据归您所有。没有跟踪,没有广告——只是一个尊重您隐私的启动器。<br><br>
|
||||
<b>🌐 开源保障:</b><br>
|
||||
Fossify 启动器建立在开源基础上,允许您在 GitHub 上查看我们的代码,培养信任和致力于隐私的社区。<br><br>
|
||||
使用 Fossify 启动器找到速度、自定义和隐私之间的平衡。<br><br>
|
||||
探索更多 Fossify 应用:https://www.fossify.org<br>
|
||||
开源代码:https://www.github.com/FossifyOrg<br>
|
||||
加入 Reddit 社区:https://www.reddit.com/r/Fossify<br>
|
||||
在 Telegram 上联系:https://t.me/Fossify<br>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user