Coder Social home page Coder Social logo

podman-tui's Introduction

podman-tui

License GitHub release (latest SemVer) Go Go Report codecov

Terminal user interface for Podman v4 and v5.

Screenshot

Overview

podman-tui is a terminal user interface for podman v4 (>=4.0.2) and v5. It is using podman go bindings to communicate with local or remote podman machine (through SSH).

Installation

Building from source (Linux, Windows and MacOS) or installing packaged versions are detailed in install guide.

PreRun Checks

  • podman.socket service needs to be running on podman machine. The recommended way to start Podman system service in production mode is via systemd socket-activation:

    $ systemctl --user start podman.socket

    See start podman system service for more details.

  • If the SSH key has a passphrase, then you need to set and export CONTAINER_PASSPHRASE=<password> variable.

    $ export CONTAINER_PASSPHRASE=keypass
  • podman-tui uses 256 colors terminal mode on Nix system and standard ANSI colors on Windows system (use "command prompt" application).

Key Bindings

Check podman-tui docs for keyboard mappings.

Code of Conduct

This project is using the Containers Community Code of Conduct

License

Licensed under the Apache 2.0 license.

podman-tui's People

Contributors

aaronjheng avatar baude avatar dependabot[bot] avatar jlosito avatar misobarisic avatar navidys avatar rahilarious avatar rhatdan avatar tony-sol avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

podman-tui's Issues

Support unified view from multiple socket files

Is your feature request related to a problem? Please describe.
I run one container in each own separate linux user

Describe the solution you'd like
It would be useful to view all them in an unified view, instead of cycling through them by doing machinectl shell username@ podman-tui

Additional context
a configuration parameter should parse a list of socket files to talk to (given permissions ofc), instead of assuming talking to this user's podman socket service

Build error archive.go:11:2: cannot find package "." in: /usr/src/podman-tui/vendor/io/fs

Even though I ran apt install make libgpgme-dev libbtrfs-dev libdevmapper-dev libassuan-dev pkg-config before, building from master with make binary fails on debian 11.4:

running go build
go build -mod=vendor  -o ./bin/podman-tui
vendor/github.com/containers/storage/pkg/archive/archive.go:11:2: cannot find package "." in:
        /usr/src/podman-tui/vendor/io/fs
make: *** [Makefile:38: podman-tui] Error 1

🤔

Support for setting published ports in Pods

Is your feature request related to a problem? Please describe.
The "create" menu in Pods does not allow for setting published ports.

Describe the solution you'd like
A "Ports Settings" tab similar to what is available in the Containers menu.

Additional context
Quoting the Podman podman-pod-create documentation directly:

You must not publish ports of containers in the pod individually, but only by the pod itself.
This cannot be modified once the pod is created.

Otherwise, I must say, this is a brilliant application and I greatly appreciate the work you've put into it!

Binaries for Oracle Linux (OCI)

Is your feature request related to a problem? Please describe.
It would be very useful to have binaries for Oracle Linux (OCI) used on Oracle Cloud compute instances.

Oracle Linux uses podman, not docker, which is why podman-tui at the moment is the only TUI tool for podman.

Describe the solution you'd like
Build static binaries for amd64.

Additional context
Alas, building it from sources is also not accessible due to missing packages for dependencies.

I am using Oracle-Linux-8.6-2022.08.29-0 image.

I ended up with the following:

wget https://github.com/containers/podman-tui/archive/refs/tags/v0.5.0.tar.gz
tar xvzf v0.5.0.tar.gz
cd podman-tui-0.5.0/

make binary

running go build
go build -mod=vendor  -o ./bin/podman-tui
# github.com/proglottis/gpgme
vendor/github.com/proglottis/gpgme/data.go:4:11: fatal error: gpgme.h: No such file or directory
 // #include <gpgme.h>
           ^~~~~~~~~
compilation terminated.
# github.com/containers/storage/drivers/btrfs
vendor/github.com/containers/storage/drivers/btrfs/btrfs.go:9:10: fatal error: btrfs/ioctl.h: No such file or directory
 #include <btrfs/ioctl.h>
          ^~~~~~~~~~~~~~~
compilation terminated.

sudo dnf install btrfs-progs-devel device-mapper-devel gpgme-devel libassuan-devel
Last metadata expiration check: 1:48:19 ago on Tue 06 Sep 2022 14:59:23 GMT.
No match for argument: device-mapper-devel
No match for argument: gpgme-devel
No match for argument: libassuan-devel
Error: Unable to find a match: device-mapper-devel gpgme-devel libassuan-devel

add macOS support

I was able to build it on macOS M1, but it is stuck on connecting to podman machine.

Publish podman-tui to homebrew

Is your feature request related to a problem? Please describe.
Currenlty the popular macOS package manager Homebrew is not supported, while other package manager for various Linux distros are supported. Building from source is doable, but keeping podman-tui up to date this way is a bit more annoying. Beeing able to use a package manager would be more convenient.

Describe the solution you'd like
Publish podman-tui to Hombrew as well.

Additional context
Pleeeease :D

Do we need a new release for podman 4.4?

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is.

Describe the solution you'd like
A clear and concise description of what you want to happen.

Additional context
Add any other context or screenshots about the feature request here.

Env variables substitution in services' URI in config file

Is your feature request related to a problem? Please describe.
I want to make a distributable podman-tui config, which will relate to bundled env variables, but services' URI read from config file as is, so only full path required.
That's why it's not possible to replace this

[services]
  [services.localhost]
    default = true
    uri = "unix:///Users/tony/.local/share/containers/podman/machine/qemu/podman.sock"

with this

[services]
  [services.localhost]
    default = true
    uri = "unix://${XDG_DATA_HOME}/containers/podman/machine/qemu/podman.sock"

Describe the solution you'd like
Here

func (c *Config) readConfigFromFile(path string) error {
log.Debug().Msgf("config: reading configuration file %q", path)
c.mu.Lock()
defer c.mu.Unlock()
meta, err := toml.DecodeFile(path, c)
if err != nil {
return fmt.Errorf("config: %w decode configuration %q", err, path)
}
keys := meta.Undecoded()
if len(keys) > 0 {
log.Debug().Msgf("config: failed to decode the keys %q from %q.", keys, path)
}
return nil
}

add env variable substitution

Additional context
Add any other context or screenshots about the feature request here.
Nope

test failing if the user's home directory is not at `/home/$USER`

Describe the bug
Trying to update the nixos package I'm hitting an error during test phase:

=== RUN   TestUtils
Running Suite: UI Utils Suite - /build/source/ui/utils
======================================================
Random Seed: 1665045212

Will run 10 of 10 specs
••
------------------------------
• [FAILED] [0.000 seconds]
utils
github.com/containers/podman-tui/ui/utils/utils_test.go:12
  [It] resolve home directory
  github.com/containers/podman-tui/ui/utils/utils_test.go:33

  Expected
      <string>: /homeless-shelter/path02
  to equal
      <string>: /home/nixbld/path02
  In [It] at: github.com/containers/podman-tui/ui/utils/utils_test.go:50
------------------------------
•••••••


Summarizing 1 Failure:
  [FAIL] utils [It] resolve home directory
  github.com/containers/podman-tui/ui/utils/utils_test.go:50

Ran 10 of 10 Specs in 0.001 seconds
FAIL! -- 9 Passed | 1 Failed | 0 Pending | 0 Skipped
--- FAIL: TestUtils (0.00s)
FAIL
FAIL    github.com/containers/podman-tui/ui/utils       0.009s
FAIL
error: builder for '/nix/store/3dpvwc0yiybf0mn1cr1xiif0yvd61dzc-podman-tui-0.6.0.drv' failed with exit code 1;
       last 10 log lines:
       > Summarizing 1 Failure:
       >   [FAIL] utils [It] resolve home directory
       >   github.com/containers/podman-tui/ui/utils/utils_test.go:50
       >
       > Ran 10 of 10 Specs in 0.001 seconds
       > FAIL! -- 9 Passed | 1 Failed | 0 Pending | 0 Skipped
       > --- FAIL: TestUtils (0.00s)
       > FAIL
       > FAIL github.com/containers/podman-tui/ui/utils       0.009s
       > FAIL
       For full logs, run 'nix log /nix/store/3dpvwc0yiybf0mn1cr1xiif0yvd61dzc-podman-tui-0.6.0.drv'.

To Reproduce
Run tests in an environment where the current user's $HOME is not at /home/$USER.

Expected behavior
The test should not assume the home directory to always be at /home/$USER.

Desktop (please complete the following information):

  • OS: nixos 22.05
  • Podman Version: irrelevant
  • Podman TUI version: 0.6.0

Pre-Built Binaries for Easy Installation

Is it possible to pre-build the binaries with each new release, so that it can be easily installed just by downloading via curl or wget like below?

wget PODMAN_TUI_RELEASE_URL

Otherwise one has to download the repository, install go, then build the app, which is a bit much

Remove Select button to improve usability of the command menu

Is your feature request related to a problem? Please describe.

image

This case a bit confused. While using I'm not 100% sure which button is selected. Select with magenta highlight, or Cancel with white highlight. The select button seems useless, the selected item of this menu is already select.

Describe the solution you'd like

Removing Select button fixes the issue. The Tab button behavior should be kept:

mockup

Additional context

This mehanism uses ncspot in their context menus.

Update docs to reflect API version >=3.1 + build info debian bullseye

I'm running debian bullseye and spent some time getting podman-tui to build. When finally starting it up getting the error that the podman API version 3.0.0 is too old.

Perhaps also add the following build dependencies for debian bullseye users?

  • libgpgme-dev
  • libbtrfs-dev
  • libdevmapper-dev

(I'd open a pr and make these changes myself, if I knew how) :-)

Add remote connection

I have a server using Podman running in a cloud.

1 - Is it possible to connect using podman-tui?
2 - If yes, can you add an example about how-to?

Selecting multiple items

Is your feature request related to a problem? Please describe.
I would like to be able to perform mass operations, e.g., select multiple images and delete them in one action.

Describe the solution you'd like
Currently, actions are always only focuse on the currently selected item. l would like to be able to select multiple items an perform an operation in batch on them.

Additional context
None.

Participating in Hacktoberfest?

Is your feature request related to a problem? Please describe.
I was wondering if this project was participating in hacktoberfest. I didn't see anything related to the topic, so I figured I'd ask.

https://hacktoberfest.com/participation/

Describe the solution you'd like
If participating in hacktoberfest, would it be possible to add the hacktoberfest topic to this project? If not, that's fine too.

Change memory usage format

Is your feature request related to a problem? Please describe.

Hi,
The memory usage field includes the cached memory, I found it a bit confusing at first.
I guess green is cache, orange is buffers and pink is used memory ?

Describe the solution you'd like

Would it be possible to add additional values like top or change the value displayed to used memory instead ?

Additional context

It would be nice to have, but I understand if it is overkill.
Great tool !

Feature request: vim-like keybinding

I would like to see something similar to the navigation key mappings in ncpamixer or tremc.

  • Shift+l: Switch to the next tab (pods, containers, volumes, ...)
  • Shift+h: Switch to the previous tab
  • j: Move down
  • k: Move up
  • l: Move right
  • h: Move left
  • q: Exit application
  • c: Open drop-down menu. Could be used to switch between remotes.
  • m: Commands menu
  • h: Help menu (display keybindings)

CI needs

Do you have any tests you would like to run in CI? How about a DCO check?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.