Coder Social home page Coder Social logo

lonkaars / cinquo Goto Github PK

View Code? Open in Web Editor NEW
5.0 2.0 0.0 4.56 MB

An open source Quadro alternative

License: GNU General Public License v3.0

VBScript 0.06% CSS 30.37% HTML 12.54% JavaScript 19.67% TypeScript 37.35%
quadro palettes linux windows robotjs controller remote

cinquo's Introduction

Cinquo

An open-source Quadro alternative

Quadro was an awesome app that would let you control your PC with virtual launchpads. Unfortunately Quadro was removed from the App Store. I've attempted to recreate Quadro from the ground up using web technologies, because almost all devices support PWA's and they don't have to follow Apple's App Store guidelines.

Currently this project is still a work-in-progress, but some funcitonality is here! Buttons, sliders, and a basic settings app is working. Unfortunately, there is currently no easy way to create tiles, because they're written in JSON and there isn't a finished GUI to create and manage them, although I have included a JSON schema that should add autocomplete functionality to vscode/coc when editing the palette files.

The server is currently pretty buggy with creating new palettes and I'm considering creating a seperate module for managing palettes. If you don't care for the gui you can also run just the server by running node server/index.js in the src/ directory, though you'll need to reinstall your npm dependencies if you've ran electron-rebuild. Most settings are in server/user/ but I'm working on creating an os-dependent config store, so settings will be in ~/.config on Linux and %appdata%\ on Windows in the future.

Important notes

  • Some important code is commented out or messy because I was testing on Linux, full compatibility soon™ (affected files are in src/server, notably processMetadata.ts and actions.ts)
  • I've decided (after 7 months) that I'll never finish this enough to call it usable before uploading it to GitHub, so here it is I guess.

Screenshots


Features

Buttons that launch:

  • Node.js modules
  • Files, such as executables or documents in their default app
  • Midi messages
  • Keystrokes (currently Windows only, because node 12 RobotJS)
  • Commands (pretty much useless on Windows but useful on Linux)

Sliders that launch:

  • Midi messages
  • System volume changes
  • Screen brightness changes
  • Node.js modules

Installation

Installation guide is here


Future features

Cinquo is currently in a pretty much unusable state for regular users. I wouldn't recommend using this for important tasks, because all network traffic isn't encrypted. RobotJS doesn't work on Linux (for me?) with Node 12 and electron, and there are performace issues that cause a delay when changing app focus and it being reflected client-side which doesn't happen on Windows.

See the issues tab for planned features, known bugs and progress on milestone builds.

cinquo's People

Contributors

lonkaars avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

cinquo's Issues

RobotJS on Linux

RobotJS only works on Windows for me, but I haven't tested this in a while

Unencrypted traffic

Allow the user to specify either a self-signed certificate, and make all the network traffic go over https, or implement end-to-end encryption over http, without the need of trusting self-signed certificates on each device.

Better config files

Use system default config locations, XDG_CONFIG_HOME on Linux, %AppData% on Windows, etc. Auto-generate config files if they don't exist, and implement default values so the app doesn't crash when a config file doesn't have a value or it's value is invalid

Fix garbage code

This project is in a garbage state right now, and these are the changes I'm going to make to create a better development experience

  • Start using typescript interfaces (#14)
  • Move package.json/tsconfig.json etc. to project root so npm start and tsc work from the project root
  • Make a BasicElement class that provides an id, $, and html property, which more complex objects can use without redefining id, $ and html every time, but instead just calling super()
  • Clean up/rewrite settings.ts
  • Start using built-in API's in the settings app when they're completed
  • Create a contributing.txt, code-of-conduct.txt and issue-template.txt
  • Create readme files for major directories, explaining what each file is for
  • Start using some documentation system (typescript?/jsdoc) to document built-in classes

Password access

Currently anyone knowing the port and host Cinquo is ran on, can see the currently focused app, and interact with it. Requiring a password for authentication, or adding some "trusted devices" feature would make Cinquo safer to use in a production environment.

Remove /lib folder

Source all /lib folder libraries from npm and move icon packs to a new directory

Icon API

Create a simple API that does requests from an icon library and returns html (with inline styles)

Plugin system

Create a plugin system that can access a new api from settings.ts, allowing other developers to create plug-ins that define new tile types, new actions and other cool stuff.

Disable auto palette generation

Create a setting that disables automatic palette generation for new apps, and instead allows users to create palettes that can be used for multiple apps.

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.