Customizable launchpads of stored process instances, files and scripts. [more]
Categories:DeepSkyColors, Global
Keywords: toolbar, launcher, process icon, process instance, theme, skin, texture, group, separator, script, thumbnail, workflow.
[hide]
[hide]
PI LaunchPad gives PixInsight launchpads: toolbars, up to ten of them on screen at once, whose buttons each hold a complete process instance, a link to a file (images, an .xpsm file, etc), or a script. A single click launches a button exactly as double-clicking a process icon on the workspace does.
The point is not that PixInsight lacks a way to keep process icons around: it has one, and the workspace holds them perfectly well. The point is that a workspace full of icons is a pile, and a launchpad is a tool.
PI LaunchPad stores the process instance's own serialized definition, so once an item is added, the original process icon can be deleted and the button still works. We, the user, name the Items, arrange them, group by them, and they survive across sessions.
PI LaunchPad comes with 28 different launchpad themes, but if we want to design our own, the launchpads are ours to style. Every color, size, spacing, font, texture, image and effect belongs to a theme, and themes are files we can save, load and share. A launchpad can be a discreet vertical strip that looks like the rest of PixInsight, or a wide grid of labelled buttons over a Hubble frame; both are the same module with a different theme loaded. Each launchpad has a theme of its own, so both can be on screen together.
PI LaunchPad in use:
Eight launchpads, each with its own theme, on a PixInsight workspace.
[hide]
The only official distribution of PI LaunchPad is through DSC Hub, our free PixInsight process for installing and updating everything Deep Sky Colors makes. One address covers every one of our processes:
https://repo.deepskycolors.com/
Adding that repository to PixInsight installs DSC Hub, and PixInsight handles that installation itself, with our Developer and Repository certificates verified before it completes. We then open PROCESS > DeepSkyColors > DSCHub, select PI LaunchPad in the list, and click Download and install.
DSC Hub checks every download against a catalog that is digitally signed, and refuses anything whose checksum does not match. PixInsight then verifies the module's own signature every time it loads it, so a module altered after we published it is refused.
Keep that repository in the list. DSC Hub tells us at startup when an update for PI LaunchPad is waiting, and installs it in a couple of clicks. There is nothing else to add: the older per-module repositories are no longer needed, and DSC Hub offers to clear them away.
If you'd rather bypass DSC Hub and add one repository per process, PI LaunchPad still has its own: https://repo.deepskycolors.com/PILaunchPad/ DSC Hub will offer to remove it. Do NOT use these individual repositories and DSC Hub at the same time. We would be asked to install the same modules twice, if we do.
PI LaunchPad opens its launchpads by itself when PixInsight starts, as described below in 2.2. They can also be opened at any time, like every other process.
In Process Explorer or via the PROCESS menu, PI LaunchPad is listed under the DeepSkyColors and Global categories as PILaunchPad. Opening it shows the Main LaunchPad, even when it is hidden, and with it every other launchpad that is not hidden. This is the way back to a hidden Main LaunchPad: opening it this way also clears its Hidden setting.
The module has three kinds of window:
The launchpads deliberately have no control bar: no drag triangle, no Apply, no Reset. That is what makes them read as tool strips rather than as process dialogs. The consequence is that the control bar lives on the Manager window: the drag triangle a LaunchPad process icon is generated from, the button that opens this documentation, and the wrench that opens the license dialog.
The Main LaunchPad always has a manager button, which opens the Manager. There it cannot be removed, so there is always a way back into the Manager: the Main LaunchPad itself can always be reopened from the PROCESS menu. Every other launchpad may do without one and spend that cell on something more useful, and gets it back with Action in the Manager, which lists the manager button first while the launchpad has none (see 4.6). A new launchpad copies the buttons of the one it was made from, the manager button included when that one has it. From any launchpad, a Ctrl+right-click on a button opens the Manager at that button. The manager button can be renamed, given a custom icon, and moved anywhere in the order like any other item.
The three kinds of window:
A launchpad, the PI LaunchPad Manager and the Theme Editor.
PI LaunchPad opens the launchpads by itself every time PixInsight starts: every launchpad that is not hidden, the Main LaunchPad included. They appear a few seconds after PixInsight's own windows, and nothing is written to the Process Console. Installing PI LaunchPad while PixInsight is running opens them as well.
This is controlled by Open launchpads when PixInsight starts, under the table in the Manager's Edit LaunchPads window (see 5.1). It is on unless we turn it off, and it applies to the whole installation rather than to one launchpad. With it off, the launchpads open only when we open PI LaunchPad from the PROCESS menu or Process Explorer.
No special shortcut or startup script is needed. A shortcut made for an earlier version of PI LaunchPad, which starts PixInsight with PILaunchPadStartup.js, still works: that script now does nothing, so the launchpads do not open twice, and the shortcut can go back to starting PixInsight normally.
PI LaunchPad is licensed software with a 30-day trial. The wrench on the Manager window's control bar opens the license dialog, which reports the current status and is where an email address and a license key are entered.
When the trial ends, PI LaunchPad does not stop working. It continues as a free tier that launches the first five buttons of the Main LaunchPad. A notice says so once, the first time the module runs after the trial is over.
Nothing is ever deleted. A launchpad of twenty buttons stays a launchpad of twenty buttons: every item keeps its name, its icon, its custom settings and its stored definition, and the configuration file on disk keeps all of them. Buttons past the fifth are drawn greyed out and do not launch, and the Manager lists them all, marked needs a license, so we can see the work is intact. Registering brings every one of them back at once, with no import step and no restart.
The free tier is also one launchpad. Additional launchpads keep their buttons, their themes and their files, and stay editable in the Manager, but they do not open. Registering brings them back exactly as they were left.
The limit counts only what a button launches: process items, file items, scripts and actions. Separators, group headings and the manager button are exempt, so a five-button launchpad can still be organized freely. Themes are not limited in any way, and neither are configurations, the Theme Editor, or the themes that ship with the module.
Which five are live is simply the first five in the Main LaunchPad's order, so reordering its list chooses them. See 5.4.
The free tier:
After the trial, buttons past the fifth are greyed out on the launchpad and marked needs a license in the Manager. Nothing is removed.
[hide]
Each launchpad is a window of its own, titled with the launchpad's name. Inside it is a single custom-drawn surface rather than a row of ordinary buttons, which is what allows it to be themed as completely as it is.
A single click launches an item. Activation happens on release over the same button the press started on, so a click that drifts off a button does nothing, and a press that turns into a drag reorders instead of launching.
A Ctrl+click on a process button runs the process instead of opening it: on the active image when the process works on images, and globally otherwise, which is what dropping its icon on an image or on the workspace does. On any other button it does what a click does. A Ctrl+right-click on any button opens the Manager with that button selected. On macOS, Cmd takes the place of Ctrl.
While there is more than one launchpad, the manager button carries a small mark in its top right corner. Clicking the mark, rather than the rest of the button, opens the launchpad switcher. A plain right-click anywhere on a launchpad, on a button or between buttons, opens it too, which is how we reach it from a launchpad without a manager button. See 5.1.
A Ctrl+click on a group's title collapses the group to its title, and another expands it again. See 4.5.
Dragging a button moves it. A press becomes a drag after about five pixels of travel, and an insertion marker shows where the button will land. A drag can also move a button from one group to another: where it lands is decided by the group the cursor is over, so dropping it inside another group's frame moves it there, dropping it clear of every frame leaves it outside the groups, and an empty group accepts a button as readily as any other.
Hovering a button shows its name after a short delay. When Extended tooltip is on, the tool tip also shows the button's description and then, for scripts and other files, the original path to the file; for a process, the process it launches.
A launchpad window is resizable, and the bar fills it completely, which is why a background image covers the whole window rather than stopping at the buttons. Where the buttons sit in a window larger than they need is set by the theme's alignment. Fit window to launchpad, in the Theme Editor, shrinks the window back to exactly what the buttons need, spacing margin included.
The window resizes itself automatically whenever a change makes its old size meaningless: loading a theme, restoring defaults, reverting, or changing Display, Icon size, Columns or text Position. Other adjustments leave a window we have sized ourselves alone, so that editing a theme live does not fight us.
An extended tool tip:
Hovering a button shows its name and, with Extended tooltip on, its description and what it launches.
[hide]
A process item holds a complete process instance: the process and every parameter it was saved with. Clicking it opens that process with those parameters, which is what double-clicking a process icon does. A Ctrl+click runs it with those parameters instead, as described under Clicking.
Items are captured from process icons on the workspace, through Process icon in the Manager's Add row. What is stored is the instance's own serialized definition, so the workspace icon it came from can then be renamed or deleted without affecting the button.
A captured button is named after the icon, not its process: the icon id is what we called that particular instance, and it is what the Manager's third column shows. The name is editable; the column is not. Naming buttons after the process instead would call every captured PixelMath icon "PixelMath".
Process icon files. A .xpsm file holds one process icon or a whole collection of them. Adding one through File in the Add row captures the icons it names, as process items, rather than making a button that opens the file. A file holding twenty icons therefore becomes twenty buttons in one step, which is worth doing even for icons already on the workspace, since Process icon takes one at a time.
The icons do not have to be open in PixInsight. An icon the workspace already has is captured from it directly; any other is rebuilt from the file's own description of the instance, and the result is then serialized by PixInsight itself, so what a button stores is the same text a hand-captured one stores.
That conversion refuses rather than guesses. Every setting it restores is read back and compared, and an icon whose settings do not survive the round trip is reported by name and left out instead of being added with something approximate. A process the file needs but this installation does not have is reported the same way, and so is a Script icon whose script is not installed: the script is part of what that icon is, and a button that cannot run is worse than no button. Whatever could not be added is listed in the console with its reason.
Each stored definition carries a cryptographic signature, verified both when the launchpad is loaded and again when a button is clicked. An item whose definition does not match its signature is refused rather than launched. The configuration file is plain text in a user-writable folder, and a stored definition is executable script, so this is not a formality.
Icons come from PixInsight itself wherever it ships one for the process, and Deep Sky Colors processes carry their own icons inside the module.
Icons inside module files. Some third-party modules install no icon file and build their icons into the module file instead, as RC Astro's do. For a process with no icon anywhere else, we look inside the module files: first a module file named after the process, and when there is none, every module file that is not one of PixInsight's own. When exactly one module file names the process, it is the only process named there with no icon of its own, and the file holds exactly one square icon, that icon is used without asking. Otherwise the button shows PixInsight's generic blue cube, and Module icon... in the Manager lets us pick the right icon by eye, as described under 5.3.
What is found in a module file is remembered between sessions, so a file is read again only when it changes, as it does when the module is updated.
Add from workspace:
The process icons on the workspace, ready to be captured as buttons.
A file item holds a path. Clicking it opens that file in PixInsight.
Nothing about the file is checked when it is added: the path is stored as given, so a link to a file on a drive that is not currently mounted survives rather than being refused.
When the file is an image PixInsight can read, a thumbnail of it becomes the button's icon. The thumbnail is generated once, when the item is added, and stored inside the launchpad, so it is never regenerated afterwards. It is autostretched with PixInsight's own screen transfer function: astronomical data is linear, and a direct rendition of a light frame would be a black square.
Clear thumbnails in the Manager drops generated thumbnails so they are made again next time. An icon we chose ourselves is left alone: that is a decision, not a cache.
Folder buttons. A file item can hold a folder instead of a file. It is the quick way into a folder we keep returning to: the data of the current project, or a folder of masters. A folder button does two things:
The button's tool tip says which click does which. A folder is stored as given, like a file. When it is not available, as on a drive that is not mounted, the button says so instead of opening somewhere else. Its default icon is a folder, and the Manager lists it as Folder.
A file item whose path ends in .js is a script: clicking it runs the script rather than trying to open it as an image.
PixInsight scripts describe themselves, and LaunchPad reads that description rather than making us retype it. When a script is added:
#feature-id gives the button its name.#feature-icon gives it its icon, including the @script_icons_dir form that PixInsight's own scripts use.#feature-info gives it the description shown in its tool tip. Only the first line is taken, with its markup removed; a line that continues onto the next ends in an ellipsis.Script, in the Manager's Add row, lists every script installed with PixInsight that declares a feature id, which is the same test PixInsight uses to decide what belongs in the SCRIPT menu. The list can be sorted by script name, category or description, and several scripts can be added at once.
Add script:
Every script installed with PixInsight that declares a feature id, sortable by name, category or description.
A separator is a divider between buttons. It occupies a place in the order, is never a hit target, and cannot be clicked or launched.
By default its orientation follows the layout rather than the display mode: buttons stacked vertically are divided by a horizontal line, buttons side by side by a vertical one. The Theme Editor can make every separator vertical or every one horizontal instead.
A separator is compact by default: instead of a whole button's space, it takes its line plus some room on both sides of it, so the buttons either side of it close up while staying clearly apart. On a launchpad with more than one row or column, the buttons after a compact separator can end up out of line with the rows or columns around it. Turning Compact off in the Theme Editor gives every separator a whole button's space again, which keeps a grid in line. Its color, thickness and effects are set in the Theme Editor too.
A group is a titled band of buttons, drawn with its own frame and fill.
Groups are headings in the item list, and a button is in a group because it says so: membership belongs to the button, is kept with it in the launchpad file, and is shown in the Manager as Group: beside the button's name. Three things follow from that:
Each group starts a new row, which is what allows its frame to be a rectangle. Groups can be moved as a whole with Move up and Move down, which swaps a group with the whole group next to it: the first group has none above it and the last none below.
Groups are laid out like buttons: a group is only as wide as its contents need, and groups pack across the bar and wrap to a new line when the next one does not fit. Raising the column count therefore puts groups side by side rather than leaving empty space to the right of each one. Buttons line up across framed and unframed groups alike.
Whether a group draws its title and its frame belongs to the theme, and applies to every group at once: Groups > Font size set to Don't display hides the titles, and Groups > Frame set to zero hides the frames. Both are in the Theme Editor, described below.
Collapsing a group. A Ctrl+click on a group's title on the launchpad collapses the group: its buttons are hidden, the title stays, and the rest of the launchpad closes up around it. A collapsed title shows how many buttons it is hiding, as in Filters (5), so it never looks like an empty group. Another Ctrl+click on the title brings the buttons back. On macOS, Cmd takes the place of Ctrl.
A collapsed group stays collapsed until it is expanded again, PixInsight restarts included, and the Manager lists it as Group (collapsed) while still showing every button in it. A button dragged onto a collapsed group is added at the end of that group. Collapsing needs the title, so while a theme does not display group titles every group is shown expanded. The launchpad window shrinks or grows to fit, unless we have resized it ourselves.
Groups:
Buttons organized in titled, framed groups.
An action is a built-in command that works on whichever image is active when its button is clicked. It opens nothing: a click does it at once. Actions are added with Action in the Manager's Add row, which lists every action with its category and a description, and several can be added at once.
| Mask | Show/hide mask, Enable/disable mask and Invert mask, each of which toggles, so a second click turns it back. Remove mask takes the mask off the image altogether; the mask image itself stays open. |
| History | Undo and Redo. With nothing to undo or redo, a click does nothing. |
| Zoom | Zoom to fit, Zoom 1:1, Zoom in and Zoom out. |
| Display | Auto STF applies an automatic screen stretch to the active view, linked across its channels, the way the STF tool's auto button does. Auto STF (unlinked) stretches each color channel on its own, which neutralizes a color cast on screen, and Boosted Auto STF applies the STF tool's stronger, boosted stretch, for faint data. Reset STF removes the stretch. Toggle STF turns the stretch off and, on the next click, back on to the same stretch, for comparing the linear and the stretched view; when it has no stretch to put back, as on a view that started out linear, it applies a linked Auto STF. None of these change the image itself, only how it is shown. |
| Image | Save saves the active image to its file, and asks where when it has never been saved. Save As... always asks, opening on the image's own file when it has one, so a new name or format is one edit away; the image then refers to the new file. Image info writes the active image's size, channels, sample format, file, mask, number of previews and astrometric solution to the Process Console. |
| Windows | Close other images and Minimize other images act on every image window except the active one. Closing asks about unsaved changes as usual. Next image and Previous image bring the next or the previous open image to the front, in the order PixInsight keeps them. Flip images flips between two images, the way PixInsight's Ctrl+PgDown does: its first click brings the previous image to the front, and each click after that goes back to the other one, so the two can be compared in place. Selecting another image ourselves starts a new pair. All three pass over minimized images. |
A mask action on an image with no mask says so, and so does any action with no active image. Each action has a default icon of its own, which Set icon... replaces like any other. An action button counts toward the free tier's limit, the same as a process button.
While the selected launchpad has no manager button, the list starts with one more row, Manager, which puts the manager button back, with its switcher mark, where new buttons go. It is not an action, and it does not count toward the free tier's limit, so the list opens for it even when the limit has been reached. The Main LaunchPad always has its manager button, so the row never appears there.
A launchpad holding actions can be opened by an earlier version of PI LaunchPad without losing them: that version keeps the buttons, and says it cannot open them when one is clicked.
[hide]
The window is read in three boxes: LaunchPads, which chooses and manages the launchpads themselves; Current LaunchPad, holding the item list and what reorders it; and Current button, the name and description of the row selected in that list. Under them sits the row of actions, described in 5.6.
The Manager is where the launchpads' contents are administered, one launchpad at a time: the one selected in its top row, described next. It is opened from the manager button on any launchpad, and opens on that launchpad, as does the Theme Editor if it is open. It is a normal window: every launchpad stays usable while it is open.
The PI LaunchPad Manager:
The launchpad row at the top, the item list, and the controls that act on the selected launchpad.
There can be more than one launchpad. Each is a window of its own with its own buttons and its own theme, so a calibration strip and a stretching strip can sit side by side looking nothing like each other.
The row at the top of the Manager selects which one we are editing. Everything below that row applies to the launchpad named there: the item list, the ordering, the icons, and the theme the Theme Editor shows. The Theme Editor says which one it is pointed at in its first line, so a theme cannot be applied to the wrong launchpad by accident.
The launchpad switcher. While there is more than one launchpad, the manager button on each launchpad carries a small mark in its top right corner. Clicking the mark, rather than the rest of the button, opens the switcher, and so does a plain right-click anywhere on a launchpad, which works on a launchpad without a manager button as well: every launchpad on a row of its own, with a green dot when it is on screen, and a hollow dot on a darkened row when it is hidden. Clicking a row toggles it: a hidden launchpad is shown and brought to the front, and a shown one is hidden, the Main LaunchPad included. Below the rows:
The mark can be turned off for any launchpad with the Switcher column in Edit LaunchPads; the right-click still opens the switcher there. Without a license, the additional launchpads are listed but cannot be shown.
A new launchpad starting as a copy is deliberate: it opens looking like something rather than like nothing, and deleting the buttons that do not belong is quicker than adding the ones that do.
The first launchpad is the Main LaunchPad. It always exists, because it is what everything falls back to, and it is the window PixInsight opens when the PILaunchPad process is opened from the PROCESS menu or Process Explorer.
We can give it a name of our own. It stays the Main LaunchPad in every other respect, and wherever launchpads are listed it reads our name (Main LaunchPad), so the one that always exists stays recognizable in the list.
There can be up to ten launchpads. PixInsight registers a module's interface windows when the module is installed and cannot create one afterwards, so the windows are reserved in advance and handed out as launchpads are created. New LaunchPad is disabled once all ten are in use; deleting one frees it again.
When PixInsight starts, every launchpad that is not hidden opens, unless Open launchpads when PixInsight starts is turned off (see 2.2).
The LaunchPad row:
Choosing, hiding, renaming, deleting and creating launchpads.
The list shows every item of the selected launchpad in launchpad order. Group headings are shown in bold, with the buttons that belong to a group indented under its heading. Four columns:
The list is deliberately not sortable. The row order is the launchpad order, and a sorted view would misrepresent it.
Name: the field below the list renames the selected item. Press Enter to apply. Empty names are refused: an unnamed item is unidentifiable in the text modes and has no tool tip in the third.
Group: beside the name, which group the selected button is in, or (none). Choosing a group moves the button into it, at the end of that group; choosing (none) takes it out and leaves it beside the group it was in. With several buttons selected, all of them go together. It is disabled on a group heading, since groups do not nest, and it is the direct way to do what moving a button past a heading also does.
Description: a line about what the button does, shown under its name in the tool tip when Extended tooltip is on. For a script it starts as the script's own #feature-info. It is free text and purely descriptive: nothing written here changes what the button launches.
The Manager's buttons sit in three places, and this section follows them: under the item list in Current LaunchPad, in the toolbar along the bottom of the window, and in the Tools window that toolbar opens.
These act on the item selected in the list, or on every selected button when there are several (see 5.4). The same row holds Move up and Move down, described under 5.4.
| Delete | removes the selected item, or every selected button after asking. Deleting a group heading deletes the heading only: the buttons that were in it stay where they are, in no group. On the Main LaunchPad the manager button is refused, and stays behind when it is part of a selection; on any other launchpad it is removed like any other button. |
| Set icon... | gives the selected item a custom icon from an image file. SVG is best, because the launchpad's icon size is adjustable and SVG rescales cleanly, but any image PixInsight can read works. The icon is stored inside the launchpad, so it travels with saved configurations and exported process icons rather than pointing at a file that might move. With several buttons selected, every one of them gets the same icon; separators are skipped. |
| Default icon | drops the custom icon, so the item falls back to the default for its type. With several buttons selected, each one goes back to its own default. |
| Module icon... | shows the icons built into the module files that name the selected process, and gives the item the one we click. Enabled only for a process button whose process has no icon of its own, from PixInsight or from PI LaunchPad, and only while a single row is selected. The dialog says where the icons came from: the module file named after the process when there is one, or otherwise every module file that mentions the process, in which case some of the icons may belong to other processes. Square icons are shown first, the likeliest ones first, up to 24; Show all appears when some were left out, and lists every one. The chosen icon is stored the way one from Set icon... is, and Default icon drops it. |
Its first row is the Insert button box, whose buttons add one kind of button each, so their labels leave the word add out. The icons shown here are what the same actions carry in the icon toolbar (see 5.6).
| Process icon | lists the process icons currently on the workspace, and captures the chosen ones. | |
| Process | lists the processes installed in PixInsight and adds the chosen ones. The button opens its process with the process's own default parameters, the way Process Explorer does, so nothing is captured and nothing is stored: to keep a process with settings already in it, use Process icon instead. The list can be filtered by name or category and sorted by either, and several processes can be added at once. Processes with no interface are not listed, because a launchpad button opens a process and those have nothing to open. | |
| Script | browses the scripts installed with PixInsight. See 4.3. | |
| File | adds a button that opens a file. Not restricted to images: what PixInsight can open is the core's business, not this module's to second-guess. A .xpsm is treated as what it is, a process icon file, and is described under 4.1. | |
| Folder | adds a button for a folder: a click shows it in the file manager, and a Ctrl+click opens files from it. See 4.2. | |
| Action | lists the built-in actions on the active image and adds the chosen ones. See 4.6. | |
| Separator | adds a divider. See 4.4. | |
| Group | adds a group heading at the end, selects it, and puts the cursor in the Name field, since naming it is the next thing anyone does. With several buttons selected, it asks for the group's name first, then moves those buttons into the new group, in their order. |
A new button is inserted right after the selected row, and joins whatever group that row is in. Several added at once arrive in order, after it, and with a block selected they land after the last row of the block. With nothing selected they go at the end of the launchpad, in no group. The button just added is then the selected one, so naming it, giving it an icon, putting it in a group or moving it needs no hunting for the row.
The second row acts on the launchpad as a whole:
| Tools... | opens the Tools window, described below. | |
| Load... | under Theme:, opens the theme loader on the selected launchpad. See 6.7. | |
| Edit | under Theme:, opens the Theme Editor on the selected launchpad. See 6. |
Tools... opens a window of its own, with four icon buttons: Load LaunchPad, Save LaunchPad, Restore backup and Clear thumbnails. It opens over the button we clicked, and one click both chooses and closes it. What each one does is described under 5.5.
Move up and Move down move the selected item one row, exactly as though the list were flat, and the row it lands after says which group it is now in. Moving an item past a group heading is therefore how it enters that group, and moving it past the last button of a group is how it leaves. The Group: field described in 5.2 does the same thing in one step.
At the very bottom of the list there is no row to move past. Move down on the last row therefore takes that button out of its group and leaves it where it is, which is the only thing down can mean there; on a button that is in no group it does nothing.
When the selected item is a group heading, the whole group travels with it, and it swaps with the entire group next to it rather than with a single row.
To move an item several rows at once, we select it and Ctrl+click the row it should go below (Cmd+click on macOS); the selection follows the moved item. Ctrl+clicking a group heading makes the item the first one in that group. A selected group heading takes its whole group, and lands after the whole band the clicked row belongs to, its own group or the run of ungrouped buttons around it, so no group is ever split. Move up is the way to put an item first.
Several buttons at once. A Shift+click on another row selects every row between the two, and the row clicked last becomes the active one. Shift with the arrow keys, and Ctrl+A, extend the selection the same way, and it is always one unbroken run of rows. Group headings inside the run are never part of it: they are left unselected, so a selection is always a block of buttons that moves around the groups.
With a block selected, Move up and Move down move the whole block, and the whole block joins what it lands after. A block at the bottom of the list leaves its group on Move down, the way a single button does. Each press takes it past the next row that is not part of it, counted from the block's first row going down and from its last row going up. When the block spans a group heading, the first press therefore gathers the block on one side of that heading, and every press after that moves it one row. A Ctrl+click takes the block out and puts it right below the clicked row, in its order; a Ctrl+click inside the selected run does nothing. Either way the block stays selected. Set icon..., Default icon, Delete and Group act on the whole block too, as described under 5.3, and Module icon... is disabled.
Clicking any other control drops the selection back to the active row, and then that control does what it always does. So does clicking into the Name or Description field, since both edit a single button.
Dragging buttons on the launchpad itself does the same job, and moves an item between groups as well: the group the cursor is over is the one it joins.
The manager button is not special about any of this: it can be moved, and put in a group, like any other button.
A configuration is a whole launchpad: its items and its complete theme, in one file. The four buttons of the Tools window (see 5.3) are what acts on a launchpad as a whole:
.pilp file. A theme on its own is a .pilptheme file. LaunchPads saved by earlier builds used .txt; those still load, and the Load dialog keeps a filter for them.Loading is destructive by design: loading a saved configuration means switching to it. It is not a one-way door, though. The launchpad being replaced is kept first as a restore point, and the console says so; if the restore point cannot be written, the launchpad is not replaced.
A LaunchPad process icon replaces launchpads too, when it is double-clicked or dropped on the Manager. A process icon carrying no launchpad, such as one just created from Process Explorer, is treated as a request to open the Main LaunchPad and changes nothing.
An icon carries every launchpad, and each one goes back to its own slot, with its name, its theme and its hidden state, wherever we drop the icon and whichever launchpad the Manager is pointed at. Those that are not hidden open. Importing an icon on a second machine therefore reproduces the whole set we exported from the first.
A launchpad that already matches the icon is left alone, so opening the same icon twice changes nothing. A launchpad the icon replaces is first kept as a restore point, and the console names it; if the restore point cannot be written, the launchpad is not replaced. Nothing is restored from a launchpad the icon could not read when it was generated.
A restore point is a launchpad as it was at a moment worth coming back to. One is kept:
Opening and closing the Theme Editor without changing anything keeps nothing. Each launchpad keeps its ten most recent restore points. The launchpad's previous generation is offered too: every change keeps the one before it, so the most recent change can always be undone.
Restore backup lists the selected launchpad's restore points, newest first. Each shows the date and time it was kept and what replaced the launchpad at that moment, such as 2026/09/11, 22:12:04 : Before a theme was loaded. A point kept under a different name, which happens when a deleted launchpad's place is reused, shows that name in parentheses at the end.
Restoring replaces the launchpad's buttons and theme; its name, and whether it is hidden, stay as they are. The launchpad as it was before the restore is kept as a restore point of its own, so a restore can itself be undone.
The Restore dialog:
The restore points kept for the selected launchpad, each labelled with when and why it was kept.
The Manager's actions come in two forms, and the small button at the right of the row chooses between them. The first is the text buttons described above: the Insert button box, and under it Tools... and the launchpad's theme. The second is a single row of icons, one action per button, in this order: Icon, Process, Script, File, Folder, Action, Sep. and Group, then after a gap Tools, Load and Edit. Load is the theme loader and Edit the Theme Editor.
The two are the same actions, and a button on one does exactly what its counterpart on the other does. The gap separates adding a button from what acts on the whole launchpad. Deleting a button, and the icon of the button selected, live with the item list in Current LaunchPad rather than in either form.
The chooser sits at the end of both: a small square button after Edit among the text buttons, and a narrow one at the end of the icon row. The choice is remembered between sessions. It belongs to the installation rather than to a launchpad, so it is the same whichever launchpad the Manager is pointed at, and a launchpad shared with someone else does not carry it.
[hide]
A theme owns everything visual about a launchpad, including its layout. That is deliberate: loading a theme can turn a vertical strip into a horizontal grid, because that is a legitimate part of a look.
Each launchpad has its own theme. The Theme Editor edits the theme of the launchpad selected in the Manager, and names that launchpad in its first line. It is a normal window, not a dialog, and every change applies to that launchpad immediately. There is no OK to press.
Change to: at the right of the first line, lists every other launchpad. Choosing one moves the Theme Editor to that launchpad's theme, and the Manager with it, exactly as choosing it in the Manager's LaunchPad list does. When the current theme has changed since we started editing it, we are asked first: Yes keeps the changes, No discards them, putting the theme back the way it was, as Revert does, and Cancel stays on the current launchpad. The combo is disabled while there is only one launchpad.
Theme name: what this look is called. It is saved into theme files and shown when one is loaded. It is not an identity: two themes may share a name.
The settings are grouped into sections, each under a bar that collapses and expands it, so that only the part being worked on needs to be on screen. The window resizes itself to whatever is open, and every section starts expanded.
The Theme Editor:
Every setting of the selected launchpad's theme, applied as it is changed.
Layout holds what arranges buttons. What a button looks like is in Buttons.
Changing Display, Icon size or Columns refits the window automatically: each of them changes the shape of every button, so the window's old size no longer means anything.
\n, typed into it in the Manager; under every other setting, and in the tool tip, a typed \n reads as a space. | and _ start one at those characters. Capitals starts one before a capital letter that follows a lowercase letter or a digit, so HistogramTransformation becomes Histogram and Transformation, while an acronym such as SPCC stays whole. The character a label breaks at is not drawn, and Trim to applies to each line. Every button is as tall as the label with the most lines, and changing the setting refits the window.The amount beside the combo drives all of them: the scale for Magnify, the rise for Lift, the halo's width for Glow, how far Brighten lightens.
Everything about what a button looks like.
Every color is chosen with the Deep Sky Colors picker, and every one has an opacity. Opacity 0 means the element is not painted at all, which is how an optional fill or border is switched off; the picker's None button is the direct way to say that.
A swatch previews its color over the two grounds it will really be seen against: on the left the launchpad's own background, or a piece of the background image when there is one, and on the right a contrasting neutral so that a translucent color reads as translucent.
How solid the icons are, independently of every color above. It is its own setting because a translucent button with a solid icon on it is a perfectly reasonable thing to want.
An image tiled inside every button, over the fill and under the border, and clipped to the button's own shape including its rounded corners. There is no fit mode to choose: a button is small and repeats across the bar, so a texture is the only thing that reads well at that size. It has its own Opacity, so a faint texture over a solid button color is possible. Remove drops it.
The style of separator items, next to the color that draws them.
What a group's frame, fill and title look like, and whether groups draw them at all. These apply to every group on the launchpad at once: Size set to Don't display hides the titles, and Frame set to zero hides the frames.
The launchpad's ground: a color, and optionally an image over it.
Images are embedded in the theme, not referenced by path, so a theme file and an exported process icon carry their own artwork and survive being copied to another machine. Because every byte of a theme image is copied into every configuration we save and every process icon we export, a theme image is resized when it is set: a background image is scaled to fit 2048 pixels on its longer side and a button image to fit 1024, always the whole image and never a crop. It is stored as JPEG, or as PNG when it has transparent pixels. An image that already fits keeps its original file unless re-encoding makes it smaller, and an SVG image is kept as it is. Any other format PixInsight can open, such as XISF or FITS, is converted the same way; 32-bit floating point data, which is usually linear, gets an automatic stretch first, and integer data is used as it is. A button image is tiled at its own size, so a scaled-down texture repeats more often. A theme image file can be up to 100 MB, and what is stored from it is kept within 1000 KB: a JPEG gives up quality first, and then, like a PNG, size. An SVG is stored as the text it is, so its file must be within 1000 KB itself. An icon file can be up to 4 MB.
A skinned launchpad:
A background image behind the buttons, and a texture inside each of them.
PIThemeStudio-current.pilptheme file PI ThemeStudio writes is one too, and carries the Main LaunchPad's layout; to take only PI ThemeStudio's look, we use Apply PITS Theme in the Manager (see 5.1)..pilptheme file.Loading a theme, restoring defaults and reverting all refit the launchpad window, since each of them brings a whole layout with it. Loading a theme, restoring defaults and Undo each keep a restore point first, so none of them is a one-way door; see 5.5.
The theme loader chooses a theme by looking at it. It opens from Load theme... in the Theme Editor, and from the Manager's Load... under Theme: (Load in the icon toolbar), and it works on the launchpad the Manager is pointed at.
[hide]
The module ships 28 themes, under src/scripts/PILaunchPad/themes in the PixInsight installation. They are loaded from the Theme Editor, and loading one changes how a launchpad looks and nothing about what is on it, so trying them costs nothing.
7 of them are the Relaxing family: one compact layout in several palettes, so moving between them changes the colors and leaves every button where it was.
The theme pack:
27 of the shipped themes, each applied to the same launchpad and all at the same scale. They range from one-button-per-row strips to multi-column grids and wide bars, from flat and minimal to textured and photographic. Raising Columns in the Theme Editor turns any strip into a grid, so a theme's shape is a starting point rather than a decision.
A starter launchpad of 15 common PixInsight processes is included as well, as Starter-15-processes.pilp. It carries no theme data at all, which makes it a neutral launchpad for trying the themes on.
Textures and astronomical images are not part of the module. They are offered separately, as a free download, and can be kept anywhere: the Theme Editor browses to a folder of our choosing for a button texture or a launchpad skin, so where they live is our decision rather than the installer's. The pack is at:
[hide]
The launchpads live in a PILaunchPad folder under PixInsight's per-user configuration directory. On Windows that is typically:
%AppData%\Pleiades\PILaunchPad\
toolbar.pilp | The Main LaunchPad: its name, its items and its theme. |
toolbar-2.pilp ... | One file per additional launchpad, numbered the way they are counted. |
toolbar.pilp.previous ... | The generation before the current one, one per launchpad: toolbar-2.pilp.previous and so on. Every save keeps one. |
RestorePoints\ | The restore points: up to ten per launchpad, each an ordinary launchpad file named after its launchpad and the time it was kept. |
module-icons.cache | What was found inside third-party module files while looking for process icons, as described under 4.1. A module file is read again only when its size or date changes. Deleting this file loses nothing: it is rebuilt when needed. |
PIThemeStudio-current.pilptheme | Written by PI ThemeStudio, not by PI LaunchPad, whenever the theme in force changes: the theme Apply PITS Theme reads its colors from (see 5.1). Present once PI ThemeStudio has applied a theme. A theme with a panel skin has its image copied beside it, as PIThemeStudio-current-panel.png or whatever the original's format is. |
Each launchpad carries its own name, hidden flag, description and switcher setting inside its own file, and which launchpads exist is worked out by looking at the folder. There is deliberately no separate index: an index would be a second copy of the truth, and when the two disagreed there would be no way to tell which was right.
The launchpad is written after every change rather than at shutdown, because a module interface is not guaranteed a clean teardown: PixInsight can be closed, or fail, with the window still open.
Previous generations and restore points exist so that no way of replacing a launchpad is a one-way door, and Restore backup in the Tools window brings any of them back. A restore point is an ordinary launchpad file, so Load LaunchPad can open one directly as well.
These are plain text files. A launchpad that exists but cannot be read is never overwritten with an empty one: the console reports it and saving is refused until the problem is resolved, so the file survives for inspection.
Themes, configurations, skins, button textures, added files and item icons each remember the folder they were last used in, so the file dialogs open where we were working.
[hide]