mirror of
https://github.com/jrpie/Launcher.git
synced 2025-06-07 17:59:54 +02:00
Compare commits
4 commits
15d36eeff4
...
ce939111d0
Author | SHA1 | Date | |
---|---|---|---|
ce939111d0 | |||
![]() |
33dd3ef3c2 | ||
![]() |
1d793c485e | ||
04a2b4d248 |
39 changed files with 257 additions and 191 deletions
|
@ -28,7 +28,7 @@ import kotlinx.coroutines.launch
|
|||
import kotlin.system.exitProcess
|
||||
|
||||
|
||||
const val APP_WIDGET_HOST_ID = 42;
|
||||
const val APP_WIDGET_HOST_ID = 42
|
||||
|
||||
|
||||
class Application : android.app.Application() {
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package de.jrpie.android.launcher.actions
|
||||
|
||||
import android.content.Context
|
||||
import android.hardware.camera2.CameraAccessException
|
||||
import android.hardware.camera2.CameraCharacteristics
|
||||
import android.hardware.camera2.CameraManager
|
||||
import android.os.Build
|
||||
|
|
|
@ -6,7 +6,6 @@ import android.widget.Button
|
|||
import androidx.appcompat.app.AlertDialog
|
||||
import de.jrpie.android.launcher.BuildConfig
|
||||
import de.jrpie.android.launcher.R
|
||||
import de.jrpie.android.launcher.actions.lock.LauncherAccessibilityService
|
||||
import de.jrpie.android.launcher.preferences.LauncherPreferences
|
||||
|
||||
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
package de.jrpie.android.launcher.preferences.legacy
|
||||
|
||||
import android.content.Context
|
||||
import de.jrpie.android.launcher.Application
|
||||
import de.jrpie.android.launcher.preferences.LauncherPreferences
|
||||
import de.jrpie.android.launcher.preferences.PREFERENCE_VERSION
|
||||
import de.jrpie.android.launcher.widgets.ClockWidget
|
||||
import de.jrpie.android.launcher.widgets.WidgetPanel
|
||||
import de.jrpie.android.launcher.widgets.WidgetPosition
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package de.jrpie.android.launcher.ui
|
||||
|
||||
import android.app.AlertDialog
|
||||
import android.app.Service
|
||||
import android.content.Context
|
||||
import android.content.pm.LauncherApps
|
||||
import android.content.pm.LauncherApps.PinItemRequest
|
||||
|
@ -45,7 +44,7 @@ class PinShortcutActivity : AppCompatActivity(), UIObject {
|
|||
binding = ActivityPinShortcutBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
val launcherApps = getSystemService(Service.LAUNCHER_APPS_SERVICE) as LauncherApps
|
||||
val launcherApps = getSystemService(LAUNCHER_APPS_SERVICE) as LauncherApps
|
||||
|
||||
val request = launcherApps.getPinItemRequest(intent)
|
||||
this.request = request
|
||||
|
@ -56,7 +55,7 @@ class PinShortcutActivity : AppCompatActivity(), UIObject {
|
|||
|
||||
if (request.requestType == PinItemRequest.REQUEST_TYPE_APPWIDGET) {
|
||||
|
||||
// TODO
|
||||
// TODO handle app widgets
|
||||
request.getAppWidgetProviderInfo(this)
|
||||
// startActivity()
|
||||
finish()
|
||||
|
|
|
@ -17,6 +17,7 @@ import kotlin.math.max
|
|||
import kotlin.math.min
|
||||
import kotlin.math.tan
|
||||
|
||||
@Suppress("PrivatePropertyName")
|
||||
class TouchGestureDetector(
|
||||
private val context: Context,
|
||||
var width: Int,
|
||||
|
@ -34,13 +35,13 @@ class TouchGestureDetector(
|
|||
|
||||
private val MIN_TRIANGLE_HEIGHT = 250
|
||||
|
||||
private val longPressHandler = Handler(Looper.getMainLooper())
|
||||
|
||||
private var systemGestureInsetTop = 100
|
||||
private var systemGestureInsetBottom = 0
|
||||
private var systemGestureInsetLeft = 0
|
||||
private var systemGestureInsetRight = 0
|
||||
|
||||
private val longPressHandler = Handler(Looper.getMainLooper())
|
||||
|
||||
|
||||
data class Vector(val x: Float, val y: Float) {
|
||||
fun absSquared(): Float {
|
||||
|
|
|
@ -237,9 +237,4 @@ class AppsRecyclerAdapter(
|
|||
appFilter.favoritesVisibility = v
|
||||
updateAppsList()
|
||||
}
|
||||
|
||||
fun setHiddenAppsVisibility(v: AppFilter.Companion.AppSetVisibility) {
|
||||
appFilter.hiddenVisibility = v
|
||||
updateAppsList()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -96,7 +96,6 @@ class ListFragmentApps : Fragment(), UIObject {
|
|||
if (LauncherPreferences.functionality().searchAutoCloseKeyboard()) {
|
||||
addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
var totalDy: Int = 0
|
||||
var threshold = (resources.displayMetrics.density * 100).toInt()
|
||||
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
||||
totalDy += dy
|
||||
|
||||
|
|
|
@ -5,7 +5,6 @@ import android.view.LayoutInflater
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import de.jrpie.android.launcher.BuildConfig.VERSION_CODE
|
||||
import de.jrpie.android.launcher.databinding.Tutorial5FinishBinding
|
||||
import de.jrpie.android.launcher.preferences.LauncherPreferences
|
||||
import de.jrpie.android.launcher.requestNotificationPermission
|
||||
|
|
|
@ -61,7 +61,7 @@ open class WidgetContainerView(
|
|||
it.value.y + it.value.height
|
||||
).contains(position) == true
|
||||
}.any {
|
||||
Widget.byId(context, it.key)?.allowInteraction == false
|
||||
Widget.byId(it.key)?.allowInteraction == false
|
||||
}
|
||||
}
|
||||
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
|
||||
|
|
|
@ -9,7 +9,6 @@ import android.widget.EditText
|
|||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import de.jrpie.android.launcher.Application
|
||||
import de.jrpie.android.launcher.R
|
||||
import de.jrpie.android.launcher.databinding.ActivityManageWidgetPanelsBinding
|
||||
import de.jrpie.android.launcher.preferences.LauncherPreferences
|
||||
|
|
|
@ -5,7 +5,6 @@ import android.appwidget.AppWidgetManager
|
|||
import android.content.Intent
|
||||
import android.content.SharedPreferences
|
||||
import android.content.res.Resources
|
||||
import android.graphics.Rect
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.ViewGroup
|
||||
|
@ -21,7 +20,6 @@ import de.jrpie.android.launcher.widgets.GRID_SIZE
|
|||
import de.jrpie.android.launcher.widgets.WidgetPanel
|
||||
import de.jrpie.android.launcher.widgets.WidgetPosition
|
||||
import kotlin.math.max
|
||||
import kotlin.math.min
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
|
||||
|
@ -132,7 +130,6 @@ class ManageWidgetsActivity : UIObject, Activity() {
|
|||
|
||||
|
||||
private fun selectWidget() {
|
||||
val appWidgetHost = (application as Application).appWidgetHost
|
||||
startActivityForResult(
|
||||
Intent(this, SelectWidgetActivity::class.java).also {
|
||||
it.putExtra(
|
||||
|
|
|
@ -31,19 +31,19 @@ class WidgetManagerView(widgetPanelId: Int, context: Context, attrs: AttributeSe
|
|||
WidgetContainerView(widgetPanelId, context, attrs) {
|
||||
constructor(context: Context, attrs: AttributeSet?) : this(WidgetPanel.HOME.id, context, attrs)
|
||||
|
||||
val TOUCH_SLOP: Int
|
||||
val TOUCH_SLOP_SQUARE: Int
|
||||
val LONG_PRESS_TIMEOUT: Long
|
||||
val touchSlop: Int
|
||||
val touchSlopSquare: Int
|
||||
val longPressTimeout: Long
|
||||
|
||||
|
||||
private var overlayViewById = HashMap<Int, WidgetOverlayView>()
|
||||
|
||||
init {
|
||||
val configuration = ViewConfiguration.get(context)
|
||||
TOUCH_SLOP = configuration.scaledTouchSlop
|
||||
TOUCH_SLOP_SQUARE = TOUCH_SLOP * TOUCH_SLOP
|
||||
touchSlop = configuration.scaledTouchSlop
|
||||
touchSlopSquare = touchSlop * touchSlop
|
||||
|
||||
LONG_PRESS_TIMEOUT = ViewConfiguration.getLongPressTimeout().toLong()
|
||||
longPressTimeout = ViewConfiguration.getLongPressTimeout().toLong()
|
||||
}
|
||||
|
||||
|
||||
|
@ -127,14 +127,14 @@ class WidgetManagerView(widgetPanelId: Int, context: Context, attrs: AttributeSe
|
|||
view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS)
|
||||
endInteraction()
|
||||
}
|
||||
}, LONG_PRESS_TIMEOUT)
|
||||
}, longPressTimeout)
|
||||
}
|
||||
if (event.actionMasked == MotionEvent.ACTION_MOVE ||
|
||||
event.actionMasked == MotionEvent.ACTION_UP
|
||||
) {
|
||||
val distanceX = event.x - (currentGestureStart?.x ?: return true)
|
||||
val distanceY = event.y - (currentGestureStart?.y ?: return true)
|
||||
if (distanceX * distanceX + distanceY * distanceY > TOUCH_SLOP_SQUARE) {
|
||||
if (distanceX * distanceX + distanceY * distanceY > touchSlopSquare) {
|
||||
longPressHandler.removeCallbacksAndMessages(null)
|
||||
}
|
||||
val view = selectedWidgetOverlayView ?: return true
|
||||
|
@ -162,7 +162,7 @@ class WidgetManagerView(widgetPanelId: Int, context: Context, attrs: AttributeSe
|
|||
if (event.actionMasked == MotionEvent.ACTION_UP) {
|
||||
longPressHandler.removeCallbacksAndMessages(null)
|
||||
val id = selectedWidgetOverlayView?.widgetId ?: return true
|
||||
val widget = Widget.byId(context, id) ?: return true
|
||||
val widget = Widget.byId(id) ?: return true
|
||||
widget.position = newPosition
|
||||
endInteraction()
|
||||
updateWidget(widget)
|
||||
|
|
|
@ -54,26 +54,18 @@ class WidgetOverlayView : ViewGroup {
|
|||
var widgetId: Int = -1
|
||||
set(newId) {
|
||||
field = newId
|
||||
preview = Widget.byId(context, widgetId)?.getPreview(context)
|
||||
preview = Widget.byId(widgetId)?.getPreview(context)
|
||||
}
|
||||
|
||||
constructor(context: Context) : super(context) {
|
||||
init(null, 0)
|
||||
}
|
||||
constructor(context: Context) : super(context)
|
||||
|
||||
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
|
||||
init(attrs, 0)
|
||||
}
|
||||
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
|
||||
|
||||
constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super(
|
||||
context,
|
||||
attrs,
|
||||
defStyle
|
||||
) {
|
||||
init(attrs, defStyle)
|
||||
}
|
||||
|
||||
private fun init(attrs: AttributeSet?, defStyle: Int) { }
|
||||
)
|
||||
|
||||
override fun onDraw(canvas: Canvas) {
|
||||
super.onDraw(canvas)
|
||||
|
@ -101,13 +93,13 @@ class WidgetOverlayView : ViewGroup {
|
|||
}
|
||||
|
||||
fun showPopupMenu() {
|
||||
val widget = Widget.byId(context, widgetId)?: return
|
||||
val widget = Widget.byId(widgetId)?: return
|
||||
val menu = PopupMenu(context, popupAnchor)
|
||||
menu.menu.let {
|
||||
it.add(
|
||||
context.getString(R.string.widget_menu_remove)
|
||||
).setOnMenuItemClickListener { _ ->
|
||||
Widget.byId(context, widgetId)?.delete(context)
|
||||
Widget.byId(widgetId)?.delete(context)
|
||||
return@setOnMenuItemClickListener true
|
||||
}
|
||||
it.add(
|
||||
|
@ -126,7 +118,7 @@ class WidgetOverlayView : ViewGroup {
|
|||
}
|
||||
|
||||
fun getHandles(): List<Handle> {
|
||||
return listOf<Handle>(
|
||||
return listOf(
|
||||
Handle(WidgetManagerView.EditMode.TOP,
|
||||
Rect(HANDLE_EDGE_SIZE, 0, width - HANDLE_EDGE_SIZE, HANDLE_SIZE)),
|
||||
Handle(WidgetManagerView.EditMode.BOTTOM,
|
||||
|
|
|
@ -38,10 +38,6 @@ sealed class Widget {
|
|||
)
|
||||
}
|
||||
|
||||
fun getPanel(): WidgetPanel? {
|
||||
return WidgetPanel.byId(panelId)
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return id
|
||||
}
|
||||
|
@ -57,9 +53,9 @@ sealed class Widget {
|
|||
fun deserialize(serialized: String): Widget {
|
||||
return Json.decodeFromString(serialized)
|
||||
}
|
||||
fun byId(context: Context, id: Int): Widget? {
|
||||
fun byId(id: Int): Widget? {
|
||||
// TODO: do some caching
|
||||
return LauncherPreferences.widgets().widgets().firstOrNull() {
|
||||
return LauncherPreferences.widgets().widgets().firstOrNull {
|
||||
it.id == id
|
||||
}
|
||||
}
|
||||
|
|
|
@ -55,8 +55,8 @@ fun getAppWidgetProviders( context: Context ): List<LauncherWidgetProvider> {
|
|||
(context.getSystemService(Service.USER_SERVICE) as UserManager).userProfiles
|
||||
}
|
||||
list.addAll(
|
||||
profiles.map {
|
||||
appWidgetManager.getInstalledProvidersForProfile(it)
|
||||
profiles.map { profile ->
|
||||
appWidgetManager.getInstalledProvidersForProfile(profile)
|
||||
.map { LauncherAppWidgetProvider(it) }
|
||||
}.flatten()
|
||||
)
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:contentDescription="@string/content_description_close"
|
||||
android:gravity="center"
|
||||
android:includeFontPadding="true"
|
||||
android:paddingLeft="16sp"
|
||||
|
@ -64,6 +65,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="16dp"
|
||||
android:contentDescription="@string/content_description_add_widget_panel"
|
||||
android:src="@drawable/baseline_add_24"
|
||||
app:layout_anchor="@+id/manage_widget_panels_recycler"
|
||||
app:layout_anchorGravity="end|bottom"
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_margin="16dp"
|
||||
android:clickable="true"
|
||||
android:contentDescription="@string/content_description_add_widget"
|
||||
android:focusable="true"
|
||||
android:src="@drawable/baseline_add_24"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:contentDescription="@string/content_description_close"
|
||||
android:gravity="center"
|
||||
android:includeFontPadding="true"
|
||||
android:paddingLeft="16sp"
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:contentDescription="@string/content_description_close"
|
||||
android:gravity="center"
|
||||
android:includeFontPadding="true"
|
||||
android:paddingLeft="16sp"
|
||||
|
|
|
@ -62,6 +62,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:contentDescription="@string/content_description_close"
|
||||
android:gravity="center"
|
||||
android:includeFontPadding="true"
|
||||
android:paddingLeft="16sp"
|
||||
|
@ -72,6 +73,7 @@
|
|||
app:layout_constraintTop_toTopOf="parent" />
|
||||
<ImageView
|
||||
android:id="@+id/list_lock"
|
||||
android:contentDescription="@string/content_description_lock"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -91,7 +93,8 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:tabIndicatorColor="?attr/colorAccent"
|
||||
custom:tabTextColor="?attr/android:textColor" />
|
||||
custom:tabTextColor="?attr/android:textColor"
|
||||
tools:ignore="SpeakableTextPresentCheck" />
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
|
@ -110,6 +113,7 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/list_appbar"
|
||||
app:layout_constraintVertical_bias="0.0"
|
||||
custom:layout_behavior="@string/appbar_scrolling_view_behavior" />
|
||||
custom:layout_behavior="@string/appbar_scrolling_view_behavior"
|
||||
tools:ignore="SpeakableTextPresentCheck" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -11,6 +11,7 @@
|
|||
android:id="@+id/list_other_row_icon"
|
||||
android:layout_width="35sp"
|
||||
android:layout_height="35sp"
|
||||
android:contentDescription="@null"
|
||||
android:gravity="center"
|
||||
android:textSize="30sp"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
|
|
|
@ -20,6 +20,22 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/settings_system"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:contentDescription="@string/settings"
|
||||
android:gravity="center"
|
||||
android:includeFontPadding="true"
|
||||
android:paddingLeft="16sp"
|
||||
android:paddingRight="16sp"
|
||||
android:src="@drawable/baseline_settings_applications_24"
|
||||
custom:layout_constraintBottom_toBottomOf="parent"
|
||||
custom:layout_constraintStart_toStartOf="parent"
|
||||
custom:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/settings_heading"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -40,6 +56,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:contentDescription="@string/content_description_close"
|
||||
android:gravity="center"
|
||||
android:includeFontPadding="true"
|
||||
android:paddingLeft="16sp"
|
||||
|
@ -48,28 +65,14 @@
|
|||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/settings_system"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:gravity="center"
|
||||
android:includeFontPadding="true"
|
||||
android:paddingLeft="16sp"
|
||||
android:paddingRight="16sp"
|
||||
android:src="@drawable/baseline_settings_applications_24"
|
||||
custom:layout_constraintBottom_toBottomOf="parent"
|
||||
custom:layout_constraintStart_toStartOf="parent"
|
||||
custom:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/settings_tabs"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:tabTextColor="?attr/android:textColor" />
|
||||
app:tabTextColor="?attr/android:textColor"
|
||||
tools:ignore="SpeakableTextPresentCheck" />
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
|
|
|
@ -68,6 +68,7 @@
|
|||
android:id="@+id/settings_actions_row_remove"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/content_description_settings_actions_row_button_remove"
|
||||
android:padding="8sp"
|
||||
android:src="@drawable/baseline_close_24"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
android:id="@+id/tutorial_button_back"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp"
|
||||
android:contentDescription="@string/content_description_navigate_back"
|
||||
android:gravity="center"
|
||||
android:alpha="0.5"
|
||||
android:src="@drawable/baseline_navigate_before_24"
|
||||
|
@ -43,12 +44,14 @@
|
|||
app:layout_constraintStart_toEndOf="@+id/tutorial_button_back"
|
||||
app:tabBackground="@drawable/tutorial_tab_selector"
|
||||
app:tabGravity="center"
|
||||
app:tabIndicatorHeight="0dp" />
|
||||
app:tabIndicatorHeight="0dp"
|
||||
tools:ignore="SpeakableTextPresentCheck" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/tutorial_button_next"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp"
|
||||
android:contentDescription="@string/content_description_navigate_next"
|
||||
android:gravity="center"
|
||||
android:src="@drawable/baseline_navigate_next_24"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
|
|
|
@ -95,9 +95,9 @@
|
|||
<string name="settings_display_hide_status_bar">إخفِ شريط الحالة</string>
|
||||
<string name="settings_display_rotate_screen">تدوير الشاشة</string>
|
||||
<string name="settings_launcher_section_functionality">الوظائف</string>
|
||||
<string name="settings_enabled_gestures_double_swipe">أوامر السحب بأصبعين</string>
|
||||
<string name="settings_enabled_gestures_double_swipe">إيماءات التمرير المزدوج</string>
|
||||
<string name="settings_enabled_gestures_double_swipe_summary">اسحب باستخدام أصبعين</string>
|
||||
<string name="settings_enabled_gestures_edge_swipe">أوامر السحب من الحواف</string>
|
||||
<string name="settings_enabled_gestures_edge_swipe">إيماءات تمرير الحافة</string>
|
||||
<string name="settings_enabled_gestures_edge_swipe_edge_width">عرض الحواف</string>
|
||||
<string name="settings_functionality_auto_launch">إظهار نتائج البحث</string>
|
||||
<string name="settings_functionality_auto_launch_summary">اضغط مسافة لتعطيل هذه الميزة مؤقتًا</string>
|
||||
|
@ -162,11 +162,11 @@
|
|||
<string name="tutorial_concept_text_2">إنه برنامج مجاني (ترخيص MIT)!\nتأكد من مراجعة المستودع!</string>
|
||||
<string name="tutorial_concept_label_version">النسخة</string>
|
||||
<string name="tutorial_usage_title">الاستخدام</string>
|
||||
<string name="tutorial_usage_text">تحتوي شاشتك الرئيسية على التاريخ والوقت المحليين. لا الهاء.</string>
|
||||
<string name="tutorial_usage_text">تحتوي شاشة المنزل الخاصة بك على التاريخ والوقت المحليين. بدون أي مشتتات.</string>
|
||||
<string name="tutorial_app_list_title">كل التطبيقات</string>
|
||||
<string name="tutorial_app_list_text_2">بمجرد تطابق تطبيق واحد فقط، يتم تشغيله تلقائيًا.\nيمكن تعطيل ذلك عن طريق اضافة مساحة في بداية استعلام.</string>
|
||||
<string name="tutorial_setup_title">الإعداد</string>
|
||||
<string name="tutorial_setup_text">اخترنا بعض التطبيقات الافتراضية لك. يمكنك تغييرها الآن إذا كنت تريد:</string>
|
||||
<string name="tutorial_setup_text">اخترنا لك بعض التطبيقات الافتراضية. يمكنك تغييرها الآن إذا كنت ترغب في ذلك:</string>
|
||||
<string name="tutorial_setup_text_2">يمكنك أيضًا تغيير اختيارك لاحقًا.</string>
|
||||
<string name="tutorial_finish_title">لنبدأ!</string>
|
||||
<string name="tutorial_finish_button">ابدأ</string>
|
||||
|
@ -235,7 +235,7 @@
|
|||
<string name="settings_apps_hide_bound_apps">لا تظهر التطبيقات المرتبطة بإيماءة في قائمة التطبيقات</string>
|
||||
<string name="list_other_list_favorites">درج التطبيقات المفضلة</string>
|
||||
<string name="list_other_track_next">الموسيقى: التالي</string>
|
||||
<string name="tutorial_concept_text">تم تصميم μlauncher ليكون فعال، وخالي من الهاء.\n\nلا يحتوي على أي إعلانات ولا يجمع أي بيانات.</string>
|
||||
<string name="tutorial_concept_text">تم تصميم μLauncher ليكون فعالًا وخاليًا من مشتتات الانتباه.\n\nلا يحتوي على أي إعلانات ولا يجمع أي بيانات.</string>
|
||||
<string name="tutorial_finish_text">أنت مستعد للبدء!\n\nآمل أن يكون هذا ذا قيمة كبيرة بالنسبة لك!\n\n- المطورين</string>
|
||||
<string name="toast_private_space_default_home_screen">يجب أن يكون μlauncher الشاشة الرئيسية الافتراضية للوصول إلى مساحة خاصة.</string>
|
||||
<string name="settings_gesture_description_left_bottom_edge">اسحب إلى اليسار من أسفل الشاشة</string>
|
||||
|
@ -245,7 +245,7 @@
|
|||
<string name="list_app_info">معلومات التطبيق</string>
|
||||
<string name="list_app_favorite_add">أضف إلى المفضلة</string>
|
||||
<string name="list_other_expand_notifications_panel">توسيع لوحة الاشعارات</string>
|
||||
<string name="tutorial_app_list_text">يمكنك البحث بسرعة من خلال جميع التطبيقات في قائمة التطبيقات.\n\nاسحب لأعلى لفتح القائمة، أو ربطها بإيماءة ما.</string>
|
||||
<string name="tutorial_app_list_text">يمكنك البحث بسرعة في جميع التطبيقات في قائمة التطبيقات.\n\nاسحب لأعلى لفتحها، أو اربطها بإيماءة مختلفة.</string>
|
||||
<string name="alert_lock_screen_failed">خطأ: فشل في قفل الشاشة. (إذا قمت للتو بترقية التطبيق ، فحاول تعطيل خدمة الوصول وإعادة تمكينها في إعدادات الهاتف)</string>
|
||||
<string name="settings_gesture_description_down_right_edge">اسحب إلى الأسفل من حافة الشاشة اليمنى</string>
|
||||
<string name="settings_theme_font_item_serif_monospace">أحادي المسافة مذيل</string>
|
||||
|
@ -257,7 +257,7 @@
|
|||
<string name="dialog_report_bug_info">شكرا لك على المساعدة في تحسين μLauncher!\nيرجى إضافة المعلومات التالية إلى تقرير الأخطاء الخاص بك:</string>
|
||||
<string name="settings_meta_contact">اتصل بالمطور الأصلي</string>
|
||||
<string name="list_other_volume_down">اخفض الصوت</string>
|
||||
<string name="tutorial_usage_text_2">يمكنك تشغيل أهم تطبيقاتك بوسطة إيماءات اللمس أو الضغط على الأزرار.</string>
|
||||
<string name="tutorial_usage_text_2">يمكنك تشغيل أهم تطبيقاتك بإيماءات اللمس أو الضغط على الأزرار.</string>
|
||||
<string name="settings_enabled_gestures_edge_swipe_summary">اسحب من حواف الشاشة</string>
|
||||
<string name="toast_lock_screen_not_supported">خطأ: قفل الشاشة باستخدام إمكانية الوصول غير مدعوم على هذا الجهاز. الرجاء استخدام طريقة مسؤول الجهاز بدلاً من ذلك.</string>
|
||||
<string name="accessibility_service_description">يتيح تعيين μlauncher كخدمة إمكانية الوصول قفل الشاشة وفتح قائمة التطبيقات الحديثة. يرجى ملاحظة أنه يتطلب كمية كبيرة من الأذونات. يجب ألا تمنح مثل هذه الأذونات باستخفاف لأي تطبيق. سوف يستخدم μlauncher خدمة إمكانية الوصول فقط لأداء الإجراءات التالية عند طلب المستخدم: * قفل شاشة * فتح التطبيقات الحديثة μlauncher لن يستخدم أبدًا خدمة إمكانية الوصول لجمع البيانات. يمكنك التحقق من شيفرة المصدر للتأكد. يرجى ملاحظة أنه يمكنك قفل الشاشة من خلال منح أذونات مسؤول الجهاز، لكنها لا تعمل مع بصمات الأصابع وفتح الوجه.</string>
|
||||
|
@ -288,11 +288,13 @@
|
|||
يمكنك تغيير اختيارك لاحقًا في الإعدادات.
|
||||
]]></string>
|
||||
<string name="widget_clock_description">الساعة الافتراضية لـ μLauncher</string>
|
||||
<string name="dialog_select_widget_panel_info_no_panels"><![CDATA[لم يتم العثور على لوحات عناصر واجهة المستخدم. يمكنك إنشاء لوحات الأدوات في الإعدادات > المشغّل > إدارة لوحات الأدوات.]].</string>
|
||||
<string name="dialog_select_widget_panel_info_no_panels"><![CDATA[
|
||||
لم يتم العثور على أي لوحات أدوات. يمكنك إنشاء لوحات أدوات في الإعدادات > المشغل > إدارة لوحات الأدوات.
|
||||
]]></string>
|
||||
<string name="select_widget_title">اختر الأداة</string>
|
||||
<string name="widget_menu_remove">إزالة</string>
|
||||
<string name="widget_menu_configure">تهيئة</string>
|
||||
<string name="widget_menu_enable_interaction">Enable Interaction</string>
|
||||
<string name="widget_menu_enable_interaction">تمكين التفاعل</string>
|
||||
<string name="widget_menu_disable_interaction">تعطيل التفاعل</string>
|
||||
<string name="widget_clock_label">ساعة</string>
|
||||
<string name="manage_widget_panels_delete">حذف</string>
|
||||
|
@ -305,12 +307,35 @@
|
|||
<string name="alert_widget_panel_not_found">لم تعد لوحة الأدوات هذه موجودة.</string>
|
||||
<string name="settings_launcher_section_widgets">الأدوات</string>
|
||||
<plurals name="widget_panel_number_of_widgets">
|
||||
<item quantity="zero">يحتوي على %d أداة.</item>
|
||||
<item quantity="one">يحتوي على %d أداة.</item>
|
||||
<item quantity="two">يحتوي على %d أدوات.</item>
|
||||
<item quantity="few">يحتوي على %d أدوات.</item>
|
||||
<item quantity="many">يحتوي على %d أداة.</item>
|
||||
<item quantity="other"></item>
|
||||
<item quantity="zero">يحتوي على %1$dأداة.</item>
|
||||
<item quantity="one">يحتوي على %1$d أداة.</item>
|
||||
<item quantity="two">يحتوي على %1$d أدوات.</item>
|
||||
<item quantity="few">يحتوي على%1$d أدوات.</item>
|
||||
<item quantity="many">يحتوي على %1$d أداة.</item>
|
||||
<item quantity="other">يحتوي على%1$d أداة.</item>
|
||||
</plurals>
|
||||
<string name="settings_functionality_auto_close_keyboard">إغلاق لوحة المفاتيح عند التمرير</string>
|
||||
<string name="crash_info"><![CDATA[
|
||||
يبدو أن هناك خطأ ما، نعتذر عن ذلك!<br><br>
|
||||
لأسباب تتعلق بالخصوصية، لا يتم جمع سجلات الأعطال تلقائيًا.<br>
|
||||
ومع ذلك، فإن السجلات مفيدة جدًا لتصحيح الأخطاء، لذا سأكون ممتنًا جدًا إذا كان بإمكانك إرسال السجل المرفق عبر البريد
|
||||
أو إنشاء تقرير عن الخطأ على GitHub.<br><br>
|
||||
يرجى ملاحظة أن سجلات الأعطال قد تحتوي على <strong>معلومات حساسة</strong>، مثل اسم التطبيق الذي حاولت تشغيله.
|
||||
يرجى <strong>حذف</strong> مثل هذه المعلومات قبل إرسال التقرير.
|
||||
<h2>ماذا يمكنني أن أفعل الآن؟</h2>
|
||||
إذا ظهر هذا الخطأ مرة أخرى، يمكنك تجربة عدة أشياء:
|
||||
<ul>
|
||||
<li>إيقاف μLauncher بالقوة</li>
|
||||
<li>مسح بيانات μLauncher's (<strong>ستفقد إعداداتك!</strong>)</li>
|
||||
<li>تثبيت إصدار أقدم (<a href="https://github.com/jrpie/Launcher/releases">GitHub</a>, <a href="https://f-droid.org/en/packages/de.jrpie.android.launcher">F-Droid</a>)</li>
|
||||
</ul>
|
||||
]]></string>
|
||||
<string name="notification_crash_title">تعطل μLauncher</string>
|
||||
<string name="notification_crash_explanation">آسف! انقر للحصول على مزيد من المعلومات.</string>
|
||||
<string name="report_crash_button_copy">نسخ تقرير التعطل إلى الحافظة</string>
|
||||
<string name="report_crash_button_mail">إرسال التقرير بالبريد</string>
|
||||
<string name="report_crash_button_report">إنشاء تقرير خطأ على GitHub</string>
|
||||
<string name="report_crash_title">تعطل μLauncher</string>
|
||||
<string name="send_email">إرسال بريد إلكتروني</string>
|
||||
<string name="notification_channel_crash">الأعطال ومعلومات التصحيح</string>
|
||||
</resources>
|
||||
|
|
|
@ -312,4 +312,28 @@
|
|||
<string name="settings_launcher_section_widgets">Widget</string>
|
||||
<string name="dialog_select_widget_panel_title">Seleziona pannello widget</string>
|
||||
<string name="dialog_select_widget_panel_info_no_panels"><![CDATA[Nessun pannello widget trovato. Puoi creare pannelli widget da Impostazioni > Launcher > Gestione Pannelli Widget.]]></string>
|
||||
<string name="settings_meta_view_docs">Documentazione</string>
|
||||
<string name="notification_crash_explanation">Scusa! Clicca per altre info.</string>
|
||||
<string name="notification_crash_title">µLauncher è crashato</string>
|
||||
<string name="report_crash_button_copy">Copia il rapporto del crash negli appunti</string>
|
||||
<string name="report_crash_button_mail">Invia il rapporto per email</string>
|
||||
<string name="report_crash_button_report">Crea un bug report in GitHub</string>
|
||||
<string name="report_crash_title">µLauncher è crashato</string>
|
||||
<string name="send_email">Invia email</string>
|
||||
<string name="notification_channel_crash">Info su crash e debug</string>
|
||||
<string name="crash_info"><![CDATA[
|
||||
Sembra che qualcosa sia andato storto, mi scuso per questo!<br><br>
|
||||
Per motivi di privacy, i log dei crash non sono raccolti automaticamente.<br>
|
||||
Comunque i log sono molto utili per il debug, quindi ti sarei molto grato se potessi inviarmi i log per email
|
||||
oppure aprire un bug report su github.<br><br>
|
||||
Nota che i crash log potrebbero contenere <strong>informazioni sensibili</strong>, come il nome dell\'app che hai provato ad avviare.
|
||||
Please <strong>redact</strong> such information before sending the report.
|
||||
<h2>What can I do now?</h2>
|
||||
If this bug appears again and again, you can try several things:
|
||||
<ul>
|
||||
<li>Force stop μLauncher</li>
|
||||
<li>Clear μLauncher\'s storage (<strong>Your settings will be lost!</strong>)</li>
|
||||
<li>Install an older version (<a href=\"https://github.com/jrpie/Launcher/releases\">GitHub</a>, <a href=\"https://f-droid.org/en/packages/de.jrpie.android.launcher\">F-Droid</a>)</li>
|
||||
</ul>
|
||||
]]></string>
|
||||
</resources>
|
||||
|
|
|
@ -260,7 +260,7 @@
|
|||
<string name="settings_gesture_swipe_v_reverse">V(反向)</string>
|
||||
<string name="settings_gesture_swipe_larger_reverse"><![CDATA[>(反向)]]></string>
|
||||
<string name="settings_gesture_swipe_smaller_reverse"><![CDATA[<(反向)]]></string>
|
||||
<string name="settings_functionality_auto_launch_summary">开启后将直接启动搜索所匹配到的应用,可以通过在搜索内容前添加空格来临时停用该功能。</string>
|
||||
<string name="settings_functionality_auto_launch_summary">启用后将直接启动搜索所匹配到的应用,可以通过在搜索内容前添加空格来临时停用该功能。</string>
|
||||
<string name="settings_list_layout">应用程序列表样式</string>
|
||||
<string name="pin_shortcut_button_bind">绑定到手势</string>
|
||||
<string name="list_other_track_play_pause">音乐:播放 / 暂停</string>
|
||||
|
@ -287,7 +287,7 @@
|
|||
<string name="settings_functionality_auto_close_keyboard">滚动应用程序列表时自动隐藏键盘</string>
|
||||
<string name="settings_widgets_widgets">设置小部件</string>
|
||||
<string name="widget_menu_remove">删除</string>
|
||||
<string name="widget_menu_enable_interaction">开启交互功能</string>
|
||||
<string name="widget_menu_enable_interaction">启用交互功能</string>
|
||||
<string name="widget_menu_disable_interaction">关闭交互功能</string>
|
||||
<string name="widget_clock_label">时钟</string>
|
||||
<string name="manage_widget_panels_delete">删除</string>
|
||||
|
@ -303,4 +303,31 @@
|
|||
<string name="widget_clock_description">μLauncher 默认时钟小部件</string>
|
||||
<string name="select_widget_title">选择小部件</string>
|
||||
<string name="settings_widgets_custom_panels">设置小部件面板</string>
|
||||
<string name="dialog_ok">确认</string>
|
||||
<plurals name="widget_panel_number_of_widgets">
|
||||
<item quantity="other">包含 %1$d 个小部件。</item>
|
||||
</plurals>
|
||||
<string name="notification_crash_title">μLauncher 崩溃了</string>
|
||||
<string name="notification_crash_explanation">抱歉!点击查看更多信息。</string>
|
||||
<string name="report_crash_button_copy">复制崩溃报告到剪贴板</string>
|
||||
<string name="report_crash_button_mail">通过 Email 发送报告</string>
|
||||
<string name="report_crash_title">μLauncher 崩溃了</string>
|
||||
<string name="report_crash_button_report">在 GitHub 上创建错误反馈</string>
|
||||
<string name="send_email">发送 Email</string>
|
||||
<string name="notification_channel_crash">崩溃和调试信息</string>
|
||||
<string name="crash_info"><![CDATA[
|
||||
发生了一些错误,非常抱歉!<br><br>
|
||||
出于保护隐私的考量,默认不会记录崩溃日志。<br>
|
||||
但是,日志对应用调试非常有帮助,若您原意,请将所附日志文件通过 Email 发送给我,
|
||||
或在 GitHub 上创建错误报告,非常感谢!<br><br>
|
||||
请注意,崩溃日志可能包含<strong>敏感信息</strong>,如,您尝试启动的应用名称。
|
||||
因此,请在发送报告前,先将此类信息<strong>去除</strong>。
|
||||
<h2>我现在应该怎么做?</h2>
|
||||
如果这个错误重复发生,您可以做如下尝试:
|
||||
<ul>
|
||||
<li>强行停止 μLauncher</li>
|
||||
<li>清空 μLauncher 的存储空间(<strong>您的设置将被重置!</strong>)</li>
|
||||
<li>安装旧版本(<a href=\"https://github.com/jrpie/Launcher/releases\">GitHub</a>, <a href=\"https://f-droid.org/en/packages/de.jrpie.android.launcher\">F-Droid</a>)</li>
|
||||
</ul>
|
||||
]]></string>
|
||||
</resources>
|
||||
|
|
|
@ -11,9 +11,5 @@
|
|||
<color name="lightTheme_background_color">#fff</color>
|
||||
<color name="lightTheme_accent_color">#9999ff</color>
|
||||
<color name="lightTheme_text_color">#000</color>
|
||||
<color name="light_blue_400">#FF29B6F6</color>
|
||||
<color name="light_blue_600">#FF039BE5</color>
|
||||
<color name="gray_400">#FFBDBDBD</color>
|
||||
<color name="gray_600">#FF757575</color>
|
||||
</resources>
|
||||
|
||||
|
|
|
@ -1,11 +1,5 @@
|
|||
<resources>
|
||||
<!-- Default screen margins, per the Android Design guidelines. -->
|
||||
<dimen name="activity_horizontal_margin">16dp</dimen>
|
||||
<dimen name="activity_vertical_margin">16dp</dimen>
|
||||
<dimen name="appbar_padding">16dp</dimen>
|
||||
<dimen name="fab_margin">16dp</dimen>
|
||||
<dimen name="appbar_padding_top">8dp</dimen>
|
||||
|
||||
<dimen name="app_icon_side">40dip</dimen>
|
||||
<dimen name="app_action_height">48dip</dimen>
|
||||
</resources>
|
||||
|
|
|
@ -444,4 +444,16 @@
|
|||
<string name="send_email">Send Email</string>
|
||||
<string name="notification_channel_crash">Crashes and Debug Information</string>
|
||||
<string name="settings_meta_view_docs">Documentation</string>
|
||||
<!--
|
||||
-
|
||||
- Content Descriptions
|
||||
-
|
||||
-->
|
||||
<string name="content_description_add_widget">Add widget</string>
|
||||
<string name="content_description_add_widget_panel">Add widget panel</string>
|
||||
<string name="content_description_close">Close</string>
|
||||
<string name="content_description_navigate_back">Navigate back</string>
|
||||
<string name="content_description_navigate_next">Navigate next</string>
|
||||
<string name="content_description_lock">Lock</string>
|
||||
<string name="content_description_settings_actions_row_button_remove">Remove binding</string>
|
||||
</resources>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
# Actions and Gestures
|
||||
|
||||
µLauncher's central mechanism for accessing important functionality quickly
|
||||
is to bind actions (e.g. launching an app) to gestures (e.g. swiping up).
|
||||
is to bind actions (e.g., launching an app) to gestures (e.g., swiping up).
|
||||
These bindings can be configured in µLauncher Settings > ACTIONS.
|
||||
|
||||
|
||||
|
@ -32,7 +32,7 @@ These bindings can be configured in µLauncher Settings > ACTIONS.
|
|||
|
||||
- Tap then swipe up, down, left, or right
|
||||
|
||||
To execute these gesture consistently, it is helpful to think of them as double taps,
|
||||
To execute these gestures consistently, it is helpful to think of them as double taps,
|
||||
where the finger stays on the screen after the second tap and then does a swipe.
|
||||
The swipe must start very shortly after the tap ended.
|
||||
|
||||
|
@ -62,14 +62,14 @@ To any of the available gestures, one of the following actions can be bound:
|
|||
If private space is set up, an icon to (un)lock it is shown on the top right.
|
||||
- Open µLauncher's settings
|
||||
- Toggle private space lock
|
||||
- Lock the screen: This allows to lock the screen.
|
||||
There are two mechanisms by which the screen can be locked, accessibility service and device admin.
|
||||
- Lock the screen: This allows you to lock the screen.
|
||||
There are two mechanisms by which the screen can be locked: accessibility service and device admin.
|
||||
- Toggle the flashlight
|
||||
- Raise, lower or adjust volume
|
||||
- Raise, lower, or adjust volume
|
||||
- Play or pause media playback
|
||||
- Skip to previous or next audio track
|
||||
- Open notifications panel: Might be useful if the top of your screen is broken.
|
||||
- Open quick settings panel: Why swipe down twice?
|
||||
- Open [recent apps](https://developer.android.com/guide/components/activities/recents): Requires accessibility service. Can be used as a workaround for a Android bug.
|
||||
- Open [recent apps](https://developer.android.com/guide/components/activities/recents): Requires accessibility service. It can be used as a workaround for an Android bug.
|
||||
- Launch another home screen: Allows using another installed home screen temporarily.
|
||||
- Do nothing: Just prevents showing the message saying that no action is bound to this gesture.
|
||||
- Do nothing: Simply prevents showing the message that no action is bound to this gesture.
|
||||
|
|
|
@ -8,7 +8,7 @@ This is a comparison of open-source home screens for Android.
|
|||
|
||||
**Inclusion criteria:** Apps in this list must be [open source](https://opensource.org/licenses) and maintained
|
||||
|
||||
<!-- New contributers, please reference https://www.markdownguide.org/basic-syntax/ -->
|
||||
<!-- New contributors, please reference https://www.markdownguide.org/basic-syntax/ -->
|
||||
|
||||
<!-- TEMPLATE
|
||||
|
||||
|
@ -43,7 +43,7 @@ This is a comparison of open-source home screens for Android.
|
|||
|
||||
### Discreet Launcher
|
||||
|
||||
**License:** `GPL-3.0`
|
||||
**License:** `GPL-3.0`
|
||||
[Website](https://vincent-falzon.com/) | [Repository](https://github.com/falzonv/discreet-launcher) | [F-Droid](https://f-droid.org/en/packages/com.vincent_falzon.discreetlauncher/)
|
||||
|
||||
**Main mode of interaction:** `app grid`
|
||||
|
@ -67,7 +67,7 @@ This is a comparison of open-source home screens for Android.
|
|||
|
||||
### Fossify
|
||||
|
||||
**License:** `GPL-3.0`
|
||||
**License:** `GPL-3.0`
|
||||
[Website](https://www.fossify.org/) | [Repository](https://github.com/FossifyOrg/Launcher) | [F-Droid](https://f-droid.org/en/packages/org.fossify.home/)
|
||||
|
||||
**Main mode of interaction:** `app grid`
|
||||
|
@ -91,7 +91,7 @@ This is a comparison of open-source home screens for Android.
|
|||
|
||||
### Lawnchair
|
||||
|
||||
**License:** `Apache License 2.0`
|
||||
**License:** `Apache License 2.0`
|
||||
[Website](https://lawnchair.app/) | [Repository](https://github.com/LawnchairLauncher/lawnchair)
|
||||
|
||||
Seems to be a regular (grid of apps) launcher.
|
||||
|
@ -119,7 +119,7 @@ Seems to be a regular (grid of apps) launcher.
|
|||
|
||||
> **Abandoned**
|
||||
|
||||
**License:** `Apache License 2.0`
|
||||
**License:** `Apache License 2.0`
|
||||
[Repository](https://github.com/amirzaidi/Launcher3)
|
||||
|
||||
**Main mode of interaction:** `App grid`
|
||||
|
@ -141,13 +141,13 @@ Seems to be a regular (grid of apps) launcher.
|
|||
|
||||
---
|
||||
|
||||
## Search based
|
||||
## Search-Based
|
||||
|
||||
### Aster Launcher
|
||||
|
||||
> **Abandoned**
|
||||
|
||||
**License:** `GPL-3.0`
|
||||
>
|
||||
**License:** `GPL-3.0`
|
||||
[Repository](https://github.com/neophtex/AsterLauncher) | [F-Droid](https://f-droid.org/en/packages/com.series.aster.launcher/)
|
||||
|
||||
**Main mode of interaction:** `search`
|
||||
|
@ -171,7 +171,7 @@ Seems to be a regular (grid of apps) launcher.
|
|||
|
||||
### KISS Launcher
|
||||
|
||||
**License:** `GPL-3.0`
|
||||
**License:** `GPL-3.0`
|
||||
[Website](https://kisslauncher.com/) | [Repository](https://github.com/Neamar/KISS) | [F-Droid](https://f-droid.org/packages/fr.neamar.kiss/)
|
||||
|
||||
**Main mode of interaction:** `Search` `Some gestures available`
|
||||
|
@ -194,10 +194,10 @@ Seems to be a regular (grid of apps) launcher.
|
|||
---
|
||||
|
||||
### Lunar Launcher
|
||||
**License:** `GPL-3.0`
|
||||
**License:** `GPL-3.0`
|
||||
[Repository](https://github.com/iamrasel/lunar-launcher) | [F-Droid](https://f-droid.org/en/packages/rasel.lunar.launcher/)
|
||||
|
||||
Even natively supports RSS feeds to homescreen?
|
||||
Even natively supports RSS feeds to the homescreen?
|
||||
|
||||
**Main mode of interaction:** `alphabet scroller`
|
||||
|
||||
|
@ -220,7 +220,7 @@ Even natively supports RSS feeds to homescreen?
|
|||
|
||||
### OLauncher
|
||||
|
||||
**License:** `GPL-3.0`
|
||||
**License:** `GPL-3.0`
|
||||
[Repository](https://github.com/tanujnotes/Olauncher) | [F-Droid](https://f-droid.org/en/packages/app.olauncher/)
|
||||
|
||||
Extremely minimal launcher with lots of forks.
|
||||
|
@ -253,7 +253,7 @@ Extremely minimal launcher with lots of forks.
|
|||
|
||||
### TinyBit Launcher
|
||||
|
||||
**License:** `GPL-3.0`
|
||||
**License:** `GPL-3.0`
|
||||
[Repository](https://github.com/TBog/TBLauncher) | [F-Droid](https://f-droid.org/en/packages/rocks.tbog.tblauncher/)
|
||||
|
||||
**Main mode of interaction:** `search` `some gestures`
|
||||
|
@ -262,7 +262,7 @@ Extremely minimal launcher with lots of forks.
|
|||
|
||||
:white_check_mark: Search: `apps` `contacts` `web` `maps` `playstore` `youtube`
|
||||
:white_check_mark: Search history
|
||||
:white_check_mark:Customizable gestures: `tap` `double tap` `swipe up` `swipe left` `swipe right` `swipe down on left` `swipe down on right`
|
||||
:white_check_mark: Customizable gestures: `tap` `double tap` `swipe up` `swipe left` `swipe right` `swipe down on left` `swipe down on right`
|
||||
:x: Folders
|
||||
:white_check_mark: Tags
|
||||
:white_check_mark: Rename apps
|
||||
|
@ -277,7 +277,7 @@ Extremely minimal launcher with lots of forks.
|
|||
|
||||
### YAM Launcher
|
||||
|
||||
**License:** `MIT`
|
||||
**License:** `MIT`
|
||||
[Repository](https://codeberg.org/ottoptj/yamlauncher) | [F-Droid](https://f-droid.org/en/packages/eu.ottop.yamlauncher/)
|
||||
|
||||
Similar to OLauncher?
|
||||
|
@ -301,11 +301,11 @@ Similar to OLauncher?
|
|||
|
||||
---
|
||||
|
||||
## Directory based
|
||||
## Directory-Based
|
||||
|
||||
### folder launcher
|
||||
|
||||
**License:** `MIT`
|
||||
**License:** `MIT`
|
||||
[Repository](https://github.com/Robby-Blue/SimpleFolderLauncher) | [F-Droid](https://f-droid.org/en/packages/me.robbyblue.mylauncher/)
|
||||
|
||||
**Main mode of interaction:** `directory navigation`
|
||||
|
@ -329,7 +329,7 @@ Similar to OLauncher?
|
|||
|
||||
### Ion Launcher
|
||||
|
||||
**License:** `GPL-3.0`
|
||||
**License:** `GPL-3.0`
|
||||
[Repository](https://codeberg.org/zagura/ion-launcher) | [F-Droid](https://f-droid.org/en/packages/one.zagura.IonLauncher/)
|
||||
|
||||
**Main mode of interaction:** `App grid` `Search`
|
||||
|
@ -337,7 +337,7 @@ Similar to OLauncher?
|
|||
#### Features:
|
||||
|
||||
:warning: Search: `apps` `contacts: buggy/broken`
|
||||
:white_check_mark: Search history `shows recently launched apps`
|
||||
:white_check_mark: Search history: `shows recently launched apps`
|
||||
:x: Customizable gestures
|
||||
:warning: Folders `prebuilt` `not customizable`
|
||||
:x: Tags
|
||||
|
@ -351,11 +351,11 @@ Similar to OLauncher?
|
|||
|
||||
---
|
||||
|
||||
## Gesture based
|
||||
## Gesture-Based
|
||||
|
||||
### Pie Launcher
|
||||
|
||||
**License:** `MIT`
|
||||
**License:** `MIT`
|
||||
[Repository](https://github.com/markusfisch/PieLauncher)
|
||||
|
||||
**Main mode of interaction:** `Selection wheel`
|
||||
|
@ -379,7 +379,7 @@ Similar to OLauncher?
|
|||
|
||||
### µLauncher
|
||||
|
||||
**License:** `MIT`
|
||||
**License:** `MIT`
|
||||
[Repository](https://github.com/jrpie/launcher) | [F-Droid](https://f-droid.org/en/packages/de.jrpie.android.launcher/)
|
||||
|
||||
**Main mode of interaction:** `Gestures` `Search`
|
||||
|
@ -409,22 +409,22 @@ Similar to OLauncher?
|
|||
:x: = Unsupported
|
||||
:warning: = Buggy/Broken; check this launcher's notes above
|
||||
|
||||
| Launcher | Search | Search history | Customizable gestures | Folders | Tags | Rename apps | Widgets | Private space | Work profile | Pinned shortcuts | Icon packs | Material You |
|
||||
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
||||
| [µLauncher](#µLauncher) | :white_check_mark: | :x: | :white_check_mark: | :x: | :x: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: |
|
||||
| [Fossify](#Fossify) | :white_check_mark: | :x: | :x: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :grey_question: | :x: | :white_check_mark: | :x: | :white_check_mark: |
|
||||
| [Lawnchair](#Lawnchair) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :grey_question: | :grey_question: | :x: | :white_check_mark: | :white_check_mark: |
|
||||
| [Rootless Pixel Launcher](#Rootless-Pixel-Launcher) | :white_check_mark: | :x: | :x: | :x: | :x: | :x: | :warning: | :grey_question: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: |
|
||||
| [KISS Launcher](#KISS-Launcher) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :grey_question: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :grey_question: |
|
||||
| [Lunar Launcher](#Lunar-Launcher) | :white_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :grey_question: | :x: | :white_check_mark: | :x: | :x: |
|
||||
| [OLauncher](#OLauncher) | :white_check_mark: | :x: | :white_check_mark: | :x: | :x: | :white_check_mark: | :x: | :grey_question: | :white_check_mark: | :grey_question: | :x: | :grey_question: |
|
||||
| [TinyBit Launcher](#TinyBit-Launcher) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :grey_question: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: |
|
||||
| [YAM Launcher](#YAM-Launcher) | :white_check_mark: | :x: | :white_check_mark: | :x: | :x: | :white_check_mark: | :x: | :grey_question: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: |
|
||||
| [Ion Launcher](#Ion-Launcher) | :warning: | :white_check_mark: | :x: | :warning: | :x: | :white_check_mark: | :x: | :grey_question: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: |
|
||||
| [Pie Launcher](#Pie-Launcher) | :white_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :grey_question: | :white_check_mark: | :white_check_mark: | :x: | :x: |
|
||||
| [folder launcher](#folder-launcher) | :white_check_mark: | :x: | :x: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :grey_question: | :x: | :white_check_mark: | :x: | :x: |
|
||||
| [Discreet Launcher](#Discreet-Launcher) | :white_check_mark: | :x: | :x: | :white_check_mark: | :x: | :white_check_mark: | :x: | :grey_question: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: |
|
||||
| [Aster Launcher](#Aster-Launcher) | :warning: | :x: | :x: | :x: | :x: | :x: | :x: | :grey_question: | :white_check_mark: | :white_check_mark: | :x: | :x: |
|
||||
| Launcher | Search | Search history | Customizable gestures | Folders | Tags | Rename apps | Widgets | Private space | Work profile | Pinned shortcuts | Icon packs | Material You |
|
||||
|------------------------------------------------------|--------------------|--------------------|-----------------------|--------------------|--------------------|--------------------|--------------------|--------------------|--------------------|--------------------|--------------------|--------------------|
|
||||
| [µLauncher](#µLauncher) | :white_check_mark: | :x: | :white_check_mark: | :x: | :x: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: |
|
||||
| [Fossify](#Fossify) | :white_check_mark: | :x: | :x: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :grey_question: | :x: | :white_check_mark: | :x: | :white_check_mark: |
|
||||
| [Lawnchair](#Lawnchair) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :grey_question: | :grey_question: | :x: | :white_check_mark: | :white_check_mark: |
|
||||
| [Rootless Pixel Launcher](#Rootless-Pixel-Launcher) | :white_check_mark: | :x: | :x: | :x: | :x: | :x: | :warning: | :grey_question: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: |
|
||||
| [KISS Launcher](#KISS-Launcher) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :grey_question: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :grey_question: |
|
||||
| [Lunar Launcher](#Lunar-Launcher) | :white_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :grey_question: | :x: | :white_check_mark: | :x: | :x: |
|
||||
| [OLauncher](#OLauncher) | :white_check_mark: | :x: | :white_check_mark: | :x: | :x: | :white_check_mark: | :x: | :grey_question: | :white_check_mark: | :grey_question: | :x: | :grey_question: |
|
||||
| [TinyBit Launcher](#TinyBit-Launcher) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :grey_question: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: |
|
||||
| [YAM Launcher](#YAM-Launcher) | :white_check_mark: | :x: | :white_check_mark: | :x: | :x: | :white_check_mark: | :x: | :grey_question: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: |
|
||||
| [Ion Launcher](#Ion-Launcher) | :warning: | :white_check_mark: | :x: | :warning: | :x: | :white_check_mark: | :x: | :grey_question: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: |
|
||||
| [Pie Launcher](#Pie-Launcher) | :white_check_mark: | :x: | :x: | :x: | :x: | :x: | :x: | :grey_question: | :white_check_mark: | :white_check_mark: | :x: | :x: |
|
||||
| [folder launcher](#folder-launcher) | :white_check_mark: | :x: | :x: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :grey_question: | :x: | :white_check_mark: | :x: | :x: |
|
||||
| [Discreet Launcher](#Discreet-Launcher) | :white_check_mark: | :x: | :x: | :white_check_mark: | :x: | :white_check_mark: | :x: | :grey_question: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: |
|
||||
| [Aster Launcher](#Aster-Launcher) | :warning: | :x: | :x: | :x: | :x: | :x: | :x: | :grey_question: | :white_check_mark: | :white_check_mark: | :x: | :x: |
|
||||
|
||||
<!-- Automating checkboxes for the table
|
||||
|
||||
|
|
|
@ -10,14 +10,14 @@ Besides regular apps, app drawers also show [pinned shortcuts](https://developer
|
|||
μLauncher treats apps and shortcuts in the same way.
|
||||
|
||||
The idea of the app drawer is to search for apps using the keyboard.
|
||||
By default[^2] an app is launched automatically once it is the only app matching the query.
|
||||
This can be prevented by typing space.
|
||||
Usually only two or three characters are needed which is much faster than scrolling to find an app.
|
||||
By default[^2], an app is launched automatically once it is the only app matching the query.
|
||||
This can be prevented by typing a space.
|
||||
Usually, only two or three characters are needed, which is much faster than scrolling to find an app.
|
||||
|
||||
[^1]: A pinned shortcut is created for example when pinning a website to the home screen.
|
||||
[^1]: A pinned shortcut is created, for example, when pinning a website to the home screen.
|
||||
[^2]: There are [several settings](/docs/settings/#functionality) available to modify the behavior.
|
||||
|
||||
When long clicking an app, additional options are shown:
|
||||
When long-pressing an app, additional options are shown:
|
||||
* Rename the app
|
||||
* Add to / remove from Favorites: Adds the app to the [Favorite Apps](#favorite-apps) list or removes it from there.
|
||||
* Hide / Show: This hides the app from all drawers (except from [Hidden Apps](#hidden-apps)) or makes it visible again if it was hidden.
|
||||
|
@ -27,28 +27,26 @@ When long clicking an app, additional options are shown:
|
|||
## All Apps
|
||||
|
||||
This lists all apps except hidden apps.
|
||||
By default it is bound to `Swipe up`.
|
||||
By default, it is bound to `Swipe up`.
|
||||
|
||||
## Favorite Apps
|
||||
|
||||
Only shows favorite apps.
|
||||
Pressing the star icon on the bottom right of any app drawer toggles whether
|
||||
only favorite apps should be shown.
|
||||
Additionally the `Favorite Apps` action can be used to launch this drawer directly.
|
||||
By default it is bound to `Swipe up (left edge)`.
|
||||
Pressing the star icon on the bottom right of any app drawer toggles whether only favorite apps should be shown.
|
||||
Additionally, the `Favorite Apps` action can be used to launch this drawer directly.
|
||||
By default, it is bound to `Swipe up (left edge)`.
|
||||
|
||||
## Private Space
|
||||
|
||||
When [private space](/docs/profiles/#private-space) is available, this drawer
|
||||
shows only apps from the private space.
|
||||
It can be opened using the `Private Space` action.
|
||||
If the private space is locked, instead of showing the list the unlock dialog is shown.
|
||||
If the private space is locked, instead of showing the list, the unlock dialog is shown.
|
||||
|
||||
By default, apps from the private space are shown in All Apps as well,
|
||||
however this is [configurable](/docs/settings/#hide-private-space-from-app-list).
|
||||
By default, apps from the private space are shown in All Apps as well; however, this is [configurable](/docs/settings/#hide-private-space-from-app-list).
|
||||
|
||||
## Hidden Apps
|
||||
|
||||
This list shows hidden apps.
|
||||
It is only accessible through the settings.
|
||||
The feature is intended to be used only for apps which are not needed at all but [can not be uninstalled](https://en.wikipedia.org/wiki/Software_bloat#Bloatware).
|
||||
The feature is intended to be used only for apps that are not needed at all but [can not be uninstalled](https://en.wikipedia.org/wiki/Software_bloat#Bloatware).
|
||||
|
|
|
@ -17,7 +17,7 @@ cd Launcher
|
|||
./gradlew assembleDefaultRelease
|
||||
```
|
||||
|
||||
This will create an apk file at `app/build/outputs/apk/default/release/app-default-release-unsigned.apk`.
|
||||
This will create an APK file at `app/build/outputs/apk/default/release/app-default-release-unsigned.apk`.
|
||||
|
||||
Note that you need to sign it:
|
||||
|
||||
|
@ -50,5 +50,5 @@ The [CI pipeline](https://github.com/jrpie/Launcher/actions) automatically creat
|
|||
|
||||
{{% hint warning %}}
|
||||
Note: These builds are not signed.
|
||||
They are in built in debug mode and only suitable for testing.
|
||||
They are built in debug mode and are only suitable for testing.
|
||||
{{% /hint %}}
|
||||
|
|
|
@ -8,12 +8,12 @@ title = 'Differences to the original Launcher'
|
|||
Here is an incomplete list of changes:
|
||||
<!--The last commit of the original project is [340ee731](https://github.com/jrpie/launcher/commit/340ee7315293b028c060638e058516435bca296a)
|
||||
The first commit of µLauncher is [cc2e7710](https://github.com/jrpie/launcher/commit/cc2e7710c824549c367d97a81a1646d27c6c8993),
|
||||
which at the time was still intended as a patch for launcher.
|
||||
which at the time was still intended as a patch for the launcher.
|
||||
The decision to create a hard fork was made two years later.-->
|
||||
|
||||
- Additional gestures:
|
||||
- Back
|
||||
- V,Λ,<,>
|
||||
- V, Λ, <, >
|
||||
- Edge gestures: There is a setting to allow distinguishing swiping at the edges of the screen from swiping in the center.
|
||||
|
||||
- Compatible with [work profile](https://www.android.com/enterprise/work-profile/), so apps like [Shelter](https://gitea.angry.im/PeterCxy/Shelter) can be used.
|
||||
|
@ -35,21 +35,21 @@ The decision to create a hard fork was made two years later.-->
|
|||
- This app uses the system wallpaper instead of a custom solution.
|
||||
- The font has been changed to [Hack][hack-font], other fonts can be selected.
|
||||
- Font Awesome Icons were replaced by Material icons.
|
||||
- The gear button on the home screen was removed. A smaller button is show at the top right when necessary.
|
||||
- The gear button on the home screen was removed. A smaller button is shown at the top right when necessary.
|
||||
|
||||
## Search
|
||||
|
||||
- The search algorithm was modified to prefer matches at the beginning of the app name, i.e. when searching for `"te"`, `"termux"` is sorted before `"notes"`.
|
||||
- The search algorithm was modified to prefer matches at the beginning of the app name, i.e., when searching for `"te"`, `"termux"` is sorted before `"notes"`.
|
||||
- The search bar was moved to the bottom of the screen.
|
||||
|
||||
## Technical
|
||||
|
||||
- Improved gesture detection.
|
||||
- Different apps set as default.
|
||||
- Different apps are set as the defaults.
|
||||
- Package name was changed to `de.jrpie.android.launcher` to avoid clashing with the original app.
|
||||
- Dropped support for API < 21 (i.e. pre Lollypop)
|
||||
- Fixed some bugs
|
||||
- Some refactoring
|
||||
- Dropped support for API < 21 (i.e., pre Lollypop).
|
||||
- Fixed some bugs.
|
||||
- Some refactoring.
|
||||
|
||||
The complete list of changes can be viewed [here](https://github.com/jrpie/launcher/compare/340ee731...master).
|
||||
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
There are several ways to contribute to this app:
|
||||
* You can add or improve [translations][toolate].
|
||||
<br><img src="https://toolate.othing.xyz/widget/jrpie-launcher/launcher/horizontal-auto.svg" alt="translation status">
|
||||
* If you found a bug or have an idea for a new feature you can [join the chat][chat] or open an [issue][issues].
|
||||
* If you found a bug or have an idea for a new feature, you can [join the chat][chat] or open an [issue][issues].
|
||||
|
||||
> Please note that I work on this project in my free time. Thus I might not respond immediately and not all ideas will be implemented.
|
||||
> Please note that I work on this project in my free time. Thus, I might not respond immediately, and not all ideas will be implemented.
|
||||
|
||||
* You can implement a new feature yourself:
|
||||
- Create a [fork][fork] of this repository.
|
||||
|
@ -18,7 +18,7 @@ There are several ways to contribute to this app:
|
|||
- Open a new pull request.
|
||||
|
||||
|
||||
See [here](/docs/build) for instructions how to build this project.
|
||||
See [here](/docs/build) for instructions on how to build this project.
|
||||
The [CI pipeline](https://github.com/jrpie/Launcher/actions) automatically creates debug builds.
|
||||
|
||||
|
||||
|
|
|
@ -7,14 +7,14 @@
|
|||
Tweaks and customizations can be made from within the settings page.
|
||||
The settings can be opened by binding the Settings action to a gesture (this is especially useful when configuring μLauncher for the first time) or from the settings icon in the app drawer.[^1]
|
||||
|
||||
[^1]: i.e. the 'All Apps', 'Favorite Apps' and 'Private Space' views.
|
||||
[^1]: i.e., the 'All Apps', 'Favorite Apps', and 'Private Space' views.
|
||||
|
||||
## Appearance
|
||||
|
||||
### Choose a wallpaper
|
||||
|
||||
This triggers Android's mechanism to change the wallpaper using a photos app, file explorer, or native wallpaper setting app.
|
||||
µLauncher uses the system-wide wallpaper, i.e. this change also affects other launchers.
|
||||
This triggers Android's mechanism to change the wallpaper using a photo app, file explorer, or native wallpaper setting app.
|
||||
µLauncher uses the system-wide wallpaper, i.e., this change also affects other launchers.
|
||||
|
||||
### Font (in-app font)
|
||||
|
||||
|
@ -28,7 +28,7 @@ Set the font used within the app settings. This setting does not affect the date
|
|||
|
||||
**type:** `toggle`
|
||||
|
||||
### Background (app list and setting)
|
||||
### Background (app list and settings)
|
||||
|
||||
Defines which background should be used in app drawers, settings, etc.
|
||||
to increase legibility.
|
||||
|
@ -37,7 +37,7 @@ to increase legibility.
|
|||
* `Blur` tries to blur the wallpaper. This is not possible on all devices. Some older devices don't support the operation. Also blur can be temporarily unavailable when the device is in power saving mode. In these case, `Dim` is used as a fallback.
|
||||
* `Solid` sets the background to a solid color (depending on the color theme). For the light theme only this option is available.
|
||||
|
||||
On the home screen and on widget panels the wallpaper is always shown unmodified.
|
||||
On the home screen and widget panels, the wallpaper is always shown unmodified.
|
||||
|
||||
**type:** `dropdown`
|
||||
|
||||
|
@ -51,7 +51,7 @@ Remove coloring from all app icons. Can help decrease visual stimulus when enabl
|
|||
|
||||
## Date & Time
|
||||
|
||||
These settings effect the clock shown on the home screen (or on widget panels).
|
||||
These settings affect the clock shown on the home screen (or on widget panels).
|
||||
If the clock is removed, the settings are not used.
|
||||
|
||||
### Font (home screen)
|
||||
|
@ -66,12 +66,12 @@ Set the home screen font for date and time. This setting does not affect the fon
|
|||
|
||||
Set the color for the home screen date and time.
|
||||
|
||||
Accepts an 6 digit RGB or or 8 digit ARGB color code characters.[^2]
|
||||
Note that on Android the ARGB color format is used, i.e. the alpha component is specified first.
|
||||
Accepts a 6-digit RGB or 8-digit ARGB color code characters.[^2]
|
||||
Note that on Android, the ARGB color format is used, i.e., the alpha component is specified first.
|
||||
This differs from the more common RGBA, which is used in web development.
|
||||
|
||||
|
||||
[^2]: More precisely, everything that is vaild input for [parseColor](https://developer.android.com/reference/android/graphics/Color#parseColor(java.lang.String)) can be used.
|
||||
[^2]: More precisely, everything that is valid input for [parseColor](https://developer.android.com/reference/android/graphics/Color#parseColor(java.lang.String)) can be used.
|
||||
|
||||
|
||||
**type:** `ARGB`
|
||||
|
@ -110,7 +110,7 @@ Place the current time above the current date on the home screen.
|
|||
|
||||
### Launch search results
|
||||
|
||||
Launches any app that matches user keyboard input when no other apps match.
|
||||
Launches any app that matches the user's keyboard input when no other apps match.
|
||||
|
||||
As you type inside the app drawer, the app narrows down the list of apps shown based on the app title matching your text input.
|
||||
With the 'launch search results' setting, once only one matching app remains, it is launched immediately.
|
||||
|
@ -156,7 +156,7 @@ Change how large a margin is used for detecting edge gestures. Shows the edge ma
|
|||
|
||||
### Choose method for locking the screen
|
||||
|
||||
There are two methods to lock the screen and unfortunately both have downsides.
|
||||
There are two methods to lock the screen, and unfortunately, both have downsides.
|
||||
|
||||
1. **`Device Admin`**
|
||||
|
||||
|
@ -166,7 +166,7 @@ There are two methods to lock the screen and unfortunately both have downsides.
|
|||
|
||||
- Requires excessive privileges.
|
||||
- μLauncher will use those privileges *only* for locking the screen.
|
||||
- As a rule of thumb, it is [not recommended](https://android.stackexchange.com/questions/248171/is-it-safe-to-give-accessibility-permission-to-an-app) to grant access to accessibility services on a random app. Always review the [source code](https://github.com/jrpie/Launcher) before granting accessibility permissions so you familiarize yourself with what the code might do.
|
||||
- As a rule of thumb, it is [not recommended](https://android.stackexchange.com/questions/248171/is-it-safe-to-give-accessibility-permission-to-an-app) to grant access to accessibility services to a random app. Always review the [source code](https://github.com/jrpie/Launcher) before granting accessibility permissions so you can familiarize yourself with what the code might do.
|
||||
- On some devices, the start-up PIN will no longer be used for encrypting data after activating an accessibility service.
|
||||
- This can be [reactivated](https://issuetracker.google.com/issues/37010136#comment36) afterwards.
|
||||
|
||||
|
@ -184,21 +184,21 @@ Open an app drawer containing only hidden apps.
|
|||
|
||||
Remove certain apps from the app drawer if they are already accessible via a gesture.
|
||||
|
||||
Reduces redundancy and tidies up app drawer.
|
||||
Reduces redundancy and tidies up the app drawer.
|
||||
|
||||
**type:** `toggle`
|
||||
|
||||
### Hide paused apps
|
||||
|
||||
Remove paused apps from the app drawer.
|
||||
For example an app belonging to the work profile is paused when the work profile is inactive.
|
||||
For example, an app belonging to the work profile is paused when the work profile is inactive.
|
||||
|
||||
**type:** `toggle`
|
||||
|
||||
### Hide private space from app list
|
||||
|
||||
Remove private space from app drawer.
|
||||
Private space apps can be accessed using a separate app drawer which can be opened with the Private Space action.
|
||||
Remove private space from the app drawer.
|
||||
Private space apps can be accessed using a separate app drawer, which can be opened with the Private Space action.
|
||||
|
||||
**type:** `toggle`
|
||||
|
||||
|
@ -240,6 +240,6 @@ Remove the top status bar from the home screen.
|
|||
|
||||
### Hide navigation bar
|
||||
|
||||
Remove the navigation bar from the home screen. Enabling this setting may make it difficult to use the device if gestures are not setup properly.
|
||||
Remove the navigation bar from the home screen. Enabling this setting may make it difficult to use the device if gestures are not set up properly.
|
||||
|
||||
**type:** `toggle`
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
μLauncher allows to add [app widgets](https://developer.android.com/develop/ui/views/appwidgets/overview) to the home screen and to widget panels.
|
||||
|
||||
Widgets can be added, moved, removed and configured in `Settings > Manage Widgets`.
|
||||
Widgets can be added, moved, removed, and configured in `Settings > Manage Widgets`.
|
||||
|
||||
It is configurable whether or not interaction with a widget should be enabled.
|
||||
|
||||
|
@ -17,7 +17,7 @@ However, μLauncher [gestures](/docs/actions-and-gestures/) can not be execute
|
|||
* If interaction is disabled, the widget does not respond to any touch events.
|
||||
This is recommended when using a widget only to display information.
|
||||
|
||||
μLauncher's clock behaves similar as an app widget and can be managed in the same way.[^1]
|
||||
μLauncher's clock behaves similarly to an app widget and can be managed in the same way.[^1]
|
||||
|
||||
[^1]: However, it is technically not an app widget and cannot be used with other launchers.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue