The goal of this project is to build a feature complete settings app for the Ubuntu desktop (GNOME, gtk and gnome-shell) with the Flutter UI toolkit.
Light | Dark |
---|---|
![]() |
![]() |
Mentionable packages that we use and want to thank are:
- gsettings.dart
- bluez.dart
- nm.dart
- yaru.dart
- yaru_icons.dart
- yaru_widgets.dart
- dbus.dart
- upower.dart
- udisks.dart
- flex_color_picker
Currently the app is in a very raw alpha state and pages are still missing. However if you want you can download, extract and then run alpha releases from the releases page.
The following steps are needed to run the app from the source code.
Either with
sudo snap install flutter --classic
Or with
sudo apt install git curl cmake meson make clang libgtk-3-dev pkg-config
mkdir ~/development
cd ~/development
git clone https://github.com/flutter/flutter.git -b master
echo 'export PATH="$PATH:$HOME/development/flutter/bin"' >> ~/.bashrc
source ~/.bashrc
- use real yaru icons - thanks to @Jupi007
- responsive layout
- MVVM software pattern - thanks to @jpnurmi
- search
- WIFI page - WIP
- Ethernet page
- Cellular Network page
- Bluetooth page - WIP
- Wallpaper page
- Appearance page
- Multi-Tasking page
- Notifications page
- Search page
- Apps page (forward to snap-store)
- Privacy/Security page - WIP
- Online Accounts page
- Sound page - WIP
- Power page
- Displays page - WIP
- Mouse and touchpad page
- Keyboard shortcuts page - WIP
- Printers page - WIP
- Removable Media page
- Color page
- Region and language page
- Accessability page
- Users page
- Preferred apps page
- Date and time page
- Wacom page
- Info page
This project really needs help to finish the last pages and also in the future when the GNOME desktop changes. Any help is welcome!
However for new contributors please follow those rules:
- do not over complicate things
- stick to the service, viewmodel, view approach
- as long as we stick to the provider package try to avoid context.watch as much as possible and always prefer context.select
- as long as we stick to the provider package try to avoid provider calls as much as possible and prefer to forward callbacks and values where you can
- do not split files with the part keyword
- do not shadow function definitions with typedef
- use absolute imports