Skip to content

Conversation

@Araon
Copy link

@Araon Araon commented Dec 21, 2025

Description

Adds the ability for users to customize the home screen font, supporting both system fonts and custom fonts for personalization while maintaining Olauncher's minimal aesthetic.

What's New

  • Font selection in Settings (under text size option)

  • 5 system fonts:

    • Sans Serif
    • Sans Serif Light (default)
    • Sans Serif Medium
    • Serif
    • Monospace
  • 5 custom bundled fonts:

    • Quicksand
    • Comfortaa
    • Poppins
    • Space Mono
    • Josefin Sans
  • Applied to: home apps, clock, date, and screen time display

Screenshots

Settings Font Selection Default Font
Custom Font 1 Custom Font 2 Custom Font 3

Implementation Details

Files Changed

File Changes
Constants.kt Added Font object with font name constants
Prefs.kt Added HOME_FONT preference storage
Utils.kt Added getTypeface() helper with caching
HomeFragment.kt Added applyHomeFont() to apply fonts
SettingsFragment.kt Font selection handling and UI logic
fragment_settings.xml Font selection UI elements
strings.xml Font name string resources
assets/fonts/ 5 custom TTF font files (~350KB total)

Testing Done

  • Font switching works correctly
  • Fonts persist after app restart
  • No performance impact from font loading (cached)
  • All fonts display correctly on home screen
  • Clock, date, and screen time respect font setting
  • Build completes without errors

Font Licensing

All custom fonts are from Google Fonts and licensed under the SIL Open Font License 1.1 (OFL-1.1):
License attribution included in assets/fonts/FONTS_LICENSE.txt

Disclosure

This PR was developed with AI assistance (Claude) for:

  • Understanding the existing codebase structure
  • Formatting the PR description
  • Verifying font licensing compliance

All code changes were reviewed and tested manually.

- Add Font constants in Constants.kt (sans-serif, sans-serif-light, sans-serif-medium, serif, monospace)
- Add homeFont preference in Prefs.kt
- Add getTypeface() helper function in Utils.kt with caching support
- Apply selected font to app name TextViews in HomeFragment.kt
- Fix: Call applyFontToAppNames() for all home app counts (not just 8)
- Add font selection UI in fragment_settings.xml (after text size selector)
- Add font selection logic in SettingsFragment.kt with null-safe bindings
- Add font-related string resources in strings.xml
Added 5 custom fonts from Google Fonts:
- Quicksand: Rounded, modern, friendly
- Comfortaa: Geometric, rounded, elegant
- Poppins: Clean, geometric sans-serif
- Space Mono: Stylish fixed-width, tech feel
- Josefin Sans: Elegant, vintage-modern

These fonts provide more distinctive options beyond the standard
system fonts, allowing users to personalize their home screen.
Extended font selection to also apply to:
- Clock display
- Date display
- Screen time indicator

This creates a consistent visual experience across the entire
home screen when users select a custom font.
@tanujnotes
Copy link
Owner

I have no plans to add any new features for now. You can create a PR in any of the popular Olauncher forks or create a new fork with additional features yourself.

@Araon
Copy link
Author

Araon commented Dec 26, 2025

Sure! Thanks for letting me know.

@tanujnotes tanujnotes closed this Dec 27, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants