Skip to content

Releases: putinservai-cyber/niruvi

Niruvi v3.1.2

Choose a tag to compare

@putinservai-cyber putinservai-cyber released this 09 Jul 04:30

v3.1.2 — Bugfix \u0026 Polish Release

HMAC

  • Unified HMAC key location: stored in ~/.config/niruvi/.hmac_key (same across AppImage/installed/source modes)

Sound

  • Fixed: sound effects now work after installation to ~/Applications/Niruvi/

Sandboxing (Shield)

  • Fixed: Landlock LSM now applied in the child process, not the parent (broken sandbox isolation)

Bugfixes

  • remove_hook(): .hook extension matching fixed (hooks were unremovable)
  • read_json_with_hmac(): returns legacy files directly instead of None
  • ShieldConfig.from_dict(): use_namespace default now True (consistent with init)
  • self_update.py: exception shadowing fixed
  • worker.py: removed dead except:raise code
  • import() replaced with proper imports (3 files)
  • manager.py: precise tempdir detection
  • health_check.py: deduplicated os.uname() calls
  • scripts.py: bare except: \u2192 except Exception:

Dependencies

  • Added PyQt6-Multimedia
  • Removed phantom requests dependency

Full changelog: v3.1.1...v3.1.2

Niruvi v3.1.1

Choose a tag to compare

@putinservai-cyber putinservai-cyber released this 27 Jun 09:35

Niruvi — Universal Linux AppImage Manager

Niruvi is a desktop application for installing, managing, updating, and building
AppImage applications on Linux. It combines a clean Qt6 interface with robust safety features
and a powerful AppImage builder that supports both traditional packages and local project folders.


What Niruvi Does

AppImage is a portable application format for Linux — just download, make executable, and run.
Niruvi makes this workflow smarter:

  • Install AppImages with desktop integration — automatic .desktop entries, launcher icons,
    and optional shortcuts. Your apps appear in your system menu just like native software.
  • Build AppImages from DEB packages, RPM packages, tar archives, or even a local project
    folder — no packaging expertise needed.
  • Create self-installing AppImages that prompt the user to install on first run, with a
    professional wizard, license acceptance, component selection, and optional auto-updater.
  • Keep your apps up to date with automatic update checking and SHA256-verified downloads.
  • Remove apps cleanly when you no longer need them — no leftover files, no orphaned
    desktop entries.

Features

App Management

  • Drag-and-drop install — drop an .AppImage file onto the window to start installation
  • Desktop integration — automatic .desktop entries, desktop shortcuts, and XDG icon theme support
  • Search and sort — quickly find apps by name, sort by name or version
  • Right-click context menu — Run, Update, Uninstall, Open Folder, and toggle Desktop Shortcut
  • Portable folders — optional .home and .config folders keep app data self-contained
  • CLI mode — headless install via --install for scripting and remote environments

AppImage Builder

  • Multiple source formats — build from DEB, RPM, tar archives, or a local project folder

  • Self-installing format — create AppImages that install themselves with full desktop integration

  • Advanced options — brand name, license/EULA, pre/post-install scripts, optional components,
    custom messages, rollback protection, silent mode, and auto-updater with SHA256 verification

  • Post-build verification — automatically checks ELF header, executable permissions, and runs
    a version test to confirm the AppImage works

Safety & Security

  • Static analysis security scanner — examines AppImage contents for suspicious patterns,
    setuid binaries, and known malicious filenames without executing the unpackaged code
  • SHA256 verification — every downloaded update is hash-verified before installation
  • Backup and rollback — previous versions are backed up before updates and restored on failure
  • Atomic writes — registry and metadata are written atomically to prevent corruption
  • Input sanitization — all user-provided values are sanitized before being used in generated scripts
  • No telemetry — Niruvi does not collect usage data, call home, or share any information

User Interface

  • Built-in help system — press F1 for comprehensive documentation on all features
  • Error report dialog — detailed, human-readable error messages with step-by-step fix suggestions
  • Build summary dialog — post-build results with file size, validation status, and quick tips
  • Report Issue page — one-click access to the GitHub issues page with diagnostic information

Requirements

  • Python 3.10+
  • PyQt6 ≥ 6.5
  • Linux with FUSE (for AppImage extraction)
  • appimagetool — included in the asset/ directory for building AppImages

Optional dependencies:

  • requests — enables automatic update checking
  • librsvg (rsvg-convert) — better SVG icon conversion
  • unsquashfs — enables static security scanning without executing AppImages
  • ClamAV (clamscan) — optional malware scanning

Installation

From the AppImage (recommended)

Download the latest Niruvi-x86_64.AppImage from the releases page, make it executable,
and run:

chmod +x Niruvi-x86_64.AppImage
./Niruvi-x86_64.AppImage

The first time you run it, Niruvi will prompt you to install it. After installation,
it appears in your application menu.

From source

git clone https://github.com/putinservai-cyber/niruvi.git
cd niruvi
pip install .
niruvi

Run directly (no install)

git clone https://github.com/putinservai-cyber/niruvi.git
cd niruvi
python3 niruvi.py

Usage

Graphical interface

niruvi                          # Launch the main window
niruvi MyApp.AppImage           # Launch and open an AppImage for installation

Command-line

niruvi --install MyApp.AppImage    # Install silently (no GUI)
niruvi --uninstall AppName         # Remove an installed application
niruvi --version                   # Show the current version

Keyboard shortcuts

Key Action
Ctrl+I Install an AppImage
Ctrl+R Refresh the installed apps list
Ctrl+Q Quit Niruvi
F1 Open the built-in help system

Building AppImages

From a package file

  1. Open Tools → Build AppImage or click the Build button
  2. Select Package file as the source type
  3. Choose a DEB, RPM, or tar archive
  4. Set the app name and version (auto-detected if left empty)
  5. Optionally enable Self-Installing AppImage and configure the installer style
  6. Click Build AppImage

From a project folder

  1. Open Tools → Build AppImage
  2. Select Project folder as the source type
  3. Browse to your project directory
  4. Niruvi analyzes the folder — file count, size, and detects entry points
  5. The folder contents are copied directly into the AppDir
  6. If no AppRun exists, Niruvi auto-creates one based on detected executables

Self-installing AppImages

Enable Self-Installing AppImage to create an AppImage that installs itself
on first run. This is ideal for applications that need:

  • Desktop integration (launcher entries, icons)
  • A managed install lifecycle with uninstaller
  • End-user license agreement acceptance
  • Optional component selection during install
  • Automatic background updates

Configuration

Settings are stored in ~/.config/niruvi/settings.json. Open File → Settings to adjust:

Setting Default Description
install_dir ~/Applications Where installed apps are stored
build_output_dir ~/Applications Default output directory for built AppImages
create_desktop true Create a .desktop entry on install
create_shortcut false Create a desktop shortcut on install
portable_home false Create a .home folder for app data
portable_config false Create a .config folder for app settings
icon_in_theme true Install app icons to the XDG icon theme
check_updates true Automatically check for Niruvi updates

Security

Niruvi takes security seriously:

  • Static analysis only — the security scanner examines AppImage contents by extracting
    the embedded filesystem image directly, without executing the AppImage binary. This means
    potentially malicious code never runs during the scan.
  • SHA256 verification — all update downloads are verified against their expected hash
    before installation. If the hash doesn't match, the download is rejected.
  • Backup and rollback — before any update or overwrite, the current version is backed up.
    If the update fails, the previous version is automatically restored.
  • Input sanitization — all user-provided values (app names, version strings, file paths)
    are sanitized before being embedded in generated scripts, preventing injection attacks.
  • No telemetry — Niruvi does not collect any usage data, send analytics, or communicate
    with any server except for explicit update checks and the GitHub issues page.

Project Structure

niruvi/                        # Core application package
├── __init__.py                # Package exports
├── __main__.py                # Entry point for `python -m niruvi`
├── _version.py                # Version string
├── appimage_assets.py         # Asset extraction from AppImage files
├── appimage_metadata.py       # ELF header parsing and metadata
├── builder_bootstrap.py               # Self-extraction bootstrap logic
├── build_dialog.py            # AppImage build dialog (Qt6 UI)
├── build_page.py              # Build worker thread and utilities
├── builder_builder_bootstrap.py       # Install script generation
├── constants.py               # Application-wide constants
├── desktop_utils.py           # .desktop entry and shortcut management
├── help_dialog.py             # Built-in help system and license viewer
├── icon_utils.py              # Icon format conversion utilities
├── installation_registry.py   # JSON-based installation registry
├── main.py                    # CLI entry point and argument parsing
├── manager.py                 # Main window (AppManager)
├── report_dialog.py           # Error report and build summary dialogs
├── report_page.py             # GitHub issues reporting page
├── scanner.py                 # Static security analysis
├── self_install.py            # Self-installing AppImage logic
├── self_update.py             # Automatic update checking and installation
├── settings.py                # Settings management
├── utils.py                   # General utility functions
├── wizard.py                  # Installation wizard
└── worker.py                  # Extraction worker thread
asset/                         # Build assets
├── appimagetool-x86_64.AppImage
├── niruvi.desktop
├── niru...
Read more

Niruvi v3.1.0

Choose a tag to compare

@putinservai-cyber putinservai-cyber released this 26 Jun 16:19

Niruvi — Universal Linux AppImage Manager

Niruvi is a desktop application for installing, managing, updating, and building
AppImage applications on Linux. It combines a clean Qt6 interface with robust safety features
and a powerful AppImage builder that supports both traditional packages and local project folders.


What Niruvi Does

AppImage is a portable application format for Linux — just download, make executable, and run.
Niruvi makes this workflow smarter:

  • Install AppImages with desktop integration — automatic .desktop entries, launcher icons,
    and optional shortcuts. Your apps appear in your system menu just like native software.
  • Build AppImages from DEB packages, RPM packages, tar archives, or even a local project
    folder — no packaging expertise needed.
  • Create self-installing AppImages that prompt the user to install on first run, with a
    professional wizard, license acceptance, component selection, and optional auto-updater.
  • Keep your apps up to date with automatic update checking and SHA256-verified downloads.
  • Remove apps cleanly when you no longer need them — no leftover files, no orphaned
    desktop entries.

Features

App Management

  • Drag-and-drop install — drop an .AppImage file onto the window to start installation
  • Desktop integration — automatic .desktop entries, desktop shortcuts, and XDG icon theme support
  • Search and sort — quickly find apps by name, sort by name or version
  • Right-click context menu — Run, Update, Uninstall, Open Folder, and toggle Desktop Shortcut
  • Portable folders — optional .home and .config folders keep app data self-contained
  • CLI mode — headless install via --install for scripting and remote environments

AppImage Builder

  • Multiple source formats — build from DEB, RPM, tar archives, or a local project folder
  • Self-installing format — create AppImages that install themselves with full desktop integration
  • Installer styles:
    Wizard: zenity/kdialog dialogs, simple and compatible
    macOS style: step-by-step flow with progress bar
    Minimal: terminal-only, works over SSH
    InstallBuilder style: professional multi-page wizard with Back/Next navigation
  • Advanced options — brand name, license/EULA, pre/post-install scripts, optional components,
    custom messages, rollback protection, silent mode, and auto-updater with SHA256 verification
  • Post-build verification — automatically checks ELF header, executable permissions, and runs
    a version test to confirm the AppImage works

Safety & Security

  • Static analysis security scanner — examines AppImage contents for suspicious patterns,
    setuid binaries, and known malicious filenames without executing the unpackaged code
  • SHA256 verification — every downloaded update is hash-verified before installation
  • Backup and rollback — previous versions are backed up before updates and restored on failure
  • Atomic writes — registry and metadata are written atomically to prevent corruption
  • Input sanitization — all user-provided values are sanitized before being used in generated scripts
  • No telemetry — Niruvi does not collect usage data, call home, or share any information

User Interface

  • Built-in help system — press F1 for comprehensive documentation on all features
  • Error report dialog — detailed, human-readable error messages with step-by-step fix suggestions
  • Build summary dialog — post-build results with file size, validation status, and quick tips
  • Report Issue page — one-click access to the GitHub issues page with diagnostic information

Requirements

  • Python 3.10+
  • PyQt6 ≥ 6.5
  • Linux with FUSE (for AppImage extraction)
  • appimagetool — included in the asset/ directory for building AppImages

Optional dependencies:

  • requests — enables automatic update checking
  • librsvg (rsvg-convert) — better SVG icon conversion
  • unsquashfs — enables static security scanning without executing AppImages
  • ClamAV (clamscan) — optional malware scanning

Installation

From the AppImage (recommended)

Download the latest Niruvi-x86_64.AppImage from the releases page, make it executable,
and run:

chmod +x Niruvi-x86_64.AppImage
./Niruvi-x86_64.AppImage

The first time you run it, Niruvi will prompt you to install it. After installation,
it appears in your application menu.

From source

git clone https://github.com/putinservai-cyber/niruvi.git
cd niruvi
pip install .
niruvi

Run directly (no install)

git clone https://github.com/putinservai-cyber/niruvi.git
cd niruvi
python3 niruvi.py

Usage

Graphical interface

niruvi                          # Launch the main window
niruvi MyApp.AppImage           # Launch and open an AppImage for installation

Command-line

niruvi --install MyApp.AppImage    # Install silently (no GUI)
niruvi --uninstall AppName         # Remove an installed application
niruvi --version                   # Show the current version

Keyboard shortcuts

Key Action
Ctrl+I Install an AppImage
Ctrl+R Refresh the installed apps list
Ctrl+Q Quit Niruvi
F1 Open the built-in help system

Building AppImages

From a package file

  1. Open Tools → Build AppImage or click the Build button
  2. Select Package file as the source type
  3. Choose a DEB, RPM, or tar archive
  4. Set the app name and version (auto-detected if left empty)
  5. Optionally enable Self-Installing AppImage and configure the installer style
  6. Click Build AppImage

From a project folder

  1. Open Tools → Build AppImage
  2. Select Project folder as the source type
  3. Browse to your project directory
  4. Niruvi analyzes the folder — file count, size, and detects entry points
  5. The folder contents are copied directly into the AppDir
  6. If no AppRun exists, Niruvi auto-creates one based on detected executables

Self-installing AppImages

Enable Self-Installing AppImage to create an AppImage that installs itself
on first run. This is ideal for applications that need:

  • Desktop integration (launcher entries, icons)
  • A managed install lifecycle with uninstaller
  • End-user license agreement acceptance
  • Optional component selection during install
  • Automatic background updates

Configuration

Settings are stored in ~/.config/niruvi/settings.json. Open File → Settings to adjust:

Setting Default Description
install_dir ~/Applications Where installed apps are stored
build_output_dir ~/Applications Default output directory for built AppImages
create_desktop true Create a .desktop entry on install
create_shortcut false Create a desktop shortcut on install
portable_home false Create a .home folder for app data
portable_config false Create a .config folder for app settings
icon_in_theme true Install app icons to the XDG icon theme
check_updates true Automatically check for Niruvi updates

Security

Niruvi takes security seriously:

  • Static analysis only — the security scanner examines AppImage contents by extracting
    the embedded filesystem image directly, without executing the AppImage binary. This means
    potentially malicious code never runs during the scan.
  • SHA256 verification — all update downloads are verified against their expected hash
    before installation. If the hash doesn't match, the download is rejected.
  • Backup and rollback — before any update or overwrite, the current version is backed up.
    If the update fails, the previous version is automatically restored.
  • Input sanitization — all user-provided values (app names, version strings, file paths)
    are sanitized before being embedded in generated scripts, preventing injection attacks.
  • No telemetry — Niruvi does not collect any usage data, send analytics, or communicate
    with any server except for explicit update checks and the GitHub issues page.

Project Structure

niruvi/                        # Core application package
├── __init__.py                # Package exports
├── __main__.py                # Entry point for `python -m niruvi`
├── _version.py                # Version string
├── appimage_assets.py         # Asset extraction from AppImage files
├── appimage_metadata.py       # ELF header parsing and metadata
├── builder_bootstrap.py               # Self-extraction bootstrap logic
├── build_dialog.py            # AppImage build dialog (Qt6 UI)
├── build_page.py              # Build worker thread and utilities
├── builder_builder_bootstrap.py       # Install script generation
├── constants.py               # Application-wide constants
├── desktop_utils.py           # .desktop entry and shortcut management
├── help_dialog.py             # Built-in help system and license viewer
├── icon_utils.py              # Icon format conversion utilities
├── installation_registry.py   # JSON-based installation registry
├── main.py                    # CLI entry point and argument parsing
├── manager.py                 # Main window (AppManager)
├── report_dialog.py           # Error report and build summary dialogs
├── report_page.py             # GitHub issues reporting page
├── scanner.py                 # Static security analysis
├── self_install.py            # Self-installing AppImage logic
├── self_update.py             # Automatic update checking and installation
├── settings.py                # Settings management
├── utils.py                   # General utility functions
├── wizard.py                  # Installation wizard
└── worker.py                  # Extraction worker thread
asset/                         # Build assets
├── appimagetool-x86_6...
Read more