Pangolin Desktop UI shell, designed for dahliaOS, written in Flutter.

Last update: Aug 11, 2022

WebsiteDiscordReleasesDonateDocumentation

Pangolin Desktop UI Tweet

Build and Deploy to Web Locale Generator Website Crowdin GitHub

  • Pangolin UI is a Desktop shell for dahliaOS, written in Flutter, runs on Linux and Zircon
  • Pangolin was named after a shelled animal like the Armadillo UI
  • Pangolin Desktop is based on the deprecated Capybara shell, with a custom window management system built from the ground up
  • You can check it online here!

Pangolin Desktop calculator app and quick-settings menu.

Pangolin Desktop app launcher screen.

Build Pangolin Desktop

If you're interested in building Pangolin, you can refer to Building and Running Pangolin

For the submodules, use

git submodule update --init --recursive && cd backend && git checkout main

Contribute

If you're wondering how to contribute to the project, please refer to CONTRIBUTING.md

Translate

If you're interested in translating Pangolin, please click this link!

The link above points to Crowdin which we use for translations so please use that for submitting translations!

If your language is not added, let us know and we'll add it!

License

Copyright @ 2019-2021 - The dahliaOS Authors - [email protected]

This project is licensed under the Apache 2.0 license

GitHub

https://github.com/dahliaOS/pangolin_desktop
Comments
  • 1. supportsWeb property on Apps

    Description

    Some apps aren't available on the web, such as the Terminal and Files Manager. This PR adds a property that enable apps to tell if they can run on the web or not. If not, they won't show up

    Depends on https://github.com/dahliaOS/backend/pull/5 to be landed first

    Type of change

    Please tick the relevant option by putting an X inside the bracket

    • [x] Bug fix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] This change requires a documentation update

    Checklist:

    • [x] My code follows the guidelines of this project
    • [x] I have performed a self-review of my own code
    • [ ] I have commented my code, particularly in hard-to-understand areas
    • [x] I have made corresponding changes to the documentation
    • [x] My changes generate no new warnings
    • [x] All current GitHub actions pass
    • [ ] Any dependent changes have been merged and published in downstream modules
    • [x] I have checked my code and corrected any misspellings
    • [x] I have read the CONTRIBUTING document
    Reviewed by bdlukaa at 2021-08-21 18:39
  • 2. adds Easy_locale as main locale/translation manager

    • Adds: xml, easy_locale as dependences

    • Replace locale delegates for delegates provided by easy_locale pkg

    • [x] New feature (non-breaking change which adds functionality)

    • [x] This change requires a documentation update

    How was this tested?

    Test Configuration:

    • dahliaOS Build number: 201004
    • Hardware:
    • VM:

    Checklist:

    • [x] My code follows the style guidelines of this project
    • [x] I have performed a self-review of my own code
    • [x] I have made corresponding changes to the documentation
    • [x] My changes generate no new warnings
    • [x] I have checked my code and corrected any misspellings
    Reviewed by allansrc at 2020-11-19 18:31
  • 3. Improved Quicksettings Look and Feel

    Hi, I tried to improve the look and feel of the quicksettings.

    I added a bit padding on the sides, increased the border radius, height and grid size and added bouncing physics. I also moved the featureNotImplemented dialog into its own function to recude unnecessary code. I changed the slider to two sliders, one for brightness and one for volume and made them slidable (but not actually working)

    And btw it looks like I changed much in main.dart but thats only because I auto formatted the code

    Preview: image

    Reviewed by larsb24 at 2020-06-21 17:30
  • 4. Running on MAC and Windows

    Can someone let me know if this is useful.

    I was curious what the UX experience is to run it on a Desktop. Its actually very useful, because you can run it in full screen, and just use the apps and forget about the real desktop behind it.

    also its quick for working on the app because go-flutter has hot reload.

    I only had to make minor mods to the main.dart file and add a main_desktop.dart file and break out the "MyApp" class to a new file called mainapp.dart, and get the new main.dart and main_desktop.dart to call it.

    https://www.youtube.com/watch?v=epoNDPnGjU0&feature=youtu.be

    • its funny how the Text Editor gets a bit confused when i try to select text.

    Makefile:

    # https://github.com/dahlia-os/pangolin-desktop
    
    # The main dev
    # [email protected]
    
    # wow it works on Mobiles
    
    LIB_NAME=pangolin-desktop
    LIB=github.com/dahlia-os/$(LIB_NAME)
    LIB_BRANCH=master
    LIB_FSPATH=$(GOPATH)/src/$(LIB)
    
    print:
    	@echo $(LIB_NAME)
    	@echo $(LIB)
    	@echo $(LIB_BRANCH)
    	@echo $(LIB_FSPATH)
    
    dep:
    	# git clone
    	mkdir -p $(LIB_FSPATH)
    	cd $(LIB_FSPATH) && cd .. && rm -rf $(NAME) && git clone https://$(LIB).git
    	cd $(LIB_FSPATH) && git checkout $(LIB_BRANCH)
    dep-clean:
    	rm -rf $(LIB_FSPATH)
    code:
    	code $(LIB_FSPATH)
    flu-dep:
    	cd $(LIB_FSPATH) && flutter packages get
    hov-dep:
    	go get -u github.com/go-flutter-desktop/hover
    	go get -u github.com/go-flutter-desktop/go-flutter
    
    mob-run:
    	cd $(LIB_FSPATH) && flutter run -d all
    desk-init:
    	# need to manually fix main.dart first DONE
    	cd $(LIB_FSPATH) && hover init $(LIB)
    desk-init-clean:
    	rm -rf $(LIB_FSPATH)/desktop
    desk-buildrun:
    	cd $(LIB_FSPATH) && hover build
    	open $(LIB_FSPATH)/desktop/build/outputs/darwin/Pangolin
    desk-run:
    	cd $(LIB_FSPATH) && hover run
    
    
    
    
    Reviewed by joeblew99 at 2019-08-01 23:23
  • 5. Update readme with new images of the desktop

    This is to show what the current desktop looks like, as the UI overhaul has drastically changed the overall appearance. So it would be a good idea to update the readme images to show the current state of the desktop.\

    Images come from the dahlia documentation website, it just links to them.

    Reviewed by EnderNightLord-ChromeBook at 2021-05-23 01:20
  • 6. Pangolin Window Manager

    Using a custom Xlib binding (with the help of ffigen), I've been able to communicate (somewhat oddly) with Xlib and thus the X-server. Here's what's happening and what needs to be done.

    • [x] Communication with X-server
    • [x] Window Manager Registration
    • [x] Window Management
    • [ ] and finally, making it look pretty.
    Reviewed by imreallyliam at 2020-09-24 02:54
  • 7. Update developer.dart

    Use power off instead of shutdown to completely shutdown kernel and device itself. Also include Bourne shell /bin/sh for making the is even more lightweight.

    Reviewed by Laniku at 2020-07-15 19:16
  • 8. Add web build & deploy

    This will implement a CI system for web demos. AFAIK you have to be on Chrome and a somewhat fast device to use it. I don't know, it's just the way Flutter's set up for some reason.

    Reviewed by bleonard252 at 2020-05-26 17:46
  • 9. Organized files. Added Fonts & Utils.

    • Moved all applications to application/ directory.
    • Added fonts for system wide use. (Not implemented)
    • Created an Inherited Widget for referencing to constants.
    • Developing Application Manager and component widgets.
    • Added Palette Generator (modified to extract colors from ByteArrays)
    Reviewed by predatorx7 at 2019-11-01 23:07
  • 10. Fix flutter syntax change in window/window.dart

    https://github.com/flutter/flutter/commit/4218c0bc38bc74a97b1b03d7b8b7f0ce32e29468

    it was commited on 22 april it must have got to stable flutter channel now

    we'll be having a lot of such situations as @nmcain said it'd be nice to have someone on dev channel of flutter to fix bugs before they even happen

    Reviewed by Horus125 at 2019-07-12 02:34
  • 11. [Settings] Center hint text in search bar and fix padding.

    Centers search bar hint text by increasing it to 46 pixels high. Will submit an issue to the flutter repo.

    Also fixes some padding to make the search bar more symmetric.

    Reviewed by whiskeyPeak at 2022-08-13 19:31
  • 12. Settings takes too long to open and freezes the desktop for a short time when running natively

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Current behavior

    when running pangolin settings from native pangolin, (not web preview) it freezes the desktop and takes a long time to load.

    Expected behavior

    i expect it to open instantly like it does in the web preview

    Steps to reproduce

    1. Run Pangolin on Linux
    2. Go to taskbar and press settings

    Environment (values that do not apply assign with "N/A")

    - OS:Gentoo Linux 2.8 5.15.52-gentoo-dist
    - Device: ASUS TUF gaming a15
    

    Anything else?

    No response

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct
    Reviewed by wat9rz at 2022-08-05 18:31
  • 13. Display Settings in the Pangolin Desktop

    Is there an existing issue for this?

    • [X] I have searched the existing issues

    Is your feature request related to a problem? Please describe.

    I have an ultrawide 200hz monitor, and in pangolin, theres no way to change anything about the display settings

    Describe the solution you'd like

    In the Pangolin Settings app, i would like a completed display settings with refresh rate and resolution.

    Describe alternatives you've considered

    xrandr - display settings CLI, complicated to use

    Additional context

    No response

    Code of Conduct

    • [X] I agree to follow this project's Code of Conduct
    Reviewed by wat9rz at 2022-07-23 20:47
  • 14. Action Center/Quick Settings overlapping.

    So this has been happening for a little bit and I thought it was just the web, until I tried it on windows. This happens on all my platforms, android, windows, and web, at this point it was just annoying to me. image image There's some screenshots so you can hopefully fix it! Thanks! <3

    Reviewed by AwkwardTeenageBoy at 2022-06-12 13:27
  • 15. Warning: implicit declaration of function 'waitpid' is invalid in C99

    The following error occurs when building on Linux.

    pangolin_desktop/linux/flutter/ephemeral/.plugin_symlinks/flutter_pty/src/flutter_pty_unix.c:94:5: warning: implicit declaration of function 'waitpid' is invalid in C99 [-Wimplicit-function-declaration]

    But for the record I am building on WSL2 so I'm not sure if it's to do with that, and I used flutter build linux.

    Reviewed by EnderNightLord-ChromeBook at 2022-05-26 23:14
  • 16. web apps in web demo

    Describe the solution you'd like I would like to have web apps in the web demo and have the ability to create web apps locally in the web demo

    Describe alternatives you've considered N/A

    For which platform is this feature request? web demo Do you have an idea of how we would add it? recreate the UI from the full operating system

    Why should we add it? to give people more examples of what the UI looks like in more applications

    Reviewed by glitch128 at 2022-05-24 18:48

Related

Use Dart to call Shell, complete the work of compiling Golang CGO code into a so, dll, a, WASM, and etc.
Use Dart to call Shell, complete the work of compiling Golang CGO code into a so, dll, a, WASM, and etc.

Use Dart to call Shell, complete the work of compiling Golang CGO code into a so, dll, a, WASM, and etc. And place it in the corresponding source file directory of each Flutter platform.

Aug 3, 2022
Sol - an imperative, statically-typed language designed as a tool for learning how to program

SOL: Simple Obvious Language Sol is an imperative, statically-typed language designed as a tool for learning how to program. It is simple, in that it

Jun 3, 2022
A Flutter package that makes it easy to customize and work with your Flutter desktop app window.
A Flutter package that makes it easy to customize and work with your Flutter desktop app window.

bitsdojo_window A Flutter package that makes it easy to customize and work with your Flutter desktop app window on Windows, macOS and Linux. Watch the

Aug 5, 2022
Flutter plugin for Flutter desktop(macOS/Linux/Windows) to change window size.

desktop_window Flutter plugin for Flutter desktop(macOS/Linux/Windows) to change window size. Usage import 'package:desktop_window/desktop_window.dart

Jul 11, 2022
A Flutter package that makes it easy to customize and work with your Flutter desktop app's system tray.
A Flutter package that makes it easy to customize and work with your Flutter desktop app's system tray.

system_tray A Flutter package that that enables support for system tray menu for desktop flutter apps. on Windows, macOS and Linux. Features: - Modify

Aug 1, 2022
File picker plugin for Flutter, compatible with mobile (iOS & Android), Web, Desktop (Mac, Linux, Windows) platforms with Flutter Go support.
File picker plugin for Flutter, compatible with mobile (iOS & Android), Web, Desktop (Mac, Linux, Windows) platforms with Flutter Go support.

A package that allows you to use the native file explorer to pick single or multiple files, with extensions filtering support.

Aug 4, 2022
This plugin allows Flutter desktop apps to defines system/inapp wide hotkey (i.e. shortcut).

hotkey_manager This plugin allows Flutter desktop apps to defines system/inapp wide hotkey (i.e. shortcut). hotkey_manager Platform Support Quick Star

Aug 9, 2022
This plugin allows Flutter desktop apps to Retrieve information about screen size, displays, cursor position, etc.

screen_retriever This plugin allows Flutter desktop apps to Retrieve information about screen size, displays, cursor position, etc. screen_retriever P

May 5, 2022
This plugin allows Flutter desktop apps to extract text from screen.

screen_text_extractor This plugin allows Flutter desktop apps to extract text from screen. screen_text_extractor Platform Support Quick Start Installa

Aug 5, 2022
This plugin allows Flutter desktop apps to defines system tray.

tray_manager This plugin allows Flutter desktop apps to defines system tray. tray_manager Platform Support Quick Start Installation ⚠️ Linux requireme

Aug 6, 2022
This plugin allows Flutter desktop apps to resizing and repositioning the window.

window_manager This plugin allows Flutter desktop apps to resizing and repositioning the window. window_manager Platform Support Quick Start Installat

Aug 15, 2022
A platform adaptive Flutter app for desktop, mobile and web.
A platform adaptive Flutter app for desktop, mobile and web.

Flutter Folio A demo app showcasing how Flutter can deliver a great multi-platform experience, targeting iOS, Android, MacOS, Windows, Linux, and web.

Aug 5, 2022
Unofficial Ubuntu Desktop Settings App made with Flutter
 Unofficial Ubuntu Desktop Settings App made with Flutter

Unofficial Ubuntu Desktop Settings App made with Flutter - WIP The goal of this project is to build a feature complete settings app for the Ubuntu des

Aug 8, 2022
Simple file explorer for desktop made with Flutter, highly inspired by macOS Finder

file_explorer A basic file explorer made with Flutter Getting Started This project is a starting point for a Flutter application. A few resources to g

Nov 7, 2021
An 🎵 audio playback library for Flutter Desktop. Supports Windows & Linux. Based on miniaudio.
An 🎵 audio playback library for Flutter Desktop. Supports Windows & Linux. Based on miniaudio.

✒ libwinmedia is sequel to this project. It provides network playback, better format support, control & features. An audio playback library for Flutte

Jul 10, 2022
Experimental plugins for Flutter for Desktop

Desktop Embedding for Flutter This project was originally created to develop Windows, macOS, and Linux embeddings of Flutter. That work has since beco

Aug 12, 2022
Build beautiful desktop apps with flutter and rust. 🌠 (wip)
Build beautiful desktop apps with flutter and rust. 🌠 (wip)

flutter-rs Build flutter desktop app in dart & rust. Get Started Install requirements Rust flutter sdk Develop install the cargo flutter command cargo

Aug 6, 2022
Create Desktop app with Flutter
Create Desktop app with Flutter

Flutter Desktop Codelab Slides Créer votre première appli Desktop avec Flutter App Design Dribble YoPro Setup Linux MacOs Windows Generate executable

Nov 26, 2021
Implementation of Flutter Desktop Application
Implementation of Flutter Desktop Application

Flashmall Vendor This project is an implementation of a Design i found on Dibble.com by Casprine Assempah Art Light Theme Dark Theme Getting Started T

Jul 15, 2022