All Projects → emacs-helm → Helm System Packages

emacs-helm / Helm System Packages

Licence: gpl-3.0
A Helm interface to the package manager of your operating system

Projects that are alternatives of or similar to Helm System Packages

Cpcache
central pacman cache
Stars: ✭ 15 (-83.87%)
Mutual labels:  package, pacman
Helm
Emacs incremental completion and selection narrowing framework
Stars: ✭ 3,109 (+3243.01%)
Mutual labels:  helm, emacs
Helm Projectile
Helm UI for Projectile
Stars: ✭ 285 (+206.45%)
Mutual labels:  helm, emacs
Helm Github Stars
Browse your starred repositories with Emacs helm interface
Stars: ✭ 64 (-31.18%)
Mutual labels:  helm, emacs
Emacs.sexy
Emacs.sexy
Stars: ✭ 90 (-3.23%)
Mutual labels:  emacs
Laravel Package Maker
Get a 📦 skeleton and all other `make` commands from laravel base for package development.
Stars: ✭ 89 (-4.3%)
Mutual labels:  package
Hydra Posframe
hydra-posframe is a hydra extension which shows hydra hints on posframe.
Stars: ✭ 89 (-4.3%)
Mutual labels:  emacs
Gargle
Infrastructure for calling Google APIs from R, including auth
Stars: ✭ 88 (-5.38%)
Mutual labels:  package
Exwm Edit
Edit mode for EXWM
Stars: ✭ 92 (-1.08%)
Mutual labels:  emacs
Changepoint
A place for the development version of the changepoint package on CRAN.
Stars: ✭ 90 (-3.23%)
Mutual labels:  package
Emacs Grammarly
an Emacs extension to send a text to/from Grammarly
Stars: ✭ 90 (-3.23%)
Mutual labels:  emacs
Workflow
The open source PaaS for Kubernetes.
Stars: ✭ 1,291 (+1288.17%)
Mutual labels:  helm
Laravel Analytics
Analytics for the Laravel framework.
Stars: ✭ 91 (-2.15%)
Mutual labels:  package
Ui
React Styled Components with bootstrap grid system
Stars: ✭ 89 (-4.3%)
Mutual labels:  package
Dotfiles
👾 ~/
Stars: ✭ 91 (-2.15%)
Mutual labels:  emacs
Laravel Nullable Fields
Handles saving empty fields as null for Eloquent models
Stars: ✭ 88 (-5.38%)
Mutual labels:  package
Color Theme Ujelly
Ujelly theme for Emacs
Stars: ✭ 89 (-4.3%)
Mutual labels:  emacs
Npmarket
🛒 More efficient search for node packages.
Stars: ✭ 91 (-2.15%)
Mutual labels:  package
Open On Github
Atom package for opening files on GitHub.com
Stars: ✭ 89 (-4.3%)
Mutual labels:  package
Merlin
Context sensitive completion for OCaml in Vim and Emacs
Stars: ✭ 1,292 (+1289.25%)
Mutual labels:  emacs

#+TITLE: Helm System Packages

  • Introduction

Helm System Packages is an Emacs-based interface to the package manager of your operating system /and/ remote systems as well.

Emacs' knowledge is not required: see the [[stand-alone][stand-alone]] folder for a version targeted at non-Emacs users. Run the script and everything should be self-explanatory. If not then it's a bug, please report it.

Start helm-system-packages to list all available packages (with installed packages as well as dependencies displayed in their own respective face). Fuzzy-search, mark and execute the desired action over any selections of packages:

  • Install.
  • Uninstall.
  • Display packages details (in Org Mode!) or insert details at point.
  • Find files owned by packages.
  • And much more, including performing all the above over the network!

Helm System Packages provides a uniform interface over the following package managers:

  • =brew= (macOS)
  • =dnf=
  • =dpkg= (apt & friends)
  • =guix=
  • =pacman=
  • =portage= (emerge & friends)
  • =xbps=
  • And (hopefully) more to come! Contributions are welcome.

Some package managers come with their specific actions and even specific Helm sources, e.g. Portage's USE flags.

  • Usage

There is only one entry point: helm-system-packages.

Use the persistent action to view the details of the marked packages.

Most actions can be called with a prefix argument to insert the result at point.

If started from a remote TRAMP buffer (e.g. dired, Eshell or just any remote file), helm-system-packages automatically switches to the packages of the remote system. The remote package manager can be different from the local one.

** Maintenance & other operations

Helm System Packages only works over lists of packages. It does not feature any maintenance-related operations such as cleaning the cache or synchronizing the database.

[[https://github.com/jabranham/system-packages][system-packages]] is an Emacs package providing Emacs with universal commands for such operations. It is unrelated to Helm System Packages but both work well together.

** Privileges

Transactions such as installing and removing packages are run via the sudo command in Eshell. If you'd like to cache the password for, say, an hour, you can configure Eshell to use its own version of sudo via TRAMP:

: (require 'em-tramp) : (setq password-cache t) : (setq password-cache-expiry 3600)

  • Motivation

Most of the package managers GUIs out there do not provide much efficiency over their commandline counterparts.

The commandline workflow is centered around a cumbersome try-repeat loop:

  1. Search for local packages.
  2. Package missing? Search for remote packages.
  3. List is too long? Pipe through a pager.
  4. (Un)install the desired package by writing the searched package names again.

With Helm all those actions get factored into one. Helm sessions can also be resumed.

  • Screencasts
  • Display information of multiple packages in an Org buffer, resume the search and finally install. #+ATTR_HTML: :width 800px [[./screencasts/helm-system-packages-info-and-install.gif]]
  • Use Helm to find files of multiple packages across different sources. #+ATTR_HTML: :width 800px [[./screencasts/helm-system-packages-find-files.gif]]
  • Use Helm to explore the graph of the (reverse) dependencies. #+ATTR_HTML: :width 800px [[./screencasts/helm-system-packages-deps.gif]]
  • Development

WARNING: The programming interface is still under development and is prone to change.

Each module is rather straightforward, it only needs to define the following:

  • A helm-system-packages-FOO function that starts a Helm session.
  • An interactive helm-system-packages-FOO-refresh function to refresh the package list either manually or after transactions.

The =helm-system-packages.el= file provides some helper functions for Helm actions.

** Roadmap *** TODO Strengthen the interface with structures *** TODO Factor all "info" actions? We can add Org subsections for files, dependencies, etc. Those sections should be folded by default.

We probably still need specific "info" actions to insert at point. *** TODO Use bindings reflecting helm-list-elisp-packages *** TODO [#A] Port factorization to dpkg, portage *** TODO [#A] Port TRAMP support to brew *** Add option to display multiline candidates for long descriptions. *** With filtering, the displayed condidates won't include those above the candidate limit Can we include as many filtered candidates as possible?

  • References
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].