A plugin for Termux to use native Android GUI components from CLI applications.

Related tags

Kotlin termux-gui
Overview

Termux:GUI

This is a plugin for Termux that enables command line programs to use the native android GUI.

In the examples directory you can find demo videos and sample code.

Installation notes
There is currently no release on f-droid, so the only method to install this plugin is to compile it and termux yourself.
Releases on f-droid will be provided as soon as possible.

Protocol.md describes the Protocol used and the available functions you can use. Using this plugin requires a bit of knowledge of the android GUI system. You can read about it in detail in the official documentation.
Relevant documentation is also linked in Protocol.md for more specific subjects.
Here is a crash-course:

Tasks

Tasks are the individual screen you can switch between. Each Task has a stack of Activities, called the back stack, with the top one being visible.

Activities

Activities are the individual screens of apps, like a home screen, a settings screen etc.
When an Activity finishes itself, it is removed from the Activity stack of its Task, showing the underlying Activity.
An Activity can also launch another Activity in the Task, adding it to the back stack on top of itself.
To not let the device to unneeded work like drawing Elements that aren't visible, the System informs Activities of certain changes.
These are the Activity lifecycle events.

Activity Lifecycle

The most important lifecycle events for you will be onDestroy, onStart and onStop. When an Activity is started, it is visible. An Activity is destroyed if the user finishes it (by dismissing it), when it finishes itself or when a configuration change occurs.
The plugin will tell you if the Activity is finishing when onDestroy is fired, so you know the Activity will be closed.
Configuration changes are handled for you, so you don't need to worry about onDestroy if the Activity is not finishing.

Views

Views are the Elements that are displayed in Activities.
They are divided into Views and Viewgroups, which can themselves contain Views or Viewgroups.
That results in a hierarchy of Elements, with one at the top.
The Viewgroups are Layouts that position the contained Views according to your configuration.

The most used Layout is LinearLayout. It simply displays Views in a horizontal or vertical list, giving each Element the same space by default.
TextViews can display text.
EditText can get text input from the user.
Buttons can be clicked.
ImageViews can display images.

With these fundamentals you can go ahead and use this plugin. If you need more sophisticated Views or Layouts look into Protocol.md for what's available.

Language Bindings

Python

C/C++

Comments
  • java.lang.ClassNotFoundException: Didn't find class

    java.lang.ClassNotFoundException: Didn't find class "android.webkit.PacProcessor"

    Android 9 do not have android.webkit.PacProcessor

    Ref: https://stackoverflow.com/questions/70756680/java-lang-noclassdeffounderror-failed-resolution-of-landroid-webkit-pacprocess

    Logs: Termux_GUI logcat.txt

    opened by MrAdityaAlok 7
  • Python. Display gif in ImageView

    Python. Display gif in ImageView

    Hi there! I really love this project, thanks for your work! Can you suggest, please, how can I display gifs in ImageView and handle events? First, I tried to open gif like in python bindings example, with io.open, but ImageView displays only first (0) frame. Then I tried to open image with PIL image library and loop over frames. It worked, but I cant handle events, till frame loop is not finished, but also I would like the gif to be shown infinitely. I can do this with while loop, but, again, cant handle events. Now, I have a code like this:

    from io import BytesIO
    from time import sleep
    from PIL import Image
    
    file = 'some.gif'
    gif = Image.open(file)
    
    with tg.Connection() as c:
        a = tg.Activity(c, dialog=True)
        lay = tg.LinearLayout(a)
        e = tg.ImageView(a, lay)
        button = tg.Button(a, 'Text', lay)
        for ev in c.events():
            print (ev.type, ev.value)
            for frame in range(gif.n_frames):
                gif.seek(frame)
                buf = BytesIO()
                gif.save(buf, format='PNG')
                e.setlinearlayoutparams(0)
                e.setheight(gif.height*5, px=True)
                e.setwidth(gif.width*5, px=True)
                e.setimage(buf.getvalue())
                sleep(1.5)
    

    It's looped over all frames only one time, and till loop is not finished, events cant be handled

    opened by m00n-err0r 3
  • Cannot install by myself signed.

    Cannot install by myself signed.

    Because Termux did not provide a pre-compiled package before, and I added two fonts to the Styling plugin, so I have always used the APK editor to sign by myself. But now not only the GUI plugin cannot be installed, the latest version of the Widget, the API plug-in is also cannot be installed.

    here is my info

    ## Termux App Info
    
    **APP_NAME**: `Termux`  
    **PACKAGE_NAME**: `com.termux`  
    **VERSION_NAME**: `0.118.0`  
    **VERSION_CODE**: `118`  
    **TARGET_SDK**: `28`  
    **IS_DEBUGGABLE_BUILD**: `false`  
    **APK_RELEASE**: `Unknown`  
    **SIGNING_CERTIFICATE_SHA256_DIGEST**: `A40DA80A59D170CAA950CF15C18C454D47A39B26989D8B640ECD745BA71BF5DC`  
    ##
    
    
    ## Termux:API App Info
    
    **APP_NAME**: `Termux:API`  
    **PACKAGE_NAME**: `com.termux.api`  
    **VERSION_NAME**: `0.49`  
    **VERSION_CODE**: `49`  
    **TARGET_SDK**: `28`  
    **IS_DEBUGGABLE_BUILD**: `false`  
    **APK_RELEASE**: `Unknown`  
    **SIGNING_CERTIFICATE_SHA256_DIGEST**: `A40DA80A59D170CAA950CF15C18C454D47A39B26989D8B640ECD745BA71BF5DC`  
    ##
    
    
    ## Termux:Styling App Info
    
    **APP_NAME**: `Termux:Styling`  
    **PACKAGE_NAME**: `com.termux.styling`  
    **VERSION_NAME**: `0.29`  
    **VERSION_CODE**: `29`  
    **TARGET_SDK**: `28`  
    **IS_DEBUGGABLE_BUILD**: `false`  
    **APK_RELEASE**: `Unknown`  
    **SIGNING_CERTIFICATE_SHA256_DIGEST**: `A40DA80A59D170CAA950CF15C18C454D47A39B26989D8B640ECD745BA71BF5DC`  
    ##
    
    
    ## Termux:Widget App Info
    
    **APP_NAME**: `Termux:Widget`  
    **PACKAGE_NAME**: `com.termux.widget`  
    **VERSION_NAME**: `0.12`  
    **VERSION_CODE**: `12`  
    **TARGET_SDK**: `28`  
    **IS_DEBUGGABLE_BUILD**: `false`  
    **APK_RELEASE**: `Unknown`  
    **SIGNING_CERTIFICATE_SHA256_DIGEST**: `A40DA80A59D170CAA950CF15C18C454D47A39B26989D8B640ECD745BA71BF5DC`  
    ##
    
    
    ## Device Info
    
    ### Software
    
    **OS_VERSION**: `4.19.113-perf-g18f438a3f5fe`  
    **SDK_INT**: `30`  
    **RELEASE**: `11`  
    **ID**: `RKQ1.200826.002`  
    **DISPLAY**: `RKQ1.200826.002 test-keys`  
    **INCREMENTAL**: `V12.5.7.0.RJSCNXM`  
    **SECURITY_PATCH**: `2022-01-01`  
    **IS_DEBUGGABLE**: `0`  
    **IS_TREBLE_ENABLED**: `true`  
    **TYPE**: `user`  
    **TAGS**: `release-keys`  
    
    ### Hardware
    
    **MANUFACTURER**: `Xiaomi`  
    **BRAND**: `Redmi`  
    **MODEL**: `M2007J17C`  
    **PRODUCT**: `gauguinpro`  
    **BOARD**: `gauguinpro`  
    **HARDWARE**: `qcom`  
    **DEVICE**: `gauguinpro`  
    **SUPPORTED_ABIS**: `arm64-v8a, armeabi-v7a, armeabi`  
    ##
    
    
    ## Important Links
    
    ### Github
    
    [Termux](https://github.com/termux/termux-app)  
    [Termux:API](https://github.com/termux/termux-api)  
    [Termux:Boot](https://github.com/termux/termux-boot)  
    [Termux:Float](https://github.com/termux/termux-float)  
    [Termux:Styling](https://github.com/termux/termux-styling)  
    [Termux:Tasker](https://github.com/termux/termux-tasker)  
    [Termux:Widget](https://github.com/termux/termux-widget)  
    [termux-packages](https://github.com/termux/termux-packages)  
    
    ### Email
    
    [[email protected]](mailto:[email protected])  
    
    ### Reddit
    
    [r/termux](https://www.reddit.com/r/termux)  
    
    ### Wiki
    
    [Termux Wiki](https://wiki.termux.com)  
    [Termux](https://github.com/termux/termux-app/wiki)  
    [termu## Termux App Info
    
    **APP_NAME**: `Termux`  
    **PACKAGE_NAME**: `com.termux`  
    **VERSION_NAME**: `0.118.0`  
    **VERSION_CODE**: `118`  
    **TARGET_SDK**: `28`  
    **IS_DEBUGGABLE_BUILD**: `false`  
    **APK_RELEASE**: `Unknown`  
    **SIGNING_CERTIFICATE_SHA256_DIGEST**: `A40DA80A59D170CAA950CF15C18C454D47A39B26989D8B640ECD745BA71BF5DC`  
    ##
    
    
    ## Termux:API App Info
    
    **APP_NAME**: `Termux:API`  
    **PACKAGE_NAME**: `com.termux.api`  
    **VERSION_NAME**: `0.49`  
    **VERSION_CODE**: `49`  
    **TARGET_SDK**: `28`  
    **IS_DEBUGGABLE_BUILD**: `false`  
    **APK_RELEASE**: `Unknown`  
    **SIGNING_CERTIFICATE_SHA256_DIGEST**: `A40DA80A59D170CAA950CF15C18C454D47A39B26989D8B640ECD745BA71BF5DC`  
    ##
    
    
    ## Termux:Styling App Info
    
    **APP_NAME**: `Termux:Styling`  
    **PACKAGE_NAME**: `com.termux.styling`  
    **VERSION_NAME**: `0.29`  
    **VERSION_CODE**: `29`  
    **TARGET_SDK**: `28`  
    **IS_DEBUGGABLE_BUILD**: `false`  
    **APK_RELEASE**: `Unknown`  
    **SIGNING_CERTIFICATE_SHA256_DIGEST**: `A40DA80A59D170CAA950CF15C18C454D47A39B26989D8B640ECD745BA71BF5DC`  
    ##
    
    
    ## Termux:Widget App Info
    
    **APP_NAME**: `Termux:Widget`  
    **PACKAGE_NAME**: `com.termux.widget`  
    **VERSION_NAME**: `0.12`  
    **VERSION_CODE**: `12`  
    **TARGET_SDK**: `28`  
    **IS_DEBUGGABLE_BUILD**: `false`  
    **APK_RELEASE**: `Unknown`  
    **SIGNING_CERTIFICATE_SHA256_DIGEST**: `A40DA80A59D170CAA950CF15C18C454D47A39B26989D8B640ECD745BA71BF5DC`  
    ##
    
    
    ## Device Info
    
    ### Software
    
    **OS_VERSION**: `4.19.113-perf-g18f438a3f5fe`  
    **SDK_INT**: `30`  
    **RELEASE**: `11`  
    **ID**: `RKQ1.200826.002`  
    **DISPLAY**: `RKQ1.200826.002 test-keys`  
    **INCREMENTAL**: `V12.5.7.0.RJSCNXM`  
    **SECURITY_PATCH**: `2022-01-01`  
    **IS_DEBUGGABLE**: `0`  
    **IS_TREBLE_ENABLED**: `true`  
    **TYPE**: `user`  
    **TAGS**: `release-keys`  
    
    ### Hardware
    
    **MANUFACTURER**: `Xiaomi`  
    **BRAND**: `Redmi`  
    **MODEL**: `M2007J17C`  
    **PRODUCT**: `gauguinpro`  
    **BOARD**: `gauguinpro`  
    **HARDWARE**: `qcom`  
    **DEVICE**: `gauguinpro`  
    **SUPPORTED_ABIS**: `arm64-v8a, armeabi-v7a, armeabi`  
    ##
    
    
    opened by zixijian 3
  • [question] How to integrate SurfaceView to make a gui for mpv

    [question] How to integrate SurfaceView to make a gui for mpv

    Hello, your project is very promising to me because I want to make a simple gui for mpv inside termux. Currently, mpv only need the id to android.view.Surface to play its video through the option --wid=<ID>:

    On  Android,  the  ID  is  interpreted as android.view.Surface.
    Pass it as a value cast to intptr_t.
    Use with --vo=mediacodec_embed and  --hwdec=mediacodec for  direct  rendering  using  MediaCodec,
    or  with  --vo=gpu   --gpu-context=android (with or without --hwdec=mediacodec-copy).
    

    Could you tell me how to integrate a SurfaceView? In this way I can return the Surface id from its SurfaceHolder.Callback.

    Would it be as simple as adding a TextView?

    opened by JingMatrix 1
  • "setBackgroundColor" is not working

    Hi, I was testing Termux-gui API and discovered setBackgroundColor was not working as intended. (For example, if I create a text view and use set background color to change it to white, it wont work.). This issue also affects test15.py

    opened by ArtemisX64 1
  • how to install for f-droid version of Termux???

    how to install for f-droid version of Termux???

    I installed Termux from F-droid but F-droid build Termux it self then i can't install Termux-GUI from F-droid and Github can you make a release for f-droid???

    opened by dontknowhy 1
  • demo test3.py cannot display image

    demo test3.py cannot display image

    [~]$ python test3.py 1.png
    Traceback (most recent call last):
      File "/data/data/com.termux/files/home/test3.py", line 11, in <module>
        with open("icon.png","rb") as f:
    FileNotFoundError: [Errno 2] No such file or directory: 'icon.png'
    

    delete line 11

    [~]$ python test3.py 1.png
    /data/data/com.termux/files/usr/bin/sh: 1: identify: not found
    Traceback (most recent call last):
      File "/data/data/com.termux/files/home/test3.py", line 50, in <module>
        sock.bind("\0test")
    OSError: [Errno 98] Address already in use
    
    opened by zixijian 1
  • "App not installed " issue on Android 11 ( redmi note 10 )

    Kindly Solve this issue and give update

    image

    • when i download and installed from F-Droid website
    • i tried uninstall Termux and Termux:API and install Termux:GUI, then it installed without any error .
    • Solve this problem and please give a update for this issue .
    opened by sdp4377 1
  • Bump actions/upload-artifact from 2 to 3

    Bump actions/upload-artifact from 2 to 3

    Bumps actions/upload-artifact from 2 to 3.

    Release notes

    Sourced from actions/upload-artifact's releases.

    v3.0.0

    What's Changed

    • Update default runtime to node16 (#293)
    • Update package-lock.json file version to 2 (#302)

    Breaking Changes

    With the update to Node 16, all scripts will now be run with Node 16 rather than Node 12.

    v2.3.1

    Fix for empty fails on Windows failing on upload #281

    v2.3.0 Upload Artifact

    • Optimizations for faster uploads of larger files that are already compressed
    • Significantly improved logging when there are chunked uploads
    • Clarifications in logs around the upload size and prohibited characters that aren't allowed in the artifact name or any uploaded files
    • Various other small bugfixes & optimizations

    v2.2.4

    • Retry on HTTP 500 responses from the service

    v2.2.3

    • Fixes for proxy related issues

    v2.2.2

    • Improved retryability and error handling

    v2.2.1

    • Update used actions/core package to the latest version

    v2.2.0

    • Support for artifact retention

    v2.1.4

    • Add Third Party License Information

    v2.1.3

    • Use updated version of the @action/artifact NPM package

    v2.1.2

    • Increase upload chunk size from 4MB to 8MB
    • Detect case insensitive file uploads

    v2.1.1

    • Fix for certain symlinks not correctly being identified as directories before starting uploads

    v2.1.0

    • Support for uploading artifacts with multiple paths
    • Support for using exclude paths
    • Updates to dependencies

    ... (truncated)

    Commits
    • 83fd05a Bump actions-core to v1.10.0 (#356)
    • 3cea537 Merge pull request #327 from actions/robherley/artifact-1.1.0
    • 849aa77 nvm use 12 & npm run release
    • 4d39869 recompile with correct ncc version
    • 2e0d362 bump @​actions/artifact to 1.1.0
    • 09a5d6a Merge pull request #320 from actions/dependabot/npm_and_yarn/ansi-regex-4.1.1
    • 189315d Bump ansi-regex from 4.1.0 to 4.1.1
    • d159c2d Merge pull request #297 from actions/dependabot/npm_and_yarn/ajv-6.12.6
    • c26a7ba Bump ajv from 6.11.0 to 6.12.6
    • 6ed6c72 Merge pull request #303 from actions/dependabot/npm_and_yarn/yargs-parser-13.1.2
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump actions/checkout from 2 to 3

    Bump actions/checkout from 2 to 3

    Bumps actions/checkout from 2 to 3.

    Release notes

    Sourced from actions/checkout's releases.

    v3.0.0

    • Updated to the node16 runtime by default
      • This requires a minimum Actions Runner version of v2.285.0 to run, which is by default available in GHES 3.4 or later.

    v2.5.0

    What's Changed

    Full Changelog: https://github.com/actions/checkout/compare/v2...v2.5.0

    v2.4.2

    What's Changed

    Full Changelog: https://github.com/actions/checkout/compare/v2...v2.4.2

    v2.4.1

    • Fixed an issue where checkout failed to run in container jobs due to the new git setting safe.directory

    v2.4.0

    • Convert SSH URLs like org-<ORG_ID>@github.com: to https://github.com/ - pr

    v2.3.5

    Update dependencies

    v2.3.4

    v2.3.3

    v2.3.2

    Add Third Party License Information to Dist Files

    v2.3.1

    Fix default branch resolution for .wiki and when using SSH

    v2.3.0

    Fallback to the default branch

    v2.2.0

    Fetch all history for all tags and branches when fetch-depth=0

    v2.1.1

    Changes to support GHES (here and here)

    ... (truncated)

    Changelog

    Sourced from actions/checkout's changelog.

    Changelog

    v3.1.0

    v3.0.2

    v3.0.1

    v3.0.0

    v2.3.1

    v2.3.0

    v2.2.0

    v2.1.1

    • Changes to support GHES (here and here)

    v2.1.0

    v2.0.0

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Leveraging react/svelte native?

    Leveraging react/svelte native?

    Hi, I just notice this project and I really love the idea of gui from termux programs.

    A lot of work is been put into view binding work with c/c++/python, it make me think that React Native, or similar projects like svelte native, did similar stuff binding java side ui api with javascript. The binding works could be very similar to this project.

    Would you consider leveraging their work and put some integration with termux-gui and reacte/svelte native, or even flutter? If this could be done, then gui development in termux could be much easier. We can even run a lot of github react native projects directly without very little modifications.

    opened by ccaapton 1
  • [question]How to integrate SDL2

    [question]How to integrate SDL2

    It's not an issue just asking for help, because I haven't studied your project in depth yet

    I wonder if it is possible to support SDL2 with c/c++, I have seen someone using termux-gui and ffplay.py to play video.

    opened by Lzhiyong 8
  • Questions regarding this project

    Questions regarding this project

    Hi, I have some questions regarding this project.

    1. Using Rust, I want to make a GUI application using either conrod or iced GUI library. Is it easily portable to termux-gui?
    2. Do I have to compile it for Android ARM processor? Or what would I do to compile it?
    3. Is it possible to have like some sort of a shortcut to my launcher for the GUI Linux application that will automatically launch it as soon as I press it?
    4. If I have scrollable content that can be scrolled only using the mouse wheel on Linux, then if I run it on Android (through termux-gui) would I be able to scroll using the touch screen?
    5. Am I expecting things to be difficult to configure, and have a lot of breakage?
    opened by Raj2032 26
  • App can not be installed. Honor 9X

    App can not be installed. Honor 9X

    I have honor 9X and I wanted to try this app but it is not installing. This is probably something to do with architecture.

    (Translation: "Aplikaci nelze nainstalovat" is "Application can not be installed" ) Screenshot_20211127_161239_com google android packageinstaller

    opened by mobilex1122 7
Releases(0.1.5)
  • 0.1.5(Sep 26, 2022)

    Changed

    • Fixed: add aid to onUserLeaveHint event
    • Added: method to set selected tab for TabLayout
    • Added: method to set clickability of views
    • Added: option to specify View visibility at creation
    • Added: notifications with custom layout
    • Added: normal notifications in addition to custom ones
    • Added: method to get plugin version code
    • Added: method the set text gravity
    • Added: WebView
      • navigating history
      • set document
      • load from URI
      • run Javascript code in the WebView
    • Added: GridLayout
    • Added: method to set the coordinates of views directly. Useful to use FrameLayout to overlay views
    • Added: ability to catch the back button as an event.
    • Added: method to move views in the layout hierarchy, e.g. to make it go on top of everything else in FrameLayout or reposition it in GridLayout or LinearLayout. This is added to the layout parameters methods.
    Source code(tar.gz)
    Source code(zip)
    Tgermux.GUI-0.1.5.apk(3.79 MB)
  • 0.1.4(Jan 7, 2022)

    Added screen on/off events Added events for airplane mode, locale, timezone and configuration changes Added requestFocus to focus an EditText and display the soft keyboard Added HorizontalScrollView Added item snapping for HorizontalScrollView and NestedScrollView Added a settings screen Added a method to turn the screen on Added a method to request the user to unlock the screen Added TabLayout

    Source code(tar.gz)
    Source code(zip)
    app-debugMinify.apk(2.50 MB)
  • 0.1.3(Nov 22, 2021)

    Changelog: Added Spinners Made shared buffers available for Android 8.0 and earlier Added RadioButtons and RadioGroups Added event control methods Added touch events Added ToggleButtons You can now set the visibility of Views and the background and text colors Added SwipeRefreshLayout

    Source code(tar.gz)
    Source code(zip)
    app-release.apk(1.76 MB)
Owner
null
The KPy gradle plugin allows you to write Kotlin/Native code and use it from python.

The KPy gradle plugin allows you to write Kotlin/Native code and use it from python.

Martmists 14 Dec 26, 2022
🚀 CLI-like personal webpage built with Kotlin/JS

kotlin-cv.js Personal terminal-like simple webpage template built with Kotlin/JS. The template features CLI commands help, cat, ls, their completion a

Viktor 9 Sep 10, 2022
Reapp is everything you need to build amazing apps with React: a collection of packages that work together, our UI kit, and a CLI that scaffolds your app and includes a server and build system.

What is it? Reapp is everything you need to build amazing apps with React: a collection of packages that work together, our UI kit, and a CLI that sca

reapp 3.4k Nov 20, 2022
Modifold - Kotlin CLI tool for moving curseforge mods to modrinth

Modifold Modifold is a Kotlin CLI utility that allows you to transfer mods from

null 12 Nov 13, 2022
Solid - A CLI that tries to cover a dry-run phase for liquibase database change management

solid a CLI that tries to cover a dry-run phase for liquibase database change ma

Giovanni Panice (mos_) 1 Jan 28, 2022
The Klutter CLI tool gives access to all tasks to create and manage a Klutter project.

Klutter CLI The Klutter CLI tool gives access to all tasks to create and manage a Klutter project. Gettings started Download the tool. Unzip the file.

Gillian 2 Mar 31, 2022
A CLI tool to convert multi-module Jetpack Compose compiler metrics into beautiful HTML reports

A CLI tool to convert multi-module Jetpack Compose compiler metrics into beautiful HTML reports 1. What are Jetpack Compose compiler metrics? The Comp

Jaya Surya Thotapalli 116 Jan 3, 2023
Kotlin Multiplatform is an SDK for cross-platform mobile development, which enables teams to use the same business logic in both Android and iOS client applications.

Kotlin Multiplatform is an SDK for cross-platform mobile development, which enables teams to use the same business logic in both Android and iOS client applications.

Chris Russell 1 Feb 11, 2022
A Gradle plugin to easily publish library components to Maven.

Component Publisher A Gradle plugin to easily publish components based on maven-publish. You can find the latest released plugin on Gradle Plugin Port

Hulk Su 7 Oct 24, 2022
DI can be simple. Forget about modules and components. Just use it!

PopKorn - Kotlin Multiplatform DI PopKorn is a simple, powerful and lightweight Kotlin Multiplatform Dependency Injector. It doesn't need any modules

Pau Corbella 145 Dec 25, 2022
Kotlin Native Xcode Plugin

Kotlin Native Xcode Support Plugin to facilitate debugging iOS applications using Kotlin Native in Xcode. Defines Kotlin files as source code, with ba

Touchlab 834 Jan 7, 2023
An app architecture for Kotlin/Native on Android/iOS. Use Kotlin Multiplatform Mobile.

An app architecture for Kotlin/Native on Android/iOS. Use Kotlin Multiplatform Mobile. 项目架构主要分为原生系统层、Android/iOS业务SDK层、KMM SDK层、KMM业务逻辑SDK层、iOS sdkfra

libill 4 Nov 20, 2022
Plugin-shared-preferences - Pluto plugin to manage your Shared Preferences

Pluto Shared Preferences Plugin Pluto Shared Preferences is a Pluto plugin to in

Pluto 1 Feb 14, 2022
use kmm to write a flutter plugin

use KMM to write a flutter plugin The reference plugin_codelab example plugin that accompanies the How to write a Flutter plugin codelab. I changed pl

libill 8 Nov 9, 2022
kinstall is an easy way to install gradle-based command-line kotlin projects that use the application plugin.

kinstall kinstall is an easy way to install gradle-based command-line kotlin projects that use the application plugin. use First, install kinstall its

david kilmer 0 Apr 24, 2022
Plugin for Minecraft Dev projects that allows use BON2 as analog of fg.reobf from ForgeGradle

Bon2Gradle Plugin for Minecraft Dev projects that allows use BON2 as analog of fg.reobf from ForgeGradle. Usage Dependencies Gradle 6.8+ (Provider as

Yaroslav Novitsky 3 Nov 10, 2022
Embeddable custom voice assistant for Android applications

Aimybox voice assistant Open source voice assistant built on top of Aimybox SDK iOS version is available here Key Features Provides ready to use UI co

Just AI 176 Jan 2, 2023
Sample project that shows an approach for designing a multi-module architecture for Jetpack Compose Android applications.

Compose Multi-Module Architecture Sample Sample project that shows an approach for designing a multi-module architecture for Jetpack Compose Android a

Pavlo Stavytskyi 77 Jan 3, 2023