Skip to main content

display current i3 workspaces

Project description

i3expo

codecov CI

Overwiew

Expo is an simple and straightforward way to get a visual impression of all your i3 workspaces that many compositing window managers use. It's not a very powerful approach, but a very intuitive one and especially fits workflows that use lots of temporary windows or those in which the workspaces are mentally arranged in a grid.

i3expo emulates that function within the limitations of a non-compositing window manager. By listening to the IPC, it takes a screenshot whenever a window event occurs. Thanks to a fast C library, this produces negligible overhead in normal operation and allows the script to remember what state you left a workspace in.

The script is run as a background process and reacts to signals in order to open its UI in which you get an overview of the known state of your workspaces and can select another with the mouse or keyboard.

Example output:

Sample

Installation

pipx install i3expo

Usage

Launch i3expo from i3 config; alternatively you may prefer to run i3expo in a terminal in order to catch any errors in this pre-alpha stage.

Default configuration is written into $XDG_CONFIG_DIR/i3expo/config. Color values can be specified by using their PyGame names or in #fff or #ffffff hex.

Send SIGUSR1 to i3expo to toggle the Expo UI, for example by adding a bindsym for killall -s SIGUSR1 i3expo to your i3 config. Send SIGHUP to have the application reload its configuration.

Navigate the UI with the mouse or with they keyboard using hjkl, the arrow keys, Return and Escape.

Recommended i3 config:

  exec_always --no-startup-id i3expo
  for_window [class="^i3expo$"] fullscreen enable
  bindsym $mod1+e exec --no-startup-id killall -s SIGUSR1 i3expo

Note the script depends on pre-compiled i3expo/prtscn.so for screen-grabbing. If it doesn't work you may want to compile prtscn.c yourself following the instruction in the file header.

Limitations

Since it works by taking screenshots, the application cannot know workspaces it hasn't seen yet. Furthermore, the updates are less continuous than you might be used to if you're coming from a compositing WM where they can happen live and in the background.

Caution

This is pre-alpha software and some bugs are still around. It works for my own, single monitor and a common workflow. There is not much input validation and no protection against you screwing up the layout or worse.

Bugs

Stalled windows whose content i3 doesn't know cause interface bugs and could probably be handled better, but this needs more testing.

Daemon's cpu usage raises considerably upon first time UI gets rendered. Believe this has something to do with pygame not de-initing itself properly. Confirm this is still the case

Todo

  • It's theoretically feasible to take the window information from i3's tree and allow for dragging of windows from one workspace to another or even from container to container. However, this would be massively complex (especially on the UI side) and it's not clear if it would be worth the effort.
  • multimonitor support
  • pause screenshotting while screen is locked, eg via i3lock

Credit

Project details


Download files

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

Source Distribution

i3expo-0.0.1.tar.gz (19.1 kB view details)

Uploaded Source

Built Distribution

i3expo-0.0.1-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file i3expo-0.0.1.tar.gz.

File metadata

  • Download URL: i3expo-0.0.1.tar.gz
  • Upload date:
  • Size: 19.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for i3expo-0.0.1.tar.gz
Algorithm Hash digest
SHA256 8d210fce1e4a6ab179e403d62106009c9b3cfd9e510a9dc75939afd622e9150e
MD5 f75d3a1d06ed0529119dd5d1cae3868c
BLAKE2b-256 a7a4e242791e811a06bacd4817253251ad50e14a6bd838ae55ed96ce47489f82

See more details on using hashes here.

File details

Details for the file i3expo-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: i3expo-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 15.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.8

File hashes

Hashes for i3expo-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ae35cfc7f711b648c23bdb5f81674cdeb998b6da9b376c8fe7679308ffdbd9ce
MD5 50869a3182d9979e6f6e4f655ac752de
BLAKE2b-256 3ddf029a277014864a5b4cbe5aa8502ec3e2bff03c6788dee363ad89b6f9efca

See more details on using hashes here.

Supported by

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