(This has mainly been replaced by hilbish.jobs ).
Hilbish has pretty standard job control. It’s missing one or two things, but works well. One thing which is different from other shells (besides Hilbish) itself is the API for jobs, and of course it’s in Lua. You can add jobs, stop and delete (disown) them and even get output.
Job Interface
The job interface refers to hilbish.jobs
.
Functions
(Note that in the list here, they’re called from hilbish.jobs
, so
a listing of foo
would mean hilbish.jobs.foo
)
all()
-> {jobs}: Returns a table of all jobs.last()
-> job: Returns the last added job.get(id)
-> job: Get a job by its ID.add(cmdstr, args, execPath)
-> job: Adds a new job to the job table. Note that this does not run the command; You have to start it manually.cmdstr
is the user’s input for the job,args
is a table of arguments for the command. It includes arg0 (don’t set it as entry 0 in the table) andexecPath
is an absolute path for the command executable.disown(id)
: Removes a job by ID from the job table.
Job Object
A job object is a piece of userdata
. All the functions of a job require
you to call them with a colon, since they are methods for the job object.
Example: hilbish.jobs.last():foreground()
Which will foreground the last job.
You can still have a job object for a disowned job, it just won’t be working anywhere. :^)
Properties
cmd
: command stringrunning
: boolean whether the job is runningid
: unique id for the jobpid
: process id for the jobexitCode
: exit code of the job In ordinary cases you’d prefer to use theid
instead ofpid
. Theid
is unique to Hilbish and is how you get jobs with thehilbish.jobs
interface. It may also not describe the job entirely.
Functions
stop()
: Stops the job.start()
: Starts the job.foreground()
: Set the job as the current running foreground process, or run it in the foreground after it has been suspended.background()
: Run the job in the background after it has been suspended.