/meilix

Beautiful Linux System http://meilix.fossasia.org

Primary LanguagePythonGNU Lesser General Public License v3.0LGPL-3.0

Meilix



Join the chat at https://gitter.im/fossasia/meilix Build Status

A beautiful and customizable Linux build for out of the box features for an Internet Kiosk. You can use the Meilix Generator (Web app) to make a Linux for your own brand/event, also add apps and features you need pre-installed, it will create an ISO Image of your Linux, which you can use as a live boot or install on PCs.

Meilix is under heavy development

Index

  1. Introduction
    1. Features
    2. Architecture
    3. Ecosystem
  2. Usage
  3. Pre Requisites
  4. Development
    1. File Structure
    2. Build
    3. Metapackages
  5. Contribution
    1. Community
    2. Guideline
    3. Branches
    4. Best Practice
  6. Resource
  7. Gallery
  8. License

Introduction

This project serves as a solution for those who wish to have a pre-configured custom Linux, with all the needed apps/features already installed. An example of its use case is events. Every event organizer needs to have all their systems configured equally, and need some specific apps to run the event. Configuring each system one by one can be a time taking and difficult task, but using Meilix, they can create their own custom Linux ISO and run/live boot on as many systems as they want. It will not just save countless hours, but also make the process more cost-efficient.

Feature

Meilix is a light weight, beautiful and fast Linux with all the features of Ubuntu/Debian distro. Following are some of the other features that Meilix offers:

  • You can brand your Linux as you want. Your company name and logo can be your:

    • Linux name
    • Linux logo
    • Wallpaper
    • Screensaver
  • Switch on/off various features of your linux. You can switch:

    • 64 Bit support (32 Bit is default)
    • Notifications
    • Screensaver
    • Sleep Modes
    • System Sounds
    • Bookmarks
    • Screen Dimming
    • Power Management Saving
    • Taskbar Autohide
  • Following apps can be pre-installed in your linux:

    • Chromium
    • Firefox
    • Hangout
    • VLC
    • GIMP
    • Inkscape
    • LibreOffice
    • Git
    • NextCloud
    • Dropbox
  • Add all the documents and files you need in your linux.

  • System Lock: it allows you to freeze all the systems you are hosting using Meilix.

Architecture

Meilix is based on Ubuntu/Debian architecture, using LXQT as the standard DE(Desktop Environment).

Ecosystem

Following are the other projects/dependency part of Meilix ecosystem.

Name About
Meilix-generator A webapp which generates an ISO Image of Meilix Linux
Meilix-systemlock A program to freeze the system
Meilix-artwork Repository to store the boot screen theme of Meilix

Usage

To create your own Linux for an event kiosk or just for trying it out, you can use Meilix-generator. A web app, which has all the options to customize and generate an ISO.

Pre Requisites

Here are some pre-requisites to develop Meilix.

  • Exposure to the terminal and basic commands.
  • Experience in working with a UNIX or GNU/Linux based system.
  • Basic understanding of Operating System and Package managers.
  • Programming/Scripting experience. Shell Scripting etc.
  • LPIC1 is a huge plus

Development

Meilix fetches ubuntu source, customizes it to add features and then builds the distro. It uses shell scripts to perform all the tasks, build can be made on local machine, Travis CI.

File Structure

Basic understanding of the file structure is required to do development, here is a level 2 file structure of this project

.
├── build.sh
├── LICENSE.md
├── sources.list
├── README.md
├── meilix-metapackage_1.0-1_amd64.changes
├── meilix-metapackage_1.0-1_all.deb
├── meilix-metapackages_1.0_all.deb
├── meilix-metapackage_1.0-1.tar.gz
├── meilix-metapackage_1.0-1.dsc
├── systemlock_0.1-1_all.deb
├── image-amd64.tar.lzma
├── image-i386.tar.lzma
├── amd64.tar.lzma
├── meilix-metapackages_1.0_all
│   └── control/...
├── ubiquity-slideshow
|   └── slides/...
├── metapackage
│   └── debian/...
├── polkit-1
│   └── actions/...
├── conf
│   └── distributions/...
├── pool
│   └── main/...
├── mail-scripts
│   ├── mail-fail.py
│   └── mail.py
├── meilix-artwork
│   ├── debian/...
│   ├── Makefile/...
│   └── usr/...
├── systemlock-0.1
│   ├── debian/...
│   ├── etc/...
│   ├── Makefile/...
│   └── usr/...
├── meilix-default-settings
│   ├── debian/...
│   ├── etc/...
│   ├── Makefile/...
│   └── usr/...
├── scripts
│   ├── aptRepoUpdater.sh
│   ├── arch.sh
│   ├── browser_uri.sh
│   ├── chroot.sh
│   ├── debuild.sh
│   ├── legacy_initrdext.sh
│   ├── mail-fail.py
│   ├── mail.py
│   ├── meilix_check.sh
│   ├── mew.sh
│   ├── packages
│   └── releases_maintainer.sh
└──chroot
    ├── bin/...
    ├── boot/...
    ├── dev/...
    ├── etc/...
    ├── home/...
    ├── lib/...
    ├── lib64/...
    ├── media/...
    ├── mnt/...
    ├── opt/...
    ├── proc/...
    ├── root/...
    ├── run/...
    ├── sbin/...
    ├── srv/...
    ├── sys/...
    ├── tmp/...
    ├── usr/...
    └── var/...

Build

Building Locally

  1. Make the build script executable.
$ chmod +x ./build.sh
  1. Execute the script.
$ ./build.sh

Build Using Travis*

  1. Update .travis.yml according to your API. Read More
  2. Push changes to your repo, it will start the build process.

Contribution

Your code contributions are always appreciated. To keep your experience good, we suggest you read all the guidelines thoroughly, also take some time to understand the workflow for this project. Each contribution is expected to follow best practices and community guidelines. Following are the things you can do to contribute to Meilix

  1. Report a bug
    If you think you have encountered a bug, and we should know about it, feel free to report it here and our community will take care of it.

  2. Request a feature
    You can also request for a feature here, and if the community feels it's viable, it will be picked for development.

  3. Create a pull request
    It can't get better then this, your pull request will be really appreciated by the community. You can get started by picking up any open issues from here and make a pull request.

Community

Meilix has contributors around the world, constantly improving Meilix and helping others as well to do so. To get in touch with the community, you can use the following communication channels.

Gitter: https://gitter.im/fossasia/meilix
Slack: http://fossasia-slack.herokuapp.com/
Mailing List: https://groups.google.com/forum/#!forum/meilix
Scrum Mail: meilix@googlegroups.com
Twitter: https://twitter.com/meilix_

Guideline

FOSSASIA Open Source Guidelines can be found here

Branches

Meilix uses an agile continuous integration methodology, so the version is frequently updated and development is really fast.

  1. Master is the development branch. It should always built.

  2. Generator is a legacy branch we keep for reference for the time being.

  3. No further branches should be created in the main repository.

Steps to create a pull request

  1. Make a PR to master or any other feature branch only.
  2. Where the PR concerns visual elements it should have an image showing the effect.
  3. Your code should meet the best practices and guidelines.
  4. It must pass all CI tests and get positive reviews.

After this, changes will be merged.

Best Practice

Commits

  • Make sure your commit message is crisp and clear, read more about it here
  • When refering to a issue in PR, use special words to automatically close the related issue like "Fixes #234"
  • Keep each PR very short, which will make it easy to review.

Code

  • Each commit should have proper documentation and comments in code, which will make it easy for others to understand it.

Resource

Gallery

To Be Updated

License

This project is currently licensed under GNU Lesser General Public License v3.0 (LGPL-3.0). A copy of LICENSE.md should be present along with the source code. To obtain the software under a different license, please contact FOSSASIA.