Skip to main content

Protonox-maintained fork of Kivy intended as a drop-in compatible build for Protonox tooling and deployments.

Project description

Kivy

Kivy is an open-source Python framework for developing GUI apps that work cross-platform, including desktop, mobile and embedded platforms.

Fork notice (ProtonoxDEV): este repositorio es un fork mantenido por ProtonoxDEV. La distribución publicada en PyPI/TestPyPI se llama protonox-kivy y funciona como reemplazo directo del paquete kivy, pero no es la distribución oficial de Kivy. Se mantienen los avisos de licencia MIT del proyecto original.

Modern Android readiness (15 → 16)

  • Edge-to-edge deja de ser opcional: Android 16 espera barras de sistema transparentes y gestos en bordes; ignorar insets rompe la UI. Safe areas y padding dinámico deben ser parte del layout.
  • Insets ahora son dinámicos: notch/hole, barra de gestos y teclado cambian con orientación, modo gestos, split-screen y foldables; el layout debe reaccionar en vivo.
  • Ratios extremos (20:9, 22:9, foldables) exponen size_hint y px fijos pobres; assets raster bajos se notan.
  • Gestos del sistema mandan: controles pegados a bordes compiten con back gesture; gestos custom deben respetar márgenes.
  • IME/reflow: el teclado no siempre redimensiona; ScrollView + foco correcto es obligatorio para no tapar contenido.
  • No cambió la GPU (OpenGL ES sigue 3.2 máx): el problema es la capa UI, no el render.

En este fork se prepara la librería para estas exigencias: se añade compatibilidad con widgets legacy de KivyMD (alias state en ToggleButtonBehavior) para evitar KeyError en apps existentes y se documentan los requerimientos de UI mobile-first para Android 16.

Helper para insets / notch (Android)

  • Archivo: kivy/protonox_ext/android_insets.py
  • Funciones clave:
    • get_current_insets() devuelve top/bottom/left/right/ime_bottom (0 en plataformas no Android).
    • add_insets_listener(callback) notifica cambios de insets (rotación, gestos, teclado, split-screen).
  • Uso sugerido en tu App:
    from kivy.protonox_ext import android_insets
    
    if android_insets.is_android():
        insets = android_insets.get_current_insets()
        # aplica padding dinámico a tu root layout con estos valores
        android_insets.add_insets_listener(lambda data: update_padding(data))
    
    Donde update_padding ajusta padding/safe_* en tus layouts para evitar solapes con notch, barras y teclado.

Instalación vía PyPI

  • PyPI: pip install protonox-kivy==3.0.0.dev1 (se distribuye como sdist, compila una wheel local al instalar).
  • TestPyPI (staging): pip install --index-url https://test.pypi.org/simple protonox-kivy==3.0.0.dev1.

Si tienes instalaciones previas de kivy o protonox-kivy en editable, desinstala primero: pip uninstall -y kivy protonox-kivy.

The aim is to allow for quick and easy interaction design and rapid prototyping whilst making your code reusable and deployable: Innovative user interfaces made easy.

Kivy is written in Python and Cython and is built on OpenGL ES 2.0. It supports various input devices and has an extensive (and extensible) widget library. With the same codebase, you can target Windows, macOS, Linux (including Raspberry Pi OS), Android, and iOS. All Kivy widgets are built with multitouch support.

Kivy is MIT licensed, actively developed by a great community and is supported by many projects managed by the Kivy Organization.

Backers on Open Collective Sponsors on Open Collective Contributor Covenant GitHub contributors

PyPI - Version PyPI - Python Version

Windows Unittests Status Ubuntu Unittests Status OSX Unittests Status Coverage Status

Windows wheels Status Manylinux wheels Status Raspberry Pi wheels Status OSX wheels Status

Installation, Documentation and Examples

Extensive installation instructions as well as tutorials and general documentation, including an API reference, can be found at https://www.kivy.org/docs. A PDF version is also available.

Kivy ships with many examples which can be found in the examples folder.

Support

Are you having trouble using the Kivy framework, or any of its related projects? Is there an error you don’t understand? Are you trying to figure out how to use it? We have volunteers who can help!

The best channels to contact us for support are listed in the latest Contact Us document.

Contributing

We love pull requests and discussing novel ideas. Check out our latest contribution guide and feel free to improve Kivy.

It gives details of the best places online to discuss the development with the core developers and other enthusiasts.

Sibling projects

The Kivy team manages a number of additional projects that support the Kivy eco-system.

  • Buildozer: a development tool for turning Python applications into binary packages ready for installation on any of a number of platforms, including mobile devices.
  • Plyer: a platform-independent Python API for accessing hardware features of various platforms (Android, iOS, macOS, Linux and Windows).
  • PyJNIus: a Python library for accessing Java classes using the Java Native Interface (JNI).
  • Pyobjus: Python module for accessing Objective-C classes as Python classes using Objective-C runtime reflection.
  • Python for Android: a development tool that packages Python apps into binaries that can run on Android devices.
  • Kivy iOS: a toolchain to compile the necessary libraries for iOS to run Kivy applications, and manage the creation of Xcode projects.
  • Audiostream: library for direct access to the microphone and speaker.
  • KivEnt: entity-based game engine for Kivy.
  • Oscpy: a Python implementation of Open Sound Control (OSC) network protocol.
  • Garden: widgets and libraries created and maintained by users.

Licenses

  • Kivy is released under the terms of the MIT License. Please refer to the LICENSE file.
  • The provided fonts Roboto and Roboto Mono are licensed and distributed under the terms of the Apache License, Version 2.0. The DejaVuSans (used for the virtual keyboard) license can be viewed here.
  • The current UI design has been adapted from Moblintouch theme's SVGs and is licensed under the terms of the LGPLv2.1.

Code of Conduct

In the interest of fostering an open and welcoming community, we as contributors and maintainers need to ensure participation in our project and our sister projects is a harassment-free and positive experience for everyone. It is vital that all interaction is conducted in a manner conveying respect, open-mindedness and gratitude.

Please consult the latest Code of Conduct.

Contributors

This project exists thanks to all the people who contribute. [Become a contributor].

Backers

Thank you to all of our backers! 🙏 [Become a backer]

Sponsors

Special thanks to all of our sponsors, past and present. Support this project by [becoming a sponsor].

Here are our top current sponsors. Please click through to see their websites, and support them as they support us.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

protonox_kivy-3.0.0.dev2.tar.gz (29.1 MB view details)

Uploaded Source

File details

Details for the file protonox_kivy-3.0.0.dev2.tar.gz.

File metadata

  • Download URL: protonox_kivy-3.0.0.dev2.tar.gz
  • Upload date:
  • Size: 29.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for protonox_kivy-3.0.0.dev2.tar.gz
Algorithm Hash digest
SHA256 ee990b28cfc258f8b6c1d9ce44c2b1530e778b5e4f9611d6e2c376f320d92d68
MD5 07452daca2466540333b783c6978d8dc
BLAKE2b-256 4555109ca431a0916ef973b9974438a4da651de94f79ae47195650764951de6c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page