Rand Stats

App::pack.raku

zef:grizzlysmit

App::pack

app pack.raku

Table of Contents

key => directory methods

key => directory management methods

Editor functions/methods

USAGE stuff

NAME

App::pack

AUTHOR

Francis Grizzly Smit (grizzly@smit.id.au)

VERSION

v0.1.53

TITLE

pack

SUBTITLE

A Raku program to manage the use of gnome-extensions pack, it has too many arguments this makes it easy.

COPYRIGHT

©2025 Francis Grizzly Smit GPL V3.0+ LICENSE

Top of Top of Document

Introduction

This is a Raku program to manage the use of gnome-extensions, originally gnome-extensions pack, it has too many arguments this makes it easy, as it puts all the arguments in a configuration file.

Motivation

The original motivation was that the command gnome-extensions pack has too many arguments this takes care of that making it easier to package up your gnome-shell extensions; at the expense of setting up a configuration file once, and there are methods for that.

Now in addition I wrap gnome-extensions create as well, plus I create extra stuff like the schema file, the credits field in the metadata.json file; it also creates the po dir and creates compile.sh to populate it with the gettext stuff, and to process the schema file into it's binary form.

A brief tutorial.

To create a new plugin just call

pack.raku plugin new <key> --all --force

You can alternately use --prefs --schema-file --podirs --add-credits leave out the --prefs out if you don't need settings (i.e. a prefs.js file), you can leave out --schema-file if you do not need a schema file, you can leave --podirs if you don't want internationalisation, you can leave of --add-credits if you don't want to add credits and you can leave off --force if you don't want the force parameter when packaging the extension.

The program will prompt for all the parameters it requires once run it will have created a basic extension and moved it into a development location; by default the current directory from which you ran pack.raku plugin new from. The underlying program gnome-extensions create creates the extension in the directory of the live extensions I move it to the specified development area so you don't mess up your development computer while working, I recommend testing on a VM or at least a less important computer.

NB: I use the words "plugin" and "extension" interchangeably.

The commands pack.raku plugin add and pack.raku alias do assume you are in the directory in which the plugin(s) reside for now this is a fetcher, later I may change that.

Table of Contents

example of using pack.raku plugin new key --all --force

05:03:07 θ71° grizzlysmit@pern.local:~/Projects/gnome-shell/extensions 7s $ pack.raku plugin new fred --all --force
uuid: fred@grizzlysmit.smit.id.au
name: fred? hit enter to accept or type in new value followed by enter.
Please enter a multi line description!
terminate with two empty lines.
1> This is a dummy plugin
2> 
3> It is just a test
4> 
5> 
gettext-domain: fred? hit enter to accept or type in new value followed by enter.
Please enter credits lines!
terminate with two empty lines.
1> Francis Grizzly Smit ©2025
2> Licence GPL v3+
3> 
4> 
gnome-extensions create --uuid=fred@grizzlysmit.smit.id.au --name=fred --description=This is a dummy plugin\n\nIt is just a test --gettext-domain=fred --prefs --interactive --quiet
Choose one of the available templates:
1) Plain       –  An empty extension
2) Indicator   –  Add an icon to the top bar
3) Quick Settings Item  –  Add an item to quick settings
Template [1-3]: 2

The new extension was successfully created in /home/grizzlysmit/.config/gnome-shell/extensions/fred@grizzlysmit.smit.id.au.
copypath Success
key: fred => "/home/grizzlysmit/Projects/gnome-shell/extensions/fred@grizzlysmit.smit.id.au" added successfully
Created po/en.po.
.pack_args.json created
removed directory
05:55:14 θ70° grizzlysmit@pern.local:~/Projects/gnome-shell/extensions 2m14s $ exa -F -laahigHb --colour-scale --time-style=full-iso --icons=always fred@grizzlysmit.smit.id.au/
   inode Permissions Links  Size User        Group       Date Modified                       Name
27559253 drwxrwxr-x      5     - grizzlysmit grizzlysmit 2025-07-24 05:55:14.052449684 +1000  ./
26352037 drwxr-xr-x     34     - grizzlysmit grizzlysmit 2025-07-24 05:55:13.943446718 +1000  ../
27559273 .rw-rw-r--      1   287 grizzlysmit grizzlysmit 2025-07-24 05:55:14.053521905 +1000  .pack_args.json
27559265 .rwxrwxr-x      1   562 grizzlysmit grizzlysmit 2025-07-24 05:55:13.959032921 +1000  compile.sh*
27559254 .rw-rw-r--      1 1.8Ki grizzlysmit grizzlysmit 2025-07-24 05:55:13.945257913 +1000  extension.js
27559270 drwxrwxr-x      3     - grizzlysmit grizzlysmit 2025-07-24 05:55:14.045449493 +1000  locale/
27559256 .rw-rw-r--      1   325 grizzlysmit grizzlysmit 2025-07-24 05:55:13.957659027 +1000  metadata.json
27559264 drwxrwxr-x      2     - grizzlysmit grizzlysmit 2025-07-24 05:55:14.041449384 +1000  po/
27559255 .rw-rw-r--      1 1.4Ki grizzlysmit grizzlysmit 2025-07-24 05:55:13.945612838 +1000  prefs.js
27559258 drwxrwxr-x      2     - grizzlysmit grizzlysmit 2025-07-24 05:55:13.986447888 +1000  schemas/
27559257 .rw-rw-r--      1    45 grizzlysmit grizzlysmit 2025-07-24 05:55:13.946068846 +1000  stylesheet.css
05:56:03 θ65° grizzlysmit@pern.local:~/Projects/gnome-shell/extensions $ exa -F -lahigHTb  --colour-scale --time-style=full-iso fred@grizzlysmit.smit.id.au/
   inode Permissions Links  Size User        Group       Date Modified                       Name
27559253 drwxrwxr-x      5     - grizzlysmit grizzlysmit 2025-07-24 05:55:14.052449684 +1000 fred@grizzlysmit.smit.id.au/
27559273 .rw-rw-r--      1   287 grizzlysmit grizzlysmit 2025-07-24 05:55:14.053521905 +1000 ├── .pack_args.json
27559265 .rwxrwxr-x      1   562 grizzlysmit grizzlysmit 2025-07-24 05:55:13.959032921 +1000 ├── compile.sh*
27559254 .rw-rw-r--      1 1.8Ki grizzlysmit grizzlysmit 2025-07-24 05:55:13.945257913 +1000 ├── extension.js
27559270 drwxrwxr-x      3     - grizzlysmit grizzlysmit 2025-07-24 05:55:14.045449493 +1000 ├── locale/
27559271 drwxrwxr-x      3     - grizzlysmit grizzlysmit 2025-07-24 05:55:14.045449493 +1000 │   └── en/
27559272 drwxrwxr-x      2     - grizzlysmit grizzlysmit 2025-07-24 05:55:14.046449521 +1000 │       └── LC_MESSAGES/
27559269 .rw-rw-r--      1   653 grizzlysmit grizzlysmit 2025-07-24 05:55:14.044584280 +1000 │           └── fred.mo
27559256 .rw-rw-r--      1   325 grizzlysmit grizzlysmit 2025-07-24 05:55:13.957659027 +1000 ├── metadata.json
27559264 drwxrwxr-x      2     - grizzlysmit grizzlysmit 2025-07-24 05:55:14.041449384 +1000 ├── po/
27559268 .rw-rw-r--      1   986 grizzlysmit grizzlysmit 2025-07-24 05:55:14.042015222 +1000 │   ├── en.po
27559267 .rw-rw-r--      1   875 grizzlysmit grizzlysmit 2025-07-24 05:55:13.991375405 +1000 │   └── fred.pot
27559255 .rw-rw-r--      1 1.4Ki grizzlysmit grizzlysmit 2025-07-24 05:55:13.945612838 +1000 ├── prefs.js
27559258 drwxrwxr-x      2     - grizzlysmit grizzlysmit 2025-07-24 05:55:13.986447888 +1000 ├── schemas/
27559266 .rw-rw-r--      1   380 grizzlysmit grizzlysmit 2025-07-24 05:55:13.986447888 +1000 │   ├── gschemas.compiled
27559263 .rw-rw-r--      1   765 grizzlysmit grizzlysmit 2025-07-24 05:55:13.956259755 +1000 │   └── org.gnome.shell.extensions.fred.gschema.xml
27559257 .rw-rw-r--      1    45 grizzlysmit grizzlysmit 2025-07-24 05:55:13.946068846 +1000 └── stylesheet.css
05:56:53 θ65° grizzlysmit@pern.local:~/Projects/gnome-shell/extensions $ batcat fred@grizzlysmit.smit.id.au/metadata.json 
───────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: fred@grizzlysmit.smit.id.au/metadata.json
───────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1{
   2"credits": "Francis Grizzly Smit ©2025\nLicence GPL v3+",
   3"description": "This is a dummy plugin\n\nIt is just a test",
   4"gettext-domain": "fred",
   5"name": "fred",
   6"settings-schema": "org.gnome.shell.extensions.fred",
   7"shell-version": [
   8"48"
   9],
  10"uuid": "fred@grizzlysmit.smit.id.au"
  11}
───────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────
05:57:32 θ71° grizzlysmit@pern.local:~/Projects/gnome-shell/extensions $ batcat fred@grizzlysmit.smit.id.au/.pack_args.json 
───────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: fred@grizzlysmit.smit.id.au/.pack_args.json
───────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1{
   2"extra-sources": [
   3],
   4"force": true,
   5"gettext-domain": "fred",
   6"out-dir": "/home/grizzlysmit/Projects/gnome-shell/extensions",
   7"package-dir": "fred@grizzlysmit.smit.id.au",
   8"podir": "po",
   9"schema": "schemas/org.gnome.shell.extensions.fred.gschema.xml"
  10}
───────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────

Table of Contents

If you want to manage an existing extension then use

pack.raku plugin add <key> <uuid> [<extra-sources1> <extra-sources2> ...] --force --mk-schema

Table of Contents

example of using pack.raku plugin add

10:41:54 θ70° grizzlysmit@pern.local:~/Projects/gnome-shell/extensions $ gnome-extensions create --prefs --interactive
Name should be a very short (ideally descriptive) string.
Examples are: “Click To Focus”, “Adblock”, “Shell Window Shrinker”
Name: fred

Description is a single-sentence explanation of what your extension does.
Examples are: “Make windows visible on click”, “Block advertisement popups”, “Animate windows shrinking on minimize”
Description: Dummy plugin

UUID is a globally-unique identifier for your extension.
This should be in the format of an email address (clicktofocus@janedoe.example.com)
UUID: fred@grizzlysmit.smit.id.au

Choose one of the available templates:
1) Plain       –  An empty extension
2) Indicator   –  Add an icon to the top bar
3) Quick Settings Item  –  Add an item to quick settings
Template [1-3]: 2

The new extension was successfully created in /home/grizzlysmit/.config/gnome-shell/extensions/fred@grizzlysmit.smit.id.au.
10:43:23 θ72° grizzlysmit@pern.local:~/Projects/gnome-shell/extensions 1m8s $ mv /home/grizzlysmit/.config/gnome-shell/extensions/fred@grizzlysmit.smit.id.au/ .
renamed '/home/grizzlysmit/.config/gnome-shell/extensions/fred@grizzlysmit.smit.id.au/' -> './fred@grizzlysmit.smit.id.au'
10:43:49 θ69° grizzlysmit@pern.local:~/Projects/gnome-shell/extensions $ tb fred@grizzlysmit.smit.id.au/
   inode Permissions Links  Size User        Group       Date Modified                       Name
53501399 drwxrwxr-x      2     - grizzlysmit grizzlysmit 2025-07-24 10:43:23.448872836 +1000 fred@grizzlysmit.smit.id.au/
53501572 .rw-rw-r--      1 1.8Ki grizzlysmit grizzlysmit 2025-07-24 10:43:23.448872836 +1000 ├── extension.js
53501494 .rw-rw-r--      1   130 grizzlysmit grizzlysmit 2025-07-24 10:43:23.448872836 +1000 ├── metadata.json
53501574 .rw-rw-r--      1 1.4Ki grizzlysmit grizzlysmit 2025-07-24 10:43:23.448872836 +1000 ├── prefs.js
53501573 .rw-rw-r--      1    45 grizzlysmit grizzlysmit 2025-07-24 10:43:23.448872836 +1000 └── stylesheet.css

10:44:07 θ66° grizzlysmit@pern.local:~/Projects/gnome-shell/extensions 127 $ type tb
tb is aliased to `exa -F -lahigHTb  --colour-scale --time-style=full-iso'

10:44:14 θ71° grizzlysmit@pern.local:~/Projects/gnome-shell/extensions $ batcat fred@grizzlysmit.smit.id.au/metadata.json 
───────┬───────────────────────────────────────────────────────────────────────────
       │ File: fred@grizzlysmit.smit.id.au/metadata.json
───────┼───────────────────────────────────────────────────────────────────────────
   1{
   2"name": "fred",
   3"description": "Dummy plugin",
   4"uuid": "fred@grizzlysmit.smit.id.au",
   5"shell-version": [
   6"48"
   7]
   8}
───────┴───────────────────────────────────────────────────────────────────────────
10:44:37 θ68° grizzlysmit@pern.local:~/Projects/gnome-shell/extensions $ pack.raku plugin add fred fred@grizzlysmit.smit.id.au  --force --mk-schema --mk-podir
gettext-domain: fred? hit enter to accept or type in new value followed by enter.
Created po/en.po.
key: fred => "/home/grizzlysmit/Projects/gnome-shell/extensions/fred@grizzlysmit.smit.id.au" added successfully
.pack_args.json created
10:45:50 θ64° grizzlysmit@pern.local:~/Projects/gnome-shell/extensions 13s $ pack.raku alias get-gettext-domain fred
fred
10:46:13 θ77° grizzlysmit@pern.local:~/Projects/gnome-shell/extensions 3s $ # it worked
10:46:26 θ71° grizzlysmit@pern.local:~/Projects/gnome-shell/extensions $ tb fred@grizzlysmit.smit.id.au/
   inode Permissions Links  Size User        Group       Date Modified                       Name
53501399 drwxrwxr-x      5     - grizzlysmit grizzlysmit 2025-07-24 10:45:50.817144241 +1000 fred@grizzlysmit.smit.id.au/
53501634 .rw-rw-r--      1   287 grizzlysmit grizzlysmit 2025-07-24 10:45:50.817730377 +1000 ├── .pack_args.json
53501578 .rwxrwxr-x      1   562 grizzlysmit grizzlysmit 2025-07-24 10:45:50.709030905 +1000 ├── compile.sh*
53501572 .rw-rw-r--      1 1.8Ki grizzlysmit grizzlysmit 2025-07-24 10:43:23.448872836 +1000 ├── extension.js
53501584 drwxrwxr-x      3     - grizzlysmit grizzlysmit 2025-07-24 10:45:50.798143691 +1000 ├── locale/
53501616 drwxrwxr-x      3     - grizzlysmit grizzlysmit 2025-07-24 10:45:50.798143691 +1000 │   └── en/
53501633 drwxrwxr-x      2     - grizzlysmit grizzlysmit 2025-07-24 10:45:50.800143748 +1000 │       └── LC_MESSAGES/
53501582 .rw-rw-r--      1   653 grizzlysmit grizzlysmit 2025-07-24 10:45:50.797109428 +1000 │           └── fred.mo
53501494 .rw-rw-r--      1   231 grizzlysmit grizzlysmit 2025-07-24 10:45:50.706926618 +1000 ├── metadata.json
53501577 drwxrwxr-x      2     - grizzlysmit grizzlysmit 2025-07-24 10:45:50.793143546 +1000 ├── po/
53501581 .rw-rw-r--      1   986 grizzlysmit grizzlysmit 2025-07-24 10:45:50.794635436 +1000 │   ├── en.po
53501580 .rw-rw-r--      1   875 grizzlysmit grizzlysmit 2025-07-24 10:45:50.743762978 +1000 │   └── fred.pot
53501574 .rw-rw-r--      1 1.4Ki grizzlysmit grizzlysmit 2025-07-24 10:43:23.448872836 +1000 ├── prefs.js
53501575 drwxrwxr-x      2     - grizzlysmit grizzlysmit 2025-07-24 10:45:50.739141981 +1000 ├── schemas/
53501579 .rw-rw-r--      1   380 grizzlysmit grizzlysmit 2025-07-24 10:45:50.739141981 +1000 │   ├── gschemas.compiled
53501576 .rw-rw-r--      1   765 grizzlysmit grizzlysmit 2025-07-24 10:45:50.705111892 +1000 │   └── org.gnome.shell.extensions.fred.gschema.xml
53501573 .rw-rw-r--      1    45 grizzlysmit grizzlysmit 2025-07-24 10:43:23.448872836 +1000 └── stylesheet.css
10:46:38 θ64° grizzlysmit@pern.local:~/Projects/gnome-shell/extensions $ batcat fred@grizzlysmit.smit.id.au/metadata.json 
───────┬───────────────────────────────────────────────────────────────────────────
       │ File: fred@grizzlysmit.smit.id.au/metadata.json
───────┼───────────────────────────────────────────────────────────────────────────
   1{
   2"description": "Dummy plugin",
   3"gettext-domain": "fred",
   4"name": "fred",
   5"settings-schema": "org.gnome.shell.extensions.fred",
   6"shell-version": [
   7"48"
   8],
   9"uuid": "fred@grizzlysmit.smit.id.au"
  10}
───────┴───────────────────────────────────────────────────────────────────────────
10:47:13 θ76° grizzlysmit@pern.local:~/Projects/gnome-shell/extensions $ batcat fred@grizzlysmit.smit.id.au/.pack_args.json 
───────┬───────────────────────────────────────────────────────────────────────────
       │ File: fred@grizzlysmit.smit.id.au/.pack_args.json
───────┼───────────────────────────────────────────────────────────────────────────
   1{
   2"extra-sources": [
   3],
   4"force": true,
   5"gettext-domain": "fred",
   6"out-dir": "/home/grizzlysmit/Projects/gnome-shell/extensions",
   7"package-dir": "fred@grizzlysmit.smit.id.au",
   8"podir": "po",
   9"schema": "schemas/org.gnome.shell.extensions.fred.gschema.xml"
  10}
───────┴───────────────────────────────────────────────────────────────────────────

Table of Contents

To package a extension just call

pack.raku alias do <key> --force

Or to package many this

pack.raku alias do <key0> <key1> <key2> ... <keyn> --force

Table of Contents

example of creating packages

15:44:31 θ71° grizzlysmit@pern.local:~/Projects/gnome-shell/extensions $ eb
   inode Permissions Links  Size User        Group       Date Modified                       Name
26352037 drwxr-xr-x     34     - grizzlysmit grizzlysmit 2025-07-24 15:44:31.840926805 +1000  ./
26217632 drwxr-xr-x      3     - grizzlysmit grizzlysmit 2018-03-06 18:20:02.734959839 +1000  ../
26349968 .rw-rw-r--      1  21Ki grizzlysmit grizzlysmit 2024-05-03 11:27:55.484319299 +1000  .shell-extension.zip
26353752 .rw-rw-r--      1  24Ki grizzlysmit grizzlysmit 2021-11-25 19:26:19.479090060 +1000  alternate-hplips-menu.zip
26352042 drwxrwxr-x      4     - grizzlysmit grizzlysmit 2024-05-26 03:32:33.908540232 +1000  apps-menu@gnome-shell-extensions.gcampax.github.com/
26353753 .rw-rw-r--      1  17Ki grizzlysmit grizzlysmit 2021-12-28 04:37:44.146266285 +1000  big-avatar@gustavoperedo.org.shell-extension.zip
26352038 drwxrwxr-x      4     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  Bottom_Panel@rmy.pobox.com/
26512363 drwxrwxr-x      8     - grizzlysmit grizzlysmit 2025-07-23 14:38:59.863644931 +1000  files-launcher@grizzlysmit.smit.id.au/
26349973 .rw-rw-r--      1  54Ki grizzlysmit grizzlysmit 2025-07-24 15:44:00.465134918 +1000  files-launcher@grizzlysmit.smit.id.au.shell-extension.zip
27559274 drwxrwxr-x      5     - grizzlysmit grizzlysmit 2025-07-24 15:42:56.782255700 +1000  fred@grizzlysmit.smit.id.au/
26352043 drwxrwxr-x      7     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  gnome-shell-extension-taskbar/
26352044 drwxrwxr-x      6     - grizzlysmit grizzlysmit 2022-01-07 09:09:40.302644534 +1000  gnome-shell-extensions-gravatar/
26352045 drwxr-xr-x      3     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  gnome-shell-tw/
26353754 .rw-rw-r--      1 6.6Ki grizzlysmit grizzlysmit 2022-01-06 23:56:20.182307575 +1000  gravatar@gnome-shell-extensions.rouleau.io.shell-extension.zip
26352046 drwxrwxr-x      2     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  gravatar@grizzlysmit.id.au/
26353755 .rw-rw-r--      1 1.8Ki grizzlysmit grizzlysmit 2022-07-01 10:34:55.758925396 +1000  gravatar@grizzlysmit.id.au.shell-extension.zip
26352048 drwxrwxr-x      3     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  gravatar@jr.rlabs.io/
26353756 .rw-rw-r--      1 6.6Ki grizzlysmit grizzlysmit 2022-01-07 19:47:05.364419415 +1000  gravatar@jr.rlabs.io.shell-extension.zip
26352049 drwxrwxr-x      8     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  gsconnect@andyholmes.github.io/
26352051 drwxrwxr-x      8     - grizzlysmit grizzlysmit 2025-07-23 14:31:22.859671275 +1000  hplip-menu2@grizzlysmit.smit.id.au/
26346496 .rw-rw-r--      1  28Ki grizzlysmit grizzlysmit 2025-07-02 20:36:31.684875818 +1000  hplip-menu2@grizzlysmit.smit.id.au.shell-extension.zip
26352054 drwxrwxr-x      5     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  messagingmenu@lauinger-clan.de/
26352056 drwxrwxr-x      4     - grizzlysmit grizzlysmit 2020-11-07 22:39:21.087614053 +1000  multi-monitors-add-on/
46561771 drwxrwxr-x      7     - grizzlysmit grizzlysmit 2025-07-23 14:26:07.832210160 +1000  notes-with-history@grizzlysmit.smit.id.au/
26349665 .rw-rw-r--      1  53Ki grizzlysmit grizzlysmit 2025-07-24 15:44:00.409133267 +1000  notes-with-history@grizzlysmit.smit.id.au.shell-extension.zip
51393341 drwxrwxr-x      4     - grizzlysmit grizzlysmit 2025-03-15 16:42:15.414543423 +1000  old/
26352059 drwxrwxr-x      2     - grizzlysmit grizzlysmit 2024-04-29 17:31:02.281104910 +1000  openweather/
26352057 drwxrwxr-x      4     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  openweather-extension@jenslody.de/
26352060 drwxrwxr-x      9     - grizzlysmit grizzlysmit 2025-07-24 15:33:13.862750943 +1000  pack/
26352062 drwxrwxr-x      4     - grizzlysmit grizzlysmit 2022-01-05 22:49:47.185676938 +1000  pixel-saver/
26352064 drwxrwxr-x      2     - grizzlysmit grizzlysmit 2024-07-27 18:54:47.363559805 +1000  popupMenu/
26352065 drwxrwxr-x      4     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  quick-settings-avatar@d-go/
26352039 drwxrwxr-x      4     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  SettingsCenter@lauinger-clan.de/
26352067 drwxrwxr-x      3     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  ssh-connect-menu@edavidf/
26352040 drwxrwxr-x      5     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  SystemMenu@jonnius.github.com/
26352068 drwxrwxr-x      3     - grizzlysmit grizzlysmit 2024-05-06 16:52:51.078240764 +1000  tabstesting/
26352070 drwxr-xr-x      3     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  taskbar@grizzlysmit.smit.id.au/
26352041 drwxrwxr-x      6     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  TaskBar@zpydr/
26352071 drwxr-xr-x      2     - grizzlysmit grizzlysmit 2018-03-06 18:20:02.794960310 +1000  testing/
26352073 drwxrwxr-x      2     - grizzlysmit grizzlysmit 2023-09-27 15:27:06.024458938 +1000  tmp/
26352074 drwxrwxr-x      6     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  unite@hardpixel.eu/
26352075 drwxrwxr-x      4     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  weeks-start-on-monday@extensions.gnome-shell.fifi.org/
26352076 drwxrwxr-x      2     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  workspace-switch-wraparound@theychx.org/
15:44:36 θ67° grizzlysmit@pern.local:~/Projects/gnome-shell/extensions $ type eb
eb is a function
eb () 
{ 
    if type exa >> /dev/null 2>&1; then
        exa -F -laahigHb --colour-scale --time-style=full-iso --icons=always "$@";
    else
        ls --color=auto -Flaghi --color "$@";
    fi
}
15:44:55 θ72° grizzlysmit@pern.local:~/Projects/gnome-shell/extensions $ pack.raku list all

key   sep path                                                                        # comment                            
===========================================================================================================================
files  => ~/Projects/gnome-shell/extensions/files-launcher@grizzlysmit.smit.id.au     #                                    
fred   => ~/Projects/gnome-shell/extensions/fred@grizzlysmit.smit.id.au               # Testing\n\nthis is a Dummy plugin  
hp     => ~/Projects/gnome-shell/extensions/hplip-menu2@grizzlysmit.smit.id.au        # The hplip-menu2 plugin    #        
notes  => ~/Projects/gnome-shell/extensions/notes-with-history@grizzlysmit.smit.id.au # notes-with-history plugin #        
===========================================================================================================================
15:45:56 θ74° grizzlysmit@pern.local:~/Projects/gnome-shell/extensions 3s $ pack.raku alias do fred notes files hp --force
gnome-extensions pack --schema=schemas/org.gnome.shell.extensions.fred.gschema.xml --podir=po --gettext-domain=fred --force --out-dir=/home/grizzlysmit/Projects/gnome-shell/extensions /home/grizzlysmit/Projects/gnome-shell/extensions/fred@grizzlysmit.smit.id.au

gnome-extensions pack --extra-source=gzz.js --extra-source=select.js --extra-source=button.js --extra-source=log_message.js --extra-source=icon_constants.js --schema=schemas/org.gnome.shell.extensions.notes-with-history.gschema.xml --podir=po --gettext-domain=notes-with-history --force --out-dir=/home/grizzlysmit/Projects/gnome-shell/extensions /home/grizzlysmit/Projects/gnome-shell/extensions/notes-with-history@grizzlysmit.smit.id.au

gnome-extensions pack --extra-source=button.js --extra-source=gzz.js --extra-source=icon_constants.js --extra-source=log_message.js --extra-source=select.js --schema=schemas/org.gnome.shell.extensions.files-launcher.gschema.xml --podir=po --gettext-domain=files-launcher --force --out-dir=/home/grizzlysmit/Projects/gnome-shell/extensions /home/grizzlysmit/Projects/gnome-shell/extensions/files-launcher@grizzlysmit.smit.id.au

gnome-extensions pack --extra-source=gzzDialog.js --extra-source=CompactMenu.js --extra-source=log_message.js --schema=schemas/org.gnome.shell.extensions.hplip-menu2.gschema.xml --podir=po --gettext-domain=hplip-menu2 --force --out-dir=/home/grizzlysmit/Projects/gnome-shell/extensions /home/grizzlysmit/Projects/gnome-shell/extensions/hplip-menu2@grizzlysmit.smit.id.au

exa -F -laahigHb --colour-scale --time-style=full-iso --icons=always
   inode Permissions Links  Size User        Group       Date Modified                       Name
26352037 drwxr-xr-x     34     - grizzlysmit grizzlysmit 2025-07-24 15:46:39.996826303 +1000  ./
26217632 drwxr-xr-x      3     - grizzlysmit grizzlysmit 2018-03-06 18:20:02.734959839 +1000  ../
26349968 .rw-rw-r--      1  21Ki grizzlysmit grizzlysmit 2024-05-03 11:27:55.484319299 +1000  .shell-extension.zip
26353752 .rw-rw-r--      1  24Ki grizzlysmit grizzlysmit 2021-11-25 19:26:19.479090060 +1000  alternate-hplips-menu.zip
26352042 drwxrwxr-x      4     - grizzlysmit grizzlysmit 2024-05-26 03:32:33.908540232 +1000  apps-menu@gnome-shell-extensions.gcampax.github.com/
26353753 .rw-rw-r--      1  17Ki grizzlysmit grizzlysmit 2021-12-28 04:37:44.146266285 +1000  big-avatar@gustavoperedo.org.shell-extension.zip
26352038 drwxrwxr-x      4     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  Bottom_Panel@rmy.pobox.com/
26512363 drwxrwxr-x      8     - grizzlysmit grizzlysmit 2025-07-23 14:38:59.863644931 +1000  files-launcher@grizzlysmit.smit.id.au/
26349973 .rw-rw-r--      1  54Ki grizzlysmit grizzlysmit 2025-07-24 15:46:39.949824924 +1000  files-launcher@grizzlysmit.smit.id.au.shell-extension.zip
27559274 drwxrwxr-x      5     - grizzlysmit grizzlysmit 2025-07-24 15:42:56.782255700 +1000  fred@grizzlysmit.smit.id.au/
26387376 .rw-rw-r--      1 4.2Ki grizzlysmit grizzlysmit 2025-07-24 15:46:39.839821696 +1000  fred@grizzlysmit.smit.id.au.shell-extension.zip
26352043 drwxrwxr-x      7     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  gnome-shell-extension-taskbar/
26352044 drwxrwxr-x      6     - grizzlysmit grizzlysmit 2022-01-07 09:09:40.302644534 +1000  gnome-shell-extensions-gravatar/
26352045 drwxr-xr-x      3     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  gnome-shell-tw/
26353754 .rw-rw-r--      1 6.6Ki grizzlysmit grizzlysmit 2022-01-06 23:56:20.182307575 +1000  gravatar@gnome-shell-extensions.rouleau.io.shell-extension.zip
26352046 drwxrwxr-x      2     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  gravatar@grizzlysmit.id.au/
26353755 .rw-rw-r--      1 1.8Ki grizzlysmit grizzlysmit 2022-07-01 10:34:55.758925396 +1000  gravatar@grizzlysmit.id.au.shell-extension.zip
26352048 drwxrwxr-x      3     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  gravatar@jr.rlabs.io/
26353756 .rw-rw-r--      1 6.6Ki grizzlysmit grizzlysmit 2022-01-07 19:47:05.364419415 +1000  gravatar@jr.rlabs.io.shell-extension.zip
26352049 drwxrwxr-x      8     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  gsconnect@andyholmes.github.io/
26352051 drwxrwxr-x      8     - grizzlysmit grizzlysmit 2025-07-23 14:31:22.859671275 +1000  hplip-menu2@grizzlysmit.smit.id.au/
26346496 .rw-rw-r--      1  28Ki grizzlysmit grizzlysmit 2025-07-24 15:46:40.012826773 +1000  hplip-menu2@grizzlysmit.smit.id.au.shell-extension.zip
26352054 drwxrwxr-x      5     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  messagingmenu@lauinger-clan.de/
26352056 drwxrwxr-x      4     - grizzlysmit grizzlysmit 2020-11-07 22:39:21.087614053 +1000  multi-monitors-add-on/
46561771 drwxrwxr-x      7     - grizzlysmit grizzlysmit 2025-07-23 14:26:07.832210160 +1000  notes-with-history@grizzlysmit.smit.id.au/
26349665 .rw-rw-r--      1  53Ki grizzlysmit grizzlysmit 2025-07-24 15:46:39.894823310 +1000  notes-with-history@grizzlysmit.smit.id.au.shell-extension.zip
51393341 drwxrwxr-x      4     - grizzlysmit grizzlysmit 2025-03-15 16:42:15.414543423 +1000  old/
26352059 drwxrwxr-x      2     - grizzlysmit grizzlysmit 2024-04-29 17:31:02.281104910 +1000  openweather/
26352057 drwxrwxr-x      4     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  openweather-extension@jenslody.de/
26352060 drwxrwxr-x      9     - grizzlysmit grizzlysmit 2025-07-24 15:33:13.862750943 +1000  pack/
26352062 drwxrwxr-x      4     - grizzlysmit grizzlysmit 2022-01-05 22:49:47.185676938 +1000  pixel-saver/
26352064 drwxrwxr-x      2     - grizzlysmit grizzlysmit 2024-07-27 18:54:47.363559805 +1000  popupMenu/
26352065 drwxrwxr-x      4     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  quick-settings-avatar@d-go/
26352039 drwxrwxr-x      4     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  SettingsCenter@lauinger-clan.de/
26352067 drwxrwxr-x      3     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  ssh-connect-menu@edavidf/
26352040 drwxrwxr-x      5     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  SystemMenu@jonnius.github.com/
26352068 drwxrwxr-x      3     - grizzlysmit grizzlysmit 2024-05-06 16:52:51.078240764 +1000  tabstesting/
26352070 drwxr-xr-x      3     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  taskbar@grizzlysmit.smit.id.au/
26352041 drwxrwxr-x      6     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  TaskBar@zpydr/
26352071 drwxr-xr-x      2     - grizzlysmit grizzlysmit 2018-03-06 18:20:02.794960310 +1000  testing/
26352073 drwxrwxr-x      2     - grizzlysmit grizzlysmit 2023-09-27 15:27:06.024458938 +1000  tmp/
26352074 drwxrwxr-x      6     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  unite@hardpixel.eu/
26352075 drwxrwxr-x      4     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  weeks-start-on-monday@extensions.gnome-shell.fifi.org/
26352076 drwxrwxr-x      2     - grizzlysmit grizzlysmit 2024-05-12 07:02:26.268351182 +1000  workspace-switch-wraparound@theychx.org/

Table of Contents

pack

pack.raku --help

Usage:
  pack.raku do <dir>  [<dirs> ...] [-f|--force] [-c|--command=<Str>] [-q|--quiet|--silent]
  pack.raku create <package-dir>  [<extra-sources> ...] [-s|--schema=<Str>] [-p|--podir=<Str>] [-g|--gettext-domain=<Str>] [-o|--out-dir=<Str>] [-f|--force]
  pack.raku add <package-dir>  [<extra-sources> ...] [-s|--schema=<Str>] [-p|--podir=<Str>] [-g|--gettext-domain=<Str>] [-o|--out-dir=<Str>] [-f|--force] [-F|--stomp-force] [-S|--stomp]
  pack.raku set schema <package-dir> <schema-value>
  pack.raku set podir <package-dir> <podir-value>
  pack.raku set gettext-domain <package-dir> <gettext-domain-value>
  pack.raku set out-dir <package-dir> <out-dir-value>
  pack.raku set force <package-dir> <force-value>
  pack.raku add-extra-sources <package-dir>  [<extra-sources> ...]
  pack.raku set package-dir <package-dir> <package-dir-value>
  pack.raku set extra-sources <package-dir>  [<extra-sources> ...]
  pack.raku append extra-sources <package-dir>  [<extra-sources> ...]
  pack.raku remove schema <package-dir>
  pack.raku remove podir <package-dir>
  pack.raku remove gettext-domain <package-dir>
  pack.raku remove out-dir <package-dir>
  pack.raku remove extra-sources <package-dir>
  pack.raku get schema <package-dir>
  pack.raku get podir <package-dir>
  pack.raku get gettext-domain <package-dir>
  pack.raku get out-dir <package-dir>
  pack.raku get extra-sources <package-dir>
  pack.raku get force <package-dir>
  pack.raku get package-dir <package-dir>
  pack.raku alias add <key> <target>   [-s|--set|--force] [-c|--comment=<Str>]
  pack.raku alias do <key>  [<keys> ...] [-f|--force] [-c|--command=<Str>] [-q|--quiet|--silent]
  pack.raku plugin new <key>   [--uuid=<Str>] [--name=<Str>] [--description=<Str>] [--gettext-domain=<Str>] [--settings-schema=<Str>] [--template=<Str>] [--credits=<Str>] [--prefs] [--schema-file] [--podirs] [--add-credits] [-a|--all-parmas|--all] [-f|--force] [-s|--silent] [-b|--backtrace] [-l|--dev-lang=<Str>] [-o|--output|--development-dir|--dev-dir=<Str>]  
  pack.raku plugin add <key> <uuid>  [<extra-sources> ...] [-p|--extension-dir=<Str>] [--podir=<Str>] [-f|--force] [-s|--silent] [-b|--backtrace] [-m|--mk-schema] [-l|--dev-lang=<Str>]
  pack.raku alias add-extra-sources <key>  [<extra-sources> ...]
  pack.raku alias set-schema <key> <schema-value>
  pack.raku alias set-podir <key> <podir-value>
  pack.raku alias set-gettext-domain <key> <gettext-domain-value>
  pack.raku alias set-out-dir <key> <out-dir-value>
  pack.raku alias set-force <key> <force-value>
  pack.raku alias set-package-dir <key> <package-dir-value>
  pack.raku alias set-extra-sources <key>  [<extra-sources> ...]
  pack.raku alias append-extra-sources <key>  [<extra-sources> ...]
  pack.raku alias remove-schema <key>
  pack.raku alias remove-podir <key>
  pack.raku alias remove-gettext-domain <key>
  pack.raku alias remove-out-dir <key>
  pack.raku alias remove-extra-sources <key>
  pack.raku alias get-schema <key>
  pack.raku alias get-podir <key>
  pack.raku alias get-gettext-domain <key>
  pack.raku alias get-out-dir <key>
  pack.raku alias get-extra-sources <key>
  pack.raku alias get-force <key>
  pack.raku alias get-package-dir <key>
  pack.raku edit configs
  pack.raku list keys  [<prefix>]  [-c|--color|--colour] [-s|--syntax] [-l|--page-length[=Int]] [-p|--pattern=<Str>] [-e|--ecma-pattern=<Str>]
  pack.raku list all  [<prefix>]  [-c|--color|--colour] [-s|--syntax] [-l|--page-length[=Int]] [-p|--pattern=<Str>] [-e|--ecma-pattern=<Str>]
  pack.raku delete   [<keys> ...] [-d|--delete|--do-not-trash]
  pack.raku del   [<keys> ...] [-d|--delete|--do-not-trash]
  pack.raku trash   [<keys> ...]
  pack.raku tidy file
  pack.raku comment <key> <comment>   [-k|--kind=<Str where \{ ... } >]
  pack.raku list trash  [<prefix>]  [-c|--color|--colour] [-s|--syntax] [-l|--page-length[=Int]] [-p|--pattern=<Str>] [-e|--ecma-pattern=<Str>]
  pack.raku empty trash
  pack.raku undelete   [<keys> ...]
  pack.raku show stats  [<prefix>]  [-c|--color|--colour] [-s|--syntax] [-p|--pattern=<Str>] [-e|--ecma-pattern=<Str>]
  pack.raku show statistics  [<prefix>]  [-c|--color|--colour] [-s|--syntax] [-p|--pattern=<Str>] [-e|--ecma-pattern=<Str>]
  pack.raku backup db    [-w|--win-format|--use-windows-formatting]
  pack.raku restore db  [<restore-from>]
  pack.raku menu restore db  [<message>]  [-c|--color|--colour] [-s|--syntax]
  pack.raku list db backups  [<prefix>]  [-c|--color|--colour] [-s|--syntax] [-l|--page-length[=Int]] [-p|--pattern=<Str>] [-e|--ecma-pattern=<Str>]
  pack.raku list editors    [-f|--prefix=<Str>] [-c|--color|--colour] [-s|--syntax] [-l|--page-length[=Int]] [-p|--pattern=<Str>] [-e|--ecma-pattern=<Str>]
  pack.raku editors stats  [<prefix>]  [-c|--color|--colour] [-s|--syntax] [-l|--page-length[=Int]] [-p|--pattern=<Str>] [-e|--ecma-pattern=<Str>]
  pack.raku list editors backups  [<prefix>]  [-c|--color|--colour] [-s|--syntax] [-l|--page-length[=Int]] [-p|--pattern=<Str>] [-e|--ecma-pattern=<Str>]
  pack.raku backup editors    [-w|--use-windows-formatting]
  pack.raku restore editors <restore-from>
  pack.raku set editor <editor> [<comment>]
  pack.raku set override GUI_EDITOR <value> [<comment>]
  pack.raku menu restore editors  [<message>]  [-c|--color|--colour] [-s|--syntax]

Table of Contents

pack.raku do --help

pack.raku do --help

Usage:
  pack.raku do <dir> [<dirs> ...] [-f|--force] [-c|--command=<Str>] [-q|--quiet|--silent]

Table of Contents

Where

Table of Contents

pack.raku create --help

Usage:
  pack.raku create <package-dir> [<extra-sources> ...] [-s|--schema=<Str>] [-p|--podir=<Str>] [-g|--gettext-domain=<Str>] [-o|--out-dir=<Str>] [-f|--force]

Create the .pack_args.json file.

Where

Table of Contents

pack.raku add

pack.raku add --help

Usage:
  pack.raku add <package-dir> [<extra-sources> ...] [-s|--schema=<Str>] [-p|--podir=<Str>] [-g|--gettext-domain=<Str>] [-o|--out-dir=<Str>] [-f|--force] [-F|--stomp-force] [-S|--stomp]

Modifiy add to the .pack_args.json file.

Where

Table of Contents

pack.raku set schema

pack.raku set schema --help

Usage:
  pack.raku set schema <package-dir> <schema-value>

Set the value of schema in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku set podir

pack.raku set podir --help

Usage:
  pack.raku set podir <package-dir> <podir-value>

Set the value of podir in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku set gettext-domain

pack.raku set gettext-domain --help

Usage:
  pack.raku set gettext-domain <package-dir> <gettext-domain-value>

Set the value of gettext-domain in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku set out-dir

pack.raku set out-dir --help

Usage:
  pack.raku set out-dir <package-dir> <out-dir-value>

Set the value of out-dir in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku set force

pack.raku set force --help

Usage:
  pack.raku set force <package-dir> <force-value>

Set the value of force in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku add-extra-sources

pack.raku add-extra-sources --help

Usage:
  pack.raku add-extra-sources <package-dir> [<extra-sources> ...]

Add to the value of extra-sources in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku set package-dir

pack.raku set package-dir --help

Usage:
  pack.raku set package-dir <package-dir> <package-dir-value>

Set the value of package-dir in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku set extra-sources

pack.raku set extra-sources --help

Usage:
  pack.raku set extra-sources <package-dir> [<extra-sources> ...]

Set the value of extra-sources in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku append extra-sources

pack.raku append extra-sources --help

Usage:
  pack.raku append extra-sources <package-dir> [<extra-sources> ...]

Append [<extra-sources> ...] to the value of extra-sources in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku remove schema

pack.raku remove schema --help

Usage:
  pack.raku remove schema <package-dir>

Remove the value of schema in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku remove podir

pack.raku remove podir --help

Usage:
  pack.raku remove podir <package-dir>

Remove the value of podir in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku remove gettext-domain

pack.raku remove gettext-domain --help

Usage:
  pack.raku remove gettext-domain <package-dir>

Remove the value of gettext-domain in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku remove out-dir

pack.raku remove out-dir --help

Usage:
  pack.raku remove out-dir <package-dir>

Remove the value of out-dir in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku remove extra-sources

pack.raku remove extra-sources --help

Usage:
  pack.raku remove extra-sources <package-dir>

Truncate the value of extra-sources in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku get schema

pack.raku get schema --help

Usage:
  pack.raku get schema <package-dir>

Get the value of schema in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku get podir

pack.raku get podir --help

Usage:
  pack.raku get podir <package-dir>

Get the value of podir in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku get gettext-domain

pack.raku get gettext-domain --help

Usage:
  pack.raku get gettext-domain <package-dir>

Get the value of gettext-domain in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku get out-dir

pack.raku get out-dir --help

Usage:
  pack.raku get out-dir <package-dir>

Get the value of out-dir in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku get extra-sources

pack.raku get extra-sources --help

Usage:
  pack.raku get extra-sources <package-dir>

Get the value of extra-sources in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku get force

pack.raku get force --help

Usage:
  pack.raku get force <package-dir>

Get the value of force in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku get package-dir

pack.raku get package-dir --help

Usage:
  pack.raku get package-dir <package-dir>

Get the value of package-dir in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku alias add

pack.raku alias add --help

Usage:
  pack.raku alias add <key> <target>  [-s|--set|--force] [-c|--comment=<Str>]

Where

NB: This command assumes it is being run from the directory in which the plugin resides.

Table of Contents

pack.raku alias do --help

Usage:
  pack.raku alias do <key> [<keys> ...] [-f|--force] [-c|--command=<Str>] [-q|--quiet|--silent]

Where

NB: This command assumes it is being run from the directory in which the plugin resides.

Table of Contents

pack.raku plugin new --help

pack.raku plugin new --help

Usage:
  pack.raku plugin new <key>  [--uuid=<Str>] [--name=<Str>] [--description=<Str>] [--gettext-domain=<Str>] [--settings-schema=<Str>] [--template=<Str>] [--credits=<Str>] [--prefs] [--schema-file] [--podirs] [--add-credits] [-a|--all-parmas|--all] [-f|--force] [-s|--silent] [-b|--backtrace] [-l|--dev-lang=<Str>] [-o|--output|--development-dir|--dev-dir=<Str>]

Make a new plugin/extension for gnome-shell Create a new plugin using gnome-extensions create and move it to a development area and set it up for pack.raku alias do etc.

Where

Table of Contents

It is recommended that you use the following command line to get pretty much everything in you could desire in the starting point of your plugin/extension.

pack.raku plugin new <key> --all --force

This whole development model assumes that you don't want to develop the plugin/extension live as is gnome-extensions create model so I copy the plugin out line generated by gnome-extensions create to another location I use ~/Projects/gnome-shell/extensions/ and deleting the original that gnome-extensions create generates.

Table of Contents

pack.raku plugin add

pack.raku plugin add  --help

Usage:
  pack.raku plugin add <key> <uuid> [<extra-sources> ...] [-p|--extension-dir=<Str>] [--podir=<Str>] [-f|--force] [-s|--silent] [-b|--backtrace] [-m|--mk-schema] [-l|--dev-lang=<Str>]

Use this to add an existing extension into management by pack.raku.

Where

Typical use:

pack.raku plugin add <key> <uuid> [<extra-sources1> <extra-sources2> ...] --force --mk-schema

Table of Contents

pack.raku alias add-extra-sources

pack.raku alias add-extra-sources --help

Usage:
  pack.raku alias add-extra-sources <key> [<extra-sources> ...]

Add sources to the extra-sources list.

Where

Table of Contents

pack.raku alias set-schema

pack.raku alias set-schema --help

Usage:
  pack.raku alias set-schema <key> <schema-value>

Set the value of the schema.

Where

Table of Contents

pack.raku alias set-podir

pack.raku alias set-podir --help

Usage:
  pack.raku alias set-podir <key> <podir-value>

Set the value of podir in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku alias set-gettext-domain

pack.raku alias set-gettext-domain --help

Usage:
  pack.raku alias set-gettext-domain <key> <gettext-domain-value>

Set the value of gettext-domain in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku alias set-out-dir

pack.raku alias set-out-dir --help

Usage:
  pack.raku alias set-out-dir <key> <out-dir-value>

Set the value of out-dir in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku alias set-force

pack.raku alias set-force --help

Usage:
  pack.raku alias set-force <key> <force-value>

Set the value of force in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku alias set-package-dir

pack.raku alias set-package-dir --help

Usage:
  pack.raku alias set-package-dir <key> <package-dir-value>

Add to the value of extra-sources in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku alias set-extra-sources

pack.raku alias set-extra-sources --help

Usage:
  pack.raku alias set-extra-sources <key> [<extra-sources> ...]

Set the value of extra-sources in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku alias append-extra-sources

pack.raku alias append-extra-sources --help

Usage:
  pack.raku alias append-extra-sources <key> [<extra-sources> ...]

Append [<extra-sources> ...] to the value of extra-sources in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku alias remove-schema

pack.raku alias remove-schema --help

Usage:
  pack.raku alias remove-schema <key>

Remove the value of schema in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku alias remove-podir

pack.raku alias remove-podir --help

Usage:
  pack.raku alias remove-podir <key>

Remove the value of podir in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku alias remove-gettext-domain

pack.raku alias remove-gettext-domain --help

Usage:
  pack.raku alias remove-gettext-domain <key>

Remove the value of gettext-domain in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku alias remove-out-dir

pack.raku alias remove-out-dir --help

Usage:
  pack.raku alias remove-out-dir <key>

Remove the value of out-dir in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku alias remove-extra-sources

pack.raku alias remove-extra-sources --help

Usage:
  pack.raku alias remove-extra-sources <key>

Truncate the extra-sources list in <package-dir>/.pack_args.json.

Where

Table of Contents

pack.raku alias get-schema

pack.raku alias get-schema --help

Usage:
  pack.raku alias get-schema <key>

Get the value of schema in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku alias get-podir

pack.raku alias get-podir --help

Usage:
  pack.raku alias get-podir <key>

Get the value of podir in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku alias get-gettext-domain

pack.raku alias get-gettext-domain --help

Usage:
  pack.raku alias get-gettext-domain <key>

Get the value of gettext-domain in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku alias get-out-dir

pack.raku alias get-out-dir --help

Usage:
  pack.raku alias get-out-dir <key>

Table of Contents

pack.raku alias get-extra-sources

pack.raku alias get-extra-sources --help

Usage:
  pack.raku alias get-extra-sources <key>

Get the value of the extra-sources list in <package-dir>/.pack_args.json.

Where

Table of Contents

pack.raku alias get-force

pack.raku alias get-force --help

Usage:
  pack.raku alias get-force <key>

Get the value of force in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku alias get-package-dir

pack.raku alias get-package-dir --help

Usage:
  pack.raku alias get-package-dir <key>

Get the value of package-dir in <package-dir>/.pack_args.json

Where

Table of Contents

pack.raku edit configs

pack.raku edit configs --help

Usage:
  pack.raku edit configs

Open all configuration files for editing, avoid for expert use only and there are better ways, mostly.

Table of Contents

pack.raku list keys

pack.raku list keys --help

Usage:
  pack.raku list keys [<prefix>]  [-c|--color|--colour] [-s|--syntax] [-l|--page-length[=Int]] [-p|--pattern=<Str>] [-e|--ecma-pattern=<Str>]

Where

List all or a subset of the keys avaiable.

Table of Contents

pack.raku list all

pack.raku list all --help

Usage:
  pack.raku list all [<prefix>]  [-c|--color|--colour] [-s|--syntax] [-l|--page-length[=Int]] [-p|--pattern=<Str>] [-e|--ecma-pattern=<Str>]

List the keys in the database.

Where

List all or a subset of the keys avaiable.

Table of Contents

pack.raku delete

pack.raku delete --help

Usage:
  pack.raku delete [<keys> ...] [-d|--delete|--do-not-trash]

Delete the specified key/directory paths from the database.

Where

Table of Contents

pack.raku del

pack.raku delete --help

Usage:
  pack.raku del [<keys> ...] [-d|--delete|--do-not-trash]

Delete the specified key/directory paths from the database.

Where

Table of Contents

pack.raku trash

pack.raku delete --help

Usage:
  pack.raku delete [<keys> ...]

Trash the specified key/directory paths from the database.

Where

Table of Contents

pack.raku tidy file

pack.raku tidy file --help

Usage:
  pack.raku tidy file

Tidy up the database file.

Table of Contents

pack.raku comment

pack.raku comment --help

Usage:
  pack.raku comment <key> <comment>  [-k|--kind=<Str where \{ ... } >]

Add a comment to an entry.

Table of Contents

pack.raku list trash

pack.raku list trash --help

Usage:
  pack.raku list trash [<prefix>]  [-c|--color|--colour] [-s|--syntax] [-l|--page-length[=Int]] [-p|--pattern=<Str>] [-e|--ecma-pattern=<Str>]

List the trashed keys in the database.

Where

Table of Contents

pack.raku empty trash

pack.raku empty trash --help

Usage:
  pack.raku empty trash

Delete all trashed/commented records.

Table of Contents

pack.raku undelete

pack.raku undelete --help

Usage:
  pack.raku undelete [<keys> ...]

Undelete the specified keys.

Table of Contents

pack.raku show stats

pack.raku show stats --help

Usage:
  pack.raku show stats [<prefix>]  [-c|--color|--colour] [-s|--syntax] [-p|--pattern=<Str>] [-e|--ecma-pattern=<Str>]

Show the stats for the database.

Where

Table of Contents

pack.raku show statistics

pack.raku show stats --help

Usage:
  pack.raku show statistics [<prefix>]  [-c|--color|--colour] [-s|--syntax] [-p|--pattern=<Str>] [-e|--ecma-pattern=<Str>]

Show the statistics for the database.

Where

Table of Contents

pack.raku backup db

pack.raku backup db --help

Usage:
  pack.raku backup db  [-w|--win-format|--use-windows-formatting]

Backup the db file.

Table of Contents

pack.raku restore db

pack.raku restore db --help

Usage:
  pack.raku restore db [<restore-from>]

Restore the db file from restore-from.

Where

Table of Contents

pack.raku menu restore db

pack.raku menu restore db --help

Usage:
  pack.raku menu restore db [<message>]  [-c|--color|--colour] [-s|--syntax]

Use a text menu to present options for database file restore

pack.raku menu restore db "testing one two three" 
testing one two three
         0	.rw-rw-r-- 394.0B grizzlysmit grizzlysmit 2025-06-02T07:49:56.429315+10:00 pack.p_ck.2025-06-02T00:02:07.886302+10:00
         1	.rw-rw-r-- 495.0B grizzlysmit grizzlysmit 2025-07-05T09:30:11.002659+10:00 pack.p_ck.2025-07-05T09:30:47.997666+10:00
         2	cancel
use cancel, bye, bye bye, quit, q, or 2 to quit
choose a candidate 0..2 =:> q

in ascii/UTF-8 mode.

Table of Contents

pack.raku list db backups

pack.raku list db backups --help

Usage:
  pack.raku list db backups [<prefix>]  [-c|--color|--colour] [-s|--syntax] [-l|--page-length[=Int]] [-p|--pattern=<Str>] [-e|--ecma-pattern=<Str>]

List the db backups in the standard directory.

Where

Table of Contents

pack.raku list editors

pack.raku list editors --help

Usage:
  pack.raku list editors  [-f|--prefix=<Str>] [-c|--color|--colour] [-s|--syntax] [-l|--page-length[=Int]] [-p|--pattern=<Str>] [-e|--ecma-pattern=<Str>]

List the contents of the db file.

Where

pack.raku list editors

Editors | Actual Editor  
=========================
gedit   |                
gvim    |             *  
kate    |                
xemacs  |                
=========================

Table of Contents

pack.raku editors stats

pack.raku editors stats --help

Usage:
  pack.raku editors stats [<prefix>]  [-c|--color|--colour] [-s|--syntax] [-l|--page-length[=Int]] [-p|--pattern=<Str>] [-e|--ecma-pattern=<Str>]

Show the statistics for the editors database.

Where

pack.raku editors stats

Variable               |   Value          
==========================================
$editor                |            gvim  
$override-GUI_EDITOR   |            True  
%*ENV<EDITOR>          |    /usr/bin/vim  
%*ENV<VISUAL>          |    /usr/bin/vim  
%*ENV«GUI_EDITOR»      |   /usr/bin/gvim  
@default-editors       |      [ "gvim" ]  
@override-gui_editor   |          [True]  
==========================================

Table of Contents

pack.raku list editors backups

pack.raku list editors backups --help

Usage:
  pack.raku list editors backups [<prefix>]  [-c|--color|--colour] [-s|--syntax] [-l|--page-length[=Int]] [-p|--pattern=<Str>] [-e|--ecma-pattern=<Str>]

Show the statistics for the editors database.

Where

pack.raku list editors backups

Permissions Size   User        Group       Date Modified                    Backup                                   
=====================================================================================================================
.rw-rw-r--  802.0B grizzlysmit grizzlysmit 2023-12-11T00:23:41.634625+10:00 editors.2023-12-11T01:24:20              
.rw-rw-r--  802.0B grizzlysmit grizzlysmit 2023-12-11T20:15:51.038790+10:00 editors.2023-12-11T21:16:28.034522+11:00 
.rw-rw-r--  802.0B grizzlysmit grizzlysmit 2023-12-11T20:58:20.835630+10:00 editors.2023-12-11T21:58:57.832862+11:00 
.rw-rw-r--  833.0B grizzlysmit grizzlysmit 2023-12-11T22:21:21.450694+10:00 editors.2023-12-11T23:21:58.449520+11:00 
.rw-rw-r--  820.0B grizzlysmit grizzlysmit 2023-12-11T22:31:34.183842+10:00 editors.2023-12-11T23:32:11.181779+11:00 
.rw-rw-r--  820.0B grizzlysmit grizzlysmit 2023-12-12T20:59:45.479111+10:00 editors.2023-12-12T22:00:22.468348+11:00 
.rw-rw-r--  820.0B grizzlysmit grizzlysmit 2023-12-30T07:25:06.941870+10:00 editors.2023-12-30T08:25:43.939760+11:00 
.rw-rw-r--  820.0B grizzlysmit grizzlysmit 2023-12-30T12:36:10.532847+10:00 editors.2023-12-30T13:36:47.532341+11:00 
.rw-rw-r--  820.0B grizzlysmit grizzlysmit 2023-12-31T15:36:43.791920+10:00 editors.2023-12-31T16:37:20.781525+11:00 
.rw-rw-r--  820.0B grizzlysmit grizzlysmit 2023-12-31T16:59:08.910346+10:00 editors.2023-12-31T17:59:45.906433+11:00 
.rw-rw-r--  820.0B grizzlysmit grizzlysmit 2023-12-31T17:10:53.742754+10:00 editors.2023-12-31T18:11:30.735343+11:00 
.rw-rw-r--  820.0B grizzlysmit grizzlysmit 2024-01-02T22:56:24.817173+10:00 editors.2024-01-02T23:57:01.808884+11:00 
.rw-rw-r--  820.0B grizzlysmit grizzlysmit 2024-01-04T02:40:03.140891+10:00 editors.2024-01-04T03:40:40.002896+11:00 
.rw-rw-r--  820.0B grizzlysmit grizzlysmit 2024-01-04T02:41:03.757027+10:00 editors.2024-01-04T03:41:40.749044+11:00 
.rw-rw-r--  820.0B grizzlysmit grizzlysmit 2024-01-04T02:47:47.097922+10:00 editors.2024-01-04T03:48:24.025215+11:00 
=====================================================================================================================

Table of Contents

pack.raku backup editors

pack.raku backup editors --help

Usage:
  pack.raku backup editors  [-w|--use-windows-formatting]

Backup the editors db file.

Table of Contents

pack.raku restore editors

pack.raku restore editors --help

Usage:
  pack.raku restore editors <restore-from>

Restore the editors db file from restore-from.

Where

Table of Contents

pack.raku set editor

pack.raku set editor --help

Usage:
  pack.raku set editor <editor> [<comment>]

Set the default editor to use.

Where

Table of Contents

pack.raku set override GUI_EDITOR

pack.raku set override GUI_EDITOR --help

Usage:
  pack.raku set override GUI_EDITOR <value> [<comment>]

Set the value of the override-GUI_EDITOR parameter

Where

Table of Contents

pack.raku menu restore editors

pack.raku menu restore editors --help

Usage:
  pack.raku menu restore editors [<message>]  [-c|--color|--colour] [-s|--syntax]

Restore the editors db using a menu of backups from the standard directory.

Where

Table of Contents

pack.raku USAGE

pack.raku USAGE [-n|--nocolor|--nocolour]

Shows the USAGE without this method purpose is to implement the coloured usage.

Where

Table of Contents

multi sub GENERATE-USAGE

multi sub GENERATE-USAGE(&main, |capture --> Int) {
    my @capture = |(capture.list);
    my @_capture;
    if @capture && @capture[0] eq 'help' {
        @_capture = |@capture[1 .. *];
    } else {
        @_capture = |@capture;
    }
    my %capture = |(capture.hash);
    if %capture«nocolour» || %capture«nocolor» || %capture«n» {
        say-coloured($*USAGE, True, |%capture, |@_capture);
    } else {
        #dd @capture;
        say-coloured($*USAGE, False, |%capture, |@_capture);
        #&*GENERATE-USAGE(&main, |capture)
    }
    exit 0;
}

Does the real work generating the coloured usage.

Table of Contents