roundabout,
created on Sunday, 3 August 2025, 18:55:33 (1754247333),
received on Sunday, 3 August 2025, 18:55:47 (1754247347)
Author identity: Vlad <vlad.muntoiu@gmail.com>
1e34c653bd411c60b32c576bb58f8320a8e44dbc
README.md
@@ -0,0 +1,70 @@
Panorama panel ============== The Panorama panel provides a configurable and traditional desktop panel (taskbar) for traditional environments, especially the upcoming "Panorama DE". It only runs correctly in Wayland compositors with layer-shell support, and is designed specifically for Wayfire. One can set up this program to display one or multiple panels on the screen, each panel is set to display on a particular edge of a particular monitor, it has a configurable size, can hide itself unless the mouse is over it and holds applets in the left, centre or right areas. Every widget you see on the panels is an applet provided by a dynamically loaded Python module. Dependencies ------------ * GTK 4.6 or newer * [GTK4 Layer Shell](https://github.com/wmww/gtk4-layer-shell) * libwayland * Python 3.10 or newer * [pywayland](https://pypi.org/project/pywayland/) * [PyGObject](https://pygobject.gnome.org/) * [ruamel.yaml](https://yaml.dev/doc/ruamel.yaml/) For Debian and Ubuntu, this can be executed in the command: ~~~ sudo apt install libgtk-4-dev libgtk4-layer-shell-dev libwayland-dev python3 python3-gi python3-ruamel.yaml ~~~ Alternatively you can use venv. You also need a Wayland compositor that supports the wlr-layer-shell protocol, which is supported by most reasonably popular compositors except GNOME, Weston and Cage. To use the included `wf-window-list` applet you need a Wayland compositor that supports wlr-foreign-toplevel-management, that is, one based on wlroots, Hyprland, Louvre or Mir. Usage ----- Unless you're installing from a hypothetical package which would create a system-wide directory for applets, it is recommended to store them in the user-specific location. These are `~/.local/share/panorama-panel/applets` for applets and `~/.config/panorama-panel/config.yaml` for config. For development purposes, it is recommended that you make them symbolic links to the corresponding location in the repository. After creating these directories, simply run the code and the panels should appear on your screen. Writing applets --------------- See [implementing-applets.md](docs/applet-api/implementing-applets.md). Configuration ------------- The configuration is in `~/.config/panorama-panel/config.yaml`. See [configuration.md](docs/configuration.md) for information. A configuration GUI is supported by right-clicking an empty area of the panel and choosing "Open manager". Not all settings can be currently changed there. The panel you're currently editing will flash when it is selected. The toggle "Panel editing mode" makes applets draggable for you to reorder them.
docs/configuration.md
@@ -0,0 +1,56 @@
Configuring the Panorama panel ------------------------------ The panel loads all its configuration from a file `~/.config/panorama-panel/config.yaml`. The format has a single top-level key `panels` which is a list of the panels to generate. Each panel has the following keys: * `position`: `top`, `right`, `bottom` or `left`; specifies the edge of the monitor to show the panel on * `monitor`: the index of the monitor to show the panel on (usually refers to the order in which the monitors are plugged in) * `size`: the thickness of the panel in pixels * `autohide`: whether the panel automatically hides leaving only 1px * `hide_time`: the duration in ms of the sliding animation (not applicable if `autohide` is `false`) * `applets`: a dictionary with keys `left`, `centre`, `right`; they are actually named wrong and are start/centre/end areas, each key has a list of applets, each applet is described by a dictionary with a single key being the class name and the value being a dictionary with configuration options (the options depend on the applet) Example: ~~~yaml panels: - position: top monitor: 0 size: 40 autohide: false hide_time: 300 applets: left: - WFWindowList: {} centre: [] right: - ClockApplet: formatting: '%T, %a %-d %b %Y' ~~~ The order the panels are specified in decides how they occupy the screen, thus, if you specify panel 1 on top, panel 2 on left, and panel 3 on bottom it will look like: ~~~ =========================== =111111111111111111111111111= =22 = =22 = =22 = =22 = =22 = =22 = =223333333333333333333333333= =========================== ~~~