
Research
Security News
The Landscape of Malicious Open Source Packages: 2025 Mid‑Year Threat Report
A look at the top trends in how threat actors are weaponizing open source packages to deliver malware and persist across the software supply chain.
A simple, powerful, and fast terminal menu system for Python.
PPMenu is a lightweight pure Python menu builder focused on:
Built for terminal applications, system tools, games, shops,
and anywhere a clean text menu is needed.
hjkl
, quick letters[f] File
, [o] Open
, etc.)h/j/k/l
)Option 1: Local Project
uv pip install ppmenu
# or
pip install ppmenu
Option 2: Local Project
Clone the repository:
git clone https://github.com/sergey-samoylov/ppmenu.git
cd ppmenu/
Install development dependencies (optional, for testing):
pip install pytest
Create a quick menu in seconds:
from ppmenu import PPM
def say_hello():
print("Hello, world!")
menu_structure = {
'[h] Hello': say_hello,
'[q] Quit': lambda: exit(0),
}
menu = PPM(menu_structure, title='My Simple Menu')
menu.run()
✅ Arrow keys and Vim-keys move.
✅ Press h
to run "Hello".
✅ Press q
to quit.
Have a taste how it might work with your own projects by launching
one of these simple apps:
All are in examples
directory.
Will happily create a file with a list of your projects, that use PPMenu.
Run all tests:
pytest
(Optional: add pytest.ini
with [pytest] pythonpath = .
for clean imports.)
Contributions are welcome!
Feel free to:
Let's make PPMenu
even better together!
📢Please follow the Code Style Guide before submitting pull requests.
This project is licensed under the GNU General Public License v3.0 (GPLv3).
See LICENSE file for details.
Made with ❤️ by Sergey Samoylov
FAQs
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A look at the top trends in how threat actors are weaponizing open source packages to deliver malware and persist across the software supply chain.
Security News
ESLint now supports HTML linting with 48 new rules, expanding its language plugin system to cover more of the modern web development stack.
Security News
CISA is discontinuing official RSS support for KEV and cybersecurity alerts, shifting updates to email and social media, disrupting automation workflows.