{"id":21185806,"url":"https://github.com/eez-open/studio","last_synced_at":"2025-04-04T23:07:27.370Z","repository":{"id":15313496,"uuid":"59030961","full_name":"eez-open/studio","owner":"eez-open","description":"Cross-platform low-code GUI and automation","archived":false,"fork":false,"pushed_at":"2024-05-19T13:39:27.000Z","size":504375,"stargazers_count":242,"open_issues_count":89,"forks_count":60,"subscribers_count":20,"default_branch":"master","last_synced_at":"2024-05-19T14:41:10.384Z","etag":null,"topics":["eez-studio","flow-based-programming","instrument-extensions","lvgl","scpi-commands","scpi-instrument"],"latest_commit_sha":null,"homepage":"https://www.envox.eu/studio/studio-introduction/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eez-open.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.TXT","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-05-17T14:42:46.000Z","updated_at":"2024-05-21T19:54:10.029Z","dependencies_parsed_at":"2024-05-19T14:50:37.315Z","dependency_job_id":null,"html_url":"https://github.com/eez-open/studio","commit_stats":null,"previous_names":[],"tags_count":36,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eez-open%2Fstudio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eez-open%2Fstudio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eez-open%2Fstudio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eez-open%2Fstudio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eez-open","download_url":"https://codeload.github.com/eez-open/studio/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247082958,"owners_count":20880752,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eez-studio","flow-based-programming","instrument-extensions","lvgl","scpi-commands","scpi-instrument"],"created_at":"2024-11-20T18:18:58.602Z","updated_at":"2025-04-04T23:07:27.346Z","avatar_url":"https://github.com/eez-open.png","language":"TypeScript","readme":"[![GitHub release](https://img.shields.io/github/release/eez-open/studio.svg)](https://github.com/eez-open/studio/releases) [![license](https://img.shields.io/github/license/eez-open/studio.svg)](https://github.com/eez-open/studio/blob/master/LICENSE.TXT) [![liberapay](https://img.shields.io/liberapay/receives/eez-open.svg?logo=liberapay)](https://liberapay.com/eez-open/donate) [![Downloads](https://img.shields.io/github/downloads/eez-open/studio/total)](https://github.com/eez-open/studio/releases)\n\n### Tehnical support\n\nYour comments, suggestions, new feature requests and bug reports are welcome and can be made in the [Issues](https://github.com/eez-open/studio/issues) section. However, please take into account that reported issues will be processed by the Envox team according to the best effort principle, so adjust your expectations accordingly. However, if you want a more prompt and high-quality response as well as direct contact with technical support, you can choose one of our [Support plans](https://www.envox.eu/support-plans/) (check also [this](https://www.envox.eu/premium-technical-support-for-eez-studio/) blog post).  \nYou are invited to join our community on [Discord](https://discord.gg/q5KAeeenNG) where you can get answers to some questions from other members. You can also start a discussion under [Discussions](https://github.com/eez-open/studio/discussions).\n\n\n### Ownership and License\n\nThe contributors are listed in CONTRIB.TXT. This project uses the GPL v3 license, see LICENSE.TXT.\nEEZ Studio uses the [C4.1 (Collective Code Construction Contract)](http://rfc.zeromq.org/spec:22) process for contributions.\nTo report an issue, use the [EEZ Studio issue tracker](https://github.com/eez-open/studio/issues).\n\n_Important note: Envox d.o.o. does not claim any ownership rights to the source code generated by the `Build` command except in the case of a project that uses EEZ Flow when it is given under the MIT license._  \n_The user owns the `.eez-project` file and all the source code generated from the file template definitions that are part of `eez-project` file. EEZ Studio may also generate files that are under MIT, BSD 2.0 or Public Domain license._\n\n### Links\n\n-   [Web page](https://www.envox.eu/studio/studio-introduction/)\n-   [FAQ](https://github.com/eez-open/studio/wiki/Q\u0026A)\n-   [Discord](https://discord.gg/q5KAeeenNG) server\n-   [X (Twitter)](https://twitter.com/envox)\n-   [Mastodon](https://mastodon.social/@envox)\n-   [YouTube](https://www.youtube.com/c/eezopen) channel\n-   [Liberapay](https://liberapay.com/eez-open/donate) donations \u003cimg src=\"https://liberapay.com/assets/liberapay/icon-v2_white-on-yellow.svg\" width=\"16\" /\u003e\n\n## Introduction\n\nEEZ Studio is a free and open source cross-platform low-code visual tool for desktop and embedded GUIs with [LVGL](https://lvgl.io/) support. Built-in _EEZ Flow_ enables the creation of complex scenarios for test and measurement automation, and the Instruments feature offers remote control of multiple devices and T\u0026M equipment including [EEZ BB3](https://github.com/eez-open/modular-psu) T\u0026M chassis and [EEZ H24005](https://github.com/eez-open/psu-hw) programmable power supply and any other T\u0026M devices that support [SCPI](https://www.ivifoundation.org/scpi/) from manufacturers such as Keysight, Rigol, Siglent, etc.\n\n### EEZ Studio _Project_\n\n![EEZ Studio Project](docs/images/projects_intro.png)\n\n-   Modular visual development environment for designing TFT display screen decorations and defining user interaction (embedded GUI)\n-   Generate C++ code for embedded GUI functionality that can be directly included in [STM32CubeIDE](https://www.st.com/en/development-tools/stm32cubeide.html) for BB3 and other STM32 target platforms or [Arduino IDE](https://www.arduino.cc/en/software) for H24005 and other Arduino compatible target platforms\n-   _Instrument definition file_ (IDF) builder with context sensitive SCPI commands help (based on Keysight’s [Offline Command Expert command set](https://www.keysight.com/main/software.jspx?cc=US\u0026lc=eng\u0026ckey=2333687\u0026nid=-11143.0.00\u0026id=2333687) XML structure) suitable for EEZ Studio _Instrument_ and [Keysight Command Expert](https://www.keysight.com/en/pd-2036130/command-expert)\n-   SCPI command help generator based on bookmarked HTML generated directly from .odt file using [EEZ WebPublish](https://github.com/eez-open/WebPublish) extension for OpenOffice/LibreOffice.\n-   [LVGL](https://lvgl.io/) (Light and Versatile Graphics Library) 8.x and 9.x support\n-   Project templates (using giteo.io repositories) and comparison of projects\n-   Drag\u0026drop editor for creating instrument's desktop dashboard (for remote control and management)\n-   Flowchart based low-code programming for desktop dashboard\n\n![Flow](docs/images/flow_intro.png)\n\n### EEZ Studio _Instrument_\n\n![EEZ Studio Instrument](docs/images/instruments_intro.png)\n\n-   Dynamic environment where multiple instruments can be configured and easily accessed\n-   Session oriented interaction with each SCPI instrument\n-   Serial (via USB), Ethernet and VISA (via free [R\u0026S®VISA](https://www.rohde-schwarz.com/us/driver-pages/remote-control/3-visa-and-tools_231388.html)) T\u0026M instrument interfaces support\n-   Direct import of EEZ Studio generated IDFs and **Keysight’s Offline Command Expert command** sets\n-   IEXT (Instrument EXTension) catalog with growing number of supported instruments (Rigol, Siglent, Keysight, etc.)\n-   History of all activities with search/content filtering\n-   Quick navigation via calendar (\"heatmap\") or sessions list view\n-   Shortcuts (hotkeys and buttons) that can be user defined or come predefined from imported IDF. The shortcut can contain single or sequence of SCPI commands or Javascript code.\n-   Javascript code for task automation (e.g. logfile, or programming list upload/download, etc.) can be also assigned to the shortcut\n-   SCPI commands context sensitive help with search\n-   File upload (instrument to PC) with image preview (e.g. screenshots)\n-   File download (PC to instrument) automation for transferring instrument profiles\n-   Simple arbitrary waveform editor (envelope and table mode)\n-   Displaying measurement data as graphs\n-   FFT analysis, harmonics and simple math functions (Period, Frequency, Min, Max, Peak-to-Peak, Average)\n-   Export graphs as .CSV file\n\n---\n\nNew functionality is under development thanks to the sponsorship of the [NGI0 PET](https://nlnet.nl/project/EEZ-DIB/) and [NGI0 Entrust](https://nlnet.nl/project/EEZ-Studio/#ack) funds from NLnet. The following milestones have been achieved so far:\n\n-   [M1](https://github.com/eez-open/studio/issues/102) - Visual editor\n-   [M2](https://github.com/eez-open/studio/issues/103) - Interpreter for PC\n-   [M3](https://github.com/eez-open/studio/issues/104) - Interpreter for BB3\n-   [M4](https://github.com/eez-open/studio/issues/134) - Debugger for PC\n-   [M5](https://github.com/eez-open/studio/issues/135) - Debugger for BB3\n-   [M6](https://github.com/eez-open/studio/releases/tag/0.9.90) - EEZ flow engine unification\n-   [M7](https://github.com/eez-open/studio/releases/tag/v0.9.91) - Multilanguage support in project\n-   [M8](https://github.com/eez-open/studio/releases/tag/v0.9.92) - Widgets advanced control\n-   [M9](https://github.com/eez-open/studio/releases/tag/v0.9.93) - Project templates\n-   [M10](https://github.com/eez-open/studio/releases/tag/v0.9.94) - Gitea.io integration\n-   [M11](https://github.com/eez-open/studio/releases/tag/v0.9.95) - New EEZ Flow extensions\n-   [M12](https://github.com/eez-open/studio/releases/tag/v0.9.96) - LVGL integration\n-   [M13](https://github.com/eez-open/studio/releases/tag/v0.9.98) - Standalone Flow dashboard\n-   [M14](https://github.com/eez-open/studio/releases/tag/v0.9.99) - Home page modifications and enhancements\n-   [M15](https://github.com/eez-open/studio/releases/tag/v0.10.1) - Enhancements (more examples, extension manager, MQTT)\n-   [M16](https://github.com/eez-open/studio/releases/tag/v0.10.2) - Online help, enhancements, bug fixing for “Actions”\n-   [M17](https://github.com/eez-open/studio/releases/tag/v0.10.3) - Online help, enhancements, bug fixing for “Widgets”\n-   [M18](https://github.com/eez-open/studio/releases/tag/v0.12.0) - Simultaneous control of multiple instruments\n-   [M19](https://github.com/eez-open/studio/releases/tag/v0.13.0) - Support for non-SCPI instruments and devices\n-   [M20](https://github.com/eez-open/studio/releases/tag/v0.14.0) - Hybrid table/tree/grid widget\n-   [M21](https://github.com/eez-open/studio/releases/tag/v0.15.0) - Project scrapbook\n-   [M22](https://github.com/eez-open/studio/releases/tag/v0.16.0) - Improvement of session-centric work with instruments and data management\n-   [M23](https://github.com/eez-open/studio/releases/tag/v0.17.0) - Multimedia support / Support for networking / other Instruments related\n---\n\n## Installation\n\n64-bit OS is required in all cases.\n\n### Linux\n\nDepending on your linux distribution, choose one of the listed packages (.deb, .rpm) and start the installation using the associated installer.\nIn addition, there is a self-executing .AppImage version that, after downloading, needs to enable the `Allow executing file as program` under file `Permissions` before starting it.\nIf you encounter a problem running the .AppImage version on your Linux distribution, try running it using the `--no-sandbox` option, i.e. `./EEZ-Studio-[version].AppImage --no-sandbox`\n\n### Mac\n\nDownload `eezstudio-mac.zip`, unpack and move `eezstudio.app` to Applications.\n\n### Windows\n\nDownload and start `EEZ_Studio_setup.exe`.\n\n### Nix\n\nThe Nix flake provides a derivation for EEZ Studio or an overlay\nthat provides that derivation. It can be used to install the project using\n[Nix package manager](https://nixos.org/).\n\n### Build and run from source (all operating systems)\n\n-   Install `Node.JS 16.x` or newer\n-   Install `node-gyp`, more information at https://github.com/nodejs/node-gyp#installation\n\n#### Only Linux:\n\n```\nsudo apt-get install build-essential libudev-dev libnss3\n```\n\n#### Only Raspbian:\n\nInstall Node.js 16 and npm on Raspberry Pi: https://lindevs.com/install-node-js-and-npm-on-raspberry-pi/\n\n```\nsudo apt-get install build-essential libudev-dev libopenjp2-tools ruby-full\nsudo gem install fpm\n```\n\n#### All platforms:\n\n```\ngit clone https://github.com/eez-open/studio\ncd studio\nnpm install\nnpm run build\n```\n\nStart with:\n\n```\nnpm start\n```\n\nCreate distribution packages (except MacOS and Raspbian):\n\n```\nnpm run dist\n```\n\nOn MacOS:\n\n```\nnpm run dist-mac-arm64\n```\n\nor\n\n```\nnpm run dist-mac-x64\n```\n\nOn Raspbian:\n\n```\nnpm run dist-raspbian\n```\n\n#### Nix\n\nTo build:\n\n```\nnix build 'github:eez-open/studio'\n```\n\nTo start:\n\n```\nnix run 'github:eez-open/studio'\n```\n\n## USB TMC\n\nThe USB TMC driver must be installed if you want to access the T\u0026M instrument using the USB-TMC interface from EEZ Studio _Instrument_ section.\n\n### Windows\n\nDownload and start [Zadig](http://zadig.akeo.ie/). Select your device, select libusb-win32 and press \"Replace Driver\" button:\n\n![Zadig](docs/images/usbtmc_zadin_windows.png)\n\n### Linux\n\nYou will probably need to add your Linux account to the usbtmc group before you can access the instrument using EEZ Studio. Connect your instrument with a USB cable and turn it on. Wait until booting is complete. Now check the instrument group name by entering the following command:\n\n```\nls -l /dev/usbtmc*\n```\n\nIn case it is root, enter the command:\n\n```\nsudo groupadd usbtmc\n```\n\nNow, add your account (\u003cusername\u003e) to the group:\n\n```\nsudo usermod -a -G usbtmc \u003cusername\u003e\n```\n\nA reboot is required. After that, the gid of `/dev/usbtmc0` should be set to `usbtmc` and\nyou are ready to use your instrument via USB-TMC interface.\n\n## FAQ\n\n[FAQ Wiki](https://github.com/eez-open/studio/wiki/FAQ)\n\n**Q**: Where is the database file by default?\n**A**: Depending on the operating system, it can be:\n\n-   Linux: `~/.config/eezstudio/storage.db`\n-   Mac: `~/Library/Application\\ Support/eezstudio/storage.db`\n-   Windows: `%appdata%\\eezstudio\\storage.db`\n\nThe default created database as well as its location can be changed later through the options in the _Settings_ section of EEZ Studio.\n\n**Q**: Where are the IEXTs (Instrument EXTensions) used to access T\u0026M instruments stored?\n**A**: Depending on the operating system, it can be:\n\n-   Linux: `~/.config/eezstudio/extensions`\n-   Mac: `~/Library/Application\\ Support/eezstudio/extensions`\n-   Windows: `%appdata%\\eezstudio\\extensions`\n","funding_links":["https://liberapay.com/eez-open/donate"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feez-open%2Fstudio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feez-open%2Fstudio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feez-open%2Fstudio/lists"}