Publish the guides from this repository to the GitHub Wiki. Organize them into Usage, Configuration and Development, with 15 separate configuration topics and redirects for the former website guide URLs. Add a tabbed-windows guide covering grouping, switching tabs and taking windows out. Document the scrolling indicator's defaults and limits, and link the guide from the README, shortcuts and IPC pages. Update from main, including the latest tabbed-layout changes. Separate Activities setup, configuration and publishing documentation. Review the guide prose with the unslop skill, keeping existing examples and heading links. The wiki workflow uses GitHub's built-in token to publish documentation changes on main. Validation: - 20 documentation tests pass, including README links and Activities/tab-indicator field coverage. - The publisher builds 46 wiki pages; the site build and Python syntax checks pass. - All 115 code examples from main are preserved. - The Python suite passes: 90 tests passed and 31 opt-in integration tests skipped, with the system GI module available.
250 lines
10 KiB
Markdown
250 lines
10 KiB
Markdown
# Live Activities
|
|
|
|
Live Activities shows running commands and other tasks in your panel. A build
|
|
can stay visible while you work in another window; click its activity to return
|
|
to the terminal when Ferese can identify that window. The panel supplies the
|
|
appearance, so tasks use your theme and animation settings.
|
|
|
|
## Start using it
|
|
|
|
After installing with `./scripts/install.sh`, open a new terminal and run a
|
|
command as usual:
|
|
|
|
```sh
|
|
cargo build
|
|
```
|
|
|
|
The installer detects Fish, Bash or Zsh, installs its shell hook, enables shell
|
|
activities and adds an Activities item to your panel. A Cargo build appears
|
|
once it has run for **1.5 seconds**. A cached build that finishes sooner stays
|
|
hidden, including its completion message.
|
|
|
|
These command rules are included:
|
|
|
|
| Command | Delay before appearing |
|
|
| --- | --- |
|
|
| `cargo build`, `check`, `test`, `run`, `clippy` | 1.5 seconds |
|
|
| `npm` or `pnpm` followed by `install`, `build`, `test`, `run` | 1.5 seconds |
|
|
| `make` | 300 ms |
|
|
| `git push` | 300 ms |
|
|
| `docker build` | 1.5 seconds |
|
|
|
|
Rules match the command text at the start of the line. Commands such as
|
|
`cargo +nightly build`, `npm ci`, or `env RUSTFLAGS=... cargo build` need a custom
|
|
rule or an explicit wrapper. Commands that don't match a rule are discarded
|
|
without being logged.
|
|
|
|
To check the display without waiting for a build, run:
|
|
|
|
```sh
|
|
feresectl run --title "Activity check" -- sleep 5
|
|
```
|
|
|
|
This publishes directly and doesn't need a shell hook, but the panel still needs
|
|
an Activities item. The check appears after 300 ms and finishes after five
|
|
seconds.
|
|
|
|
### Existing installations
|
|
|
|
From an updated Ferese checkout, rerun user setup as your normal user:
|
|
|
|
```sh
|
|
python3 scripts/installer/install.py user-setup
|
|
```
|
|
|
|
This needs the updated `feresectl` installed. Setup backs up changed config and
|
|
shell startup files. It preserves an explicit `shell-hook #false` setting and
|
|
an existing Activities item, including one you've hidden. After the first
|
|
successful setup, later installs update the hook files without restoring panel
|
|
items you've removed or changing your activity settings.
|
|
|
|
Open a new terminal to load the hook. In an existing Fish terminal, you can
|
|
load it immediately with:
|
|
|
|
```fish
|
|
source ~/.config/fish/conf.d/ferese-activities.fish
|
|
```
|
|
|
|
The paths above use the default configuration directory. If you set
|
|
`XDG_CONFIG_HOME`, use that directory in place of `~/.config`.
|
|
|
|
### Add Activities to your panel
|
|
|
|
Open **Settings → Panel & Shell → Edit panel**, select a group in Arrange, and
|
|
choose **Add item → Activities**. Keep its visibility enabled. This is also how
|
|
to restore the item after removing it.
|
|
|
|
Activities can live in Start, Center or End. Regular panels use that position
|
|
and open the activity list in a popup. Morph presents tasks inside its existing
|
|
island and adds an Activities tab. Changing a group's position doesn't create
|
|
another Morph island. See [Panel configuration](panel-configuration.md) for item
|
|
placement and overflow controls.
|
|
|
|
For manual panel configuration, add an `activities` item to an existing group.
|
|
This complete panel example places it at the end of a floating panel; don't add
|
|
a second `panel` block if your config already has one:
|
|
|
|
```kdl
|
|
panel "main" {
|
|
style "floating"
|
|
end {
|
|
group "tasks" {
|
|
item "activities" kind="activities" priority=20
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Manual shell setup
|
|
|
|
Without installer setup, hooks and process watching are off by default. Add an
|
|
Activities item to the panel and enable `activities.sources.shell-hook` before
|
|
loading a hook. From a checkout, source `contrib/activities/ferese.fish` in Fish,
|
|
`contrib/activities/ferese.zsh` in Zsh, or the following in Bash:
|
|
|
|
```sh
|
|
source contrib/activities/bash-preexec/bash-preexec.sh
|
|
source contrib/activities/ferese.bash
|
|
```
|
|
|
|
Use absolute paths when adding these lines to shell startup files. Zsh uses
|
|
`add-zsh-hook`, Fish uses named pre/postexec events, and Bash composes with
|
|
[bash-preexec](https://github.com/rcaloras/bash-preexec)'s hook arrays. Load
|
|
bash-preexec before the Bash hook; the hook does not replace an existing DEBUG
|
|
trap. Hook files never execute captured command text and preserve command status.
|
|
|
|
The installer copies hooks into `$XDG_CONFIG_HOME/ferese/activities`, defaulting
|
|
to `~/.config/ferese/activities`. Fish loads through its `conf.d` directory; Bash
|
|
and Zsh get a marked block in `.bashrc` or `.zshrc`. Zsh setup honors an exported
|
|
`ZDOTDIR`. Bash shells started in login mode must also load `.bashrc` from their
|
|
login profile for the installed hook to run.
|
|
|
|
Process watching is an opt-in alternative when hooks are unavailable. It performs
|
|
bounded sampling on one worker, and disappearance means expiry, never inferred
|
|
success or failure. Shell hooks observe interactive commands; they do not
|
|
automatically wrap them or parse their output. The
|
|
[Cargo adapter](#cargo-progress) requires `feresectl run`.
|
|
|
|
## Run a command explicitly
|
|
|
|
Use `feresectl run` for commands outside the built-in rules, unsupported shells,
|
|
or scripts where an interactive hook doesn't run:
|
|
|
|
```sh
|
|
feresectl run --title "Backup" -- ./backup.sh
|
|
feresectl run --title "Tests" -- npm test
|
|
```
|
|
|
|
Arguments after `--` are passed to the command. The command keeps its terminal
|
|
input, output, working directory, environment, terminal process group and
|
|
exit/signal status, and still runs if activity publishing fails.
|
|
|
|
Completion follows the command's exit. A background descendant holding stdout
|
|
open does not keep the wrapper alive indefinitely.
|
|
|
|
### Cargo progress
|
|
|
|
A normal `cargo build` shows that the command is running and whether it finishes
|
|
successfully. It doesn't report a percentage. To show the number of compilation
|
|
units completed, use the Cargo adapter:
|
|
|
|
```sh
|
|
feresectl run --cargo-json -- cargo build
|
|
```
|
|
|
|
The adapter reads Cargo's JSON output while keeping diagnostics readable in the
|
|
terminal. It reports completed units as text because Cargo doesn't supply a
|
|
reliable total for a percentage. Setting `progress "cargo-json"` in a rule enables
|
|
this adapter for matching `feresectl run` commands; it does not wrap plain
|
|
`cargo build` automatically. A `build-finished` message never completes the
|
|
activity; completion follows the actual child exit. The adapter also preserves
|
|
non-JSON output. See the
|
|
[Cargo JSON contract](https://doc.rust-lang.org/cargo/reference/external-tools.html).
|
|
|
|
## Use the activity list
|
|
|
|
Morph shows up to two activities in its collapsed and peek states, with a `+n`
|
|
badge for additional tasks. Higher-priority tasks appear first, with temporary
|
|
boosts for new tasks and completion results. Hovering holds the current selection
|
|
in place while its values continue updating. Recording and low battery take
|
|
priority over ordinary activities.
|
|
|
|
Click the activity strip or open the Activities tab to see the list. Arrow keys
|
|
select a row and Enter activates it. Selecting a linked task focuses its terminal
|
|
and closes the list. If the terminal has closed, or one terminal process owns
|
|
several possible windows, Ferese leaves the list open. It cannot select a
|
|
particular tmux pane.
|
|
|
|
Tasks with reported progress show a percentage inside a ring. Tasks without a
|
|
percentage show an animated arc around their icon. Reduced motion makes progress
|
|
changes immediate and uses a static track. Activities do not automatically open
|
|
the expanded panel.
|
|
|
|
A visible task's result stays for the configured [result display time](configuration/activities.md#settings).
|
|
Do not disturb limits ordinary running activities to one, hides the badge and
|
|
suppresses result flashes. When there are no eligible tasks, the regular Activities item has no
|
|
content and Morph returns to its other content.
|
|
|
|
## Configure Activities
|
|
|
|
[Configure Activities](configuration/activities.md).
|
|
|
|
### Turn off automatic command detection
|
|
|
|
[Turn off automatic command detection](configuration/activities.md#turn-off-automatic-command-detection).
|
|
|
|
### Command rules
|
|
|
|
[Command rules](configuration/activities.md#command-rules).
|
|
|
|
## If nothing appears
|
|
|
|
1. **Try the five-second check above.** If it appears, the display and broker
|
|
work; check shell setup and command matching next.
|
|
2. **Check the panel item.** In Arrange, confirm that Activities exists and is
|
|
visible. On a regular panel, also check its overflow and available space.
|
|
3. **Open a new terminal.** Installing a hook doesn't load it into terminals
|
|
that are already open. Confirm `shell-hook #true` in your config too.
|
|
4. **Check the command and duration.** Cargo and npm tasks must last at least
|
|
1.5 seconds under the built-in rules. A custom rule can increase that delay.
|
|
Prefixes and different subcommands may not match the built-in patterns.
|
|
5. **Inspect the broker while the task runs:**
|
|
|
|
```sh
|
|
feresectl -j activity list
|
|
```
|
|
|
|
An empty `activities` array means no task is registered in that session.
|
|
A registered task can still be waiting for its delay, ranked below another
|
|
task, or hidden by panel settings. In Morph, also check for recording or a
|
|
low-battery state taking priority.
|
|
6. **Check the session and build.** A nested preview has its own broker; use the
|
|
same [session socket](ipc.md#choose-a-session) for publishing and listing.
|
|
If `activity` or `run` is an unknown command, update the installed binaries.
|
|
Log out and back in after upgrading the compositor and shell.
|
|
|
|
Shell hooks suppress publishing errors so they don't interrupt your commands.
|
|
For an ownership or permission error, use a direct publication from the same
|
|
terminal to see the response:
|
|
|
|
```sh
|
|
feresectl activity start diagnostic --title "Activity check" --lease-ms 10000
|
|
feresectl activity cancel diagnostic
|
|
```
|
|
|
|
The lease removes this diagnostic after ten seconds if you omit the cancel.
|
|
See [Publisher ownership and lifecycle](development/activities.md#publisher-ownership-and-lifecycle)
|
|
for the Linux requirement, ownership checks, limits and expiry behavior.
|
|
|
|
## Publish your own status
|
|
|
|
See [Publishing activities](development/activities.md#publish-your-own-status) for the CLI examples.
|
|
|
|
## Publisher ownership and lifecycle
|
|
|
|
See [Ownership and lifecycle](development/activities.md#publisher-ownership-and-lifecycle).
|
|
|
|
## Extensions and templates
|
|
|
|
See [Templates and the IPC schema](development/activities.md#extensions-and-templates).
|