Coder Social home page Coder Social logo

aspinwall-launcher's Introduction

Aspinwall Launcher Translation status

Smart display-esque launcher for mobile Linux

Launcher screenshot

About

The Aspinwall Launcher is a launcher for Linux devices. It shows the current time and date, as well as widgets selected by the user.

Widgets are written in Python and can be easily integrated with existing libraries.

Installing

The project can be built and installed with Meson:

$ meson . build
$ meson compile -C build
$ sudo meson install -C build

For development purposes, the launcher can be started using the provided ./run script.

Before you can use the ./run-* scripts, you will need to install Meson.

Requirements

Runtime

  • Python >= 3.8
  • PyGObject
  • GTK4 >= 4.8.0
  • libadwaita >= 1.2.0
  • GLib

Build

These are also needed if you're planning to use the provided run scripts.

  • meson
  • glib2-dev or equivalent (needed for glib-compile-schemas)
  • desktop-file-utils (needed for update-desktop-database)

Contributing

See CONTRIBUTING.md.

We use Hosted Weblate to manage translations. Built-in widget translations are split to their own sub-components; the translations can be found in the Aspinwall Launcher component.

aspinwall-launcher's People

Contributors

comradekingu avatar knuxify avatar weblate avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

weblate

aspinwall-launcher's Issues

0.1.0 TODO

This issue outlines the tasks planned for inclusion in the 0.1.0 release. Previous TODO: #1

Do not report issues under this list; use the "New issue" option instead.

Launcher

  • Better accessibility (use accessibility labels, etc.) (035cafe addresses most of my initial concern by adding tooltips for buttons; this isn't really an actionable task, further improvements will probably be postponed unless someone can suggest any changes)
  • Add "unfocused" mode which hides the side buttons (0af8023)
  • Clock size switch (ec7283d)
  • Show widget editing button when hovering a mouse cursor over a widget (96ea477)
  • Decide what to do with GNOME background support; improve it or drop it? (dropped in 78f34e5)
  • Consider using a ListBox/ListView for the widget display? (97ad6f5)
  • Use GridView for app chooser (a85f7f8)
    • Fix leak when creating long-press gesture (or move the "favorite app" settings somewhere else entirely) (probably out of our control; 0404c8d makes it a bit better)
    • Also make the background look nicer, since it's a little awkward in its current form
  • Add PM/AM indicator
  • Make clicking outside the selected widget undo the selection (b6a042f)
  • Fix widget drag-and-drop on touchscreens (just got rid of it instead)
  • Redesign widget add dialog (7fed75b)
    • More feedback when adding a widget (scroll to the bottom of the widget list, show a notification)
  • Fix buggy behavior in widget management mode (8039604)
  • Add option to quit launcher (6c6c29e)
  • Add option to change widget refresh rate in settings (33bb0fe)
  • Replace most counter threads with a central clock-based system (the "tick" system as seen in c4b45b8) (f0b5fea)

Settings

  • Clean up code

Widgets

  • Weather (0f37a33)
  • To-do list (ed8e511)
  • World clock (d7efdc7)
  • Calendar
  • Improve Notepad widget (suggested idea - "daily log" with a daily note rotation and save functionality)
  • Add API for using .ui files
  • Add refresh button to widget header for widgets that can utilize it
  • Add nicer error messages on widget exceptions (0175e4d)
  • Add guide on packaging widgets

Low-priority

  • "No distractions" theme - pure black background, white text, only a few select widgets (might be postponed, but it's an idea to consider)
  • Figure out how to split the idle mode/slideshow switch frequency combobox entries; in some languages, these cannot be translated the same, although they are the same in English
  • Feed reader widget
  • Quick shortcuts/app launcher widget
  • Figure out how to deal with translations in widget .ui files?

Tests also need some major improvements.

First release TODO

This issue outlines the work that has to be done before the first release can be finished.

Launcher

  • Configuration file
    • Consider moving it to GSettings? (0ef3a71)
    • Add option for changing how the date and time are displayed (280f880)
  • Widget management
    • Adding widgets
    • Removing widgets
    • Moving widgets (2ddddeb)
    • Refreshing widgets (+ autorefresh) (545acc9)
    • Widget configuration menu (per-widget) (4c8fc65)
    • Widget management mode (6e4afab)
  • App drawer (58c4063)
    • Add categories (probably won't bother with this)
    • Add favorites (ee22204)
  • Desktop backgrounds (9cd2207)
    • Dimming in widget editing mode
    • Wallpaper preview in settings (3efc26b)
    • Slideshows (5805ba3)
      • Drag-and-drop for wallpapers in settings (b36ffdd)
    • Wire up other fit options (37c056e)
    • Select available wallpaper by default (currently it hard-codes a GNOME wallpaper) (93cbfa9)
  • Dark mode (f6a06d6)
  • Switch to AdwCarousel on vertical screens (0bad3c4, had to use AdwLeaflet; might need some extra gesture tweaks)
  • Rewrite "Add widgets" dialog to use listviews (a ListBox might work fine too) (414ef69)
    • Might consider taking a look at actual listviews though, unless search can be done in a listbox (moved to listview, and added search: 526492a)
  • Global custom color shorthands instead of relying on the system theme (ffb461c, fe9cf6a)
  • Only allow one launcher window to be open at a time (c77dfe1)
  • Launcher settings (e92a8a2)
  • About Aspinwall menu (5c9f049)
  • Hide favorites in the app chooser when there are none (f4402e4)
  • Status pages for empty search results (app chooser, widget chooser) (38122ce, a84a6c6)
  • "Set to default" option for time format settings (1600211)

Code quality

  • Make AdwWidget use templates (we're not inheriting from it anymore) (fca089a)
  • Figure out if it's possible to viably move factories/models to UI files (IMO this is not needed, keeping it in-code makes it cleaner + easier to use with our custom objects (in the case of widgets for the widget chooser, for example))
  • Add tests (df278f5, failed back then but works now that we switched to Debian in ac59e56)

Bugfixes

  • Fix memory leak on app chooser menu re-opening (look into profiling tools?) (243b5c7)
  • Fix wallpaper preview memory leak (ec8820d)
  • Fix crash when exiting search mode in preferences (806ebb7)
  • Change background when it's removed from available wallpapers (cb2df76)
  • Settings not appearing on first launch? Might be related to the lack of a default wallpaper, though. (Can confirm this no longer happens.)
  • Fix drag-and-drop on touchscreens (might be a GTK issue?)
  • Fix memory leak when searching for apps (flowbox issue; I'll try to investigate this if I find the time, otherwise it'll have to be postponed.)

Meta

Once the first release is finished:

  • Package for Alpine Linux/postmarketOS
  • Package for Manjaro Mobile/Arch
  • Package for Mobian

Postponed for next release

  • OLED mode (black background, white text); I think what I'm going at here is more of a "pure black" theme, which could be done, but would require extra styling. As for actual OLED features and general convenience features like burn-in prevention, etc - slideshow wallpapers should help out with this.
  • Proper support for inheriting backgrounds from GNOME - currently it only works for simple images, but fails on .xml files ("slideshow" wallpapers), and doesn't respect light/dark settings. Might end up removing support for these wallpapers entirely, though.
  • (ERRATA) Add custom translation loader workaround for Alpine (might solve this one on Alpine's side rather than trying to hack it into Aspinwall... seems like what we'll need is a separate locale library that can access system settings, and prefferably replace the _locale module in Python without having to adapt code)
  • Clean up code for the launcher settings (there should be a way to bind the switches directly to the config options in some cases, in others we can make reusable template functions)
  • Improve tests, maybe? Currently their main purpose is to quickly check if the launcher even works or not, which is pretty handy in figuring out if new commits don't have obvious issues, and makes packaging far easier. It would be nice to have more comprehensive tests though, especially for the launcher settings and shell, and various edge cases + things that we normally wouldn't be able to test otherwise.
  • Use listboxes or other list widgets for the widgetbox; our current solution is a bit hacky, although it works relatively well. My main concern is lack of scrolling on widget drag-and-drop, as well as potential issues with keyboard support.
  • Show widget editing button on hover
  • Focused/unfocused mode (show widget add button when the window is active, hide after ~1min of inactivity; during inactivity lower widget opacity)
  • Clock size toggle
  • Make a logo... or find someone who can
  • Accessibility improvements

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.