Skip to main content

Desktop

Struct Desktop 

Source
pub struct Desktop {
    pub version: &'static str,
    pub archives: &'static [Archive],
    pub install_dir: &'static str,
    pub program: &'static str,
    pub flags: &'static [&'static str],
    pub packages: &'static [&'static str],
    pub image_mib: u64,
}
Expand description

A harness that opens a window: where its application comes from, what the image needs beside the base image to run it, and how the window is started.

The application is never carried inside a QCode image. Its terms permit running it, not redistributing it, so the image is built on the person’s own machine and fetches the archive from the maker’s address at install time, exactly as a command-line harness is installed from its own registry.

Fields§

§version: &'static str

The version this record was read from and checked against.

§archives: &'static [Archive]

The maker’s archives of that version, one for each processor the image may be built on.

The image picks one while it is built, by the machine it is built on, and not QCode by the machine it was compiled for: the engine may build for another processor than QCode’s own.

§install_dir: &'static str

Where the archive unpacks to in the image, the one directory inside it stripped away.

§program: &'static str

The program that opens the window, by its name under Desktop::install_dir.

The archive’s own launcher script is not used: it runs the real program through sh, and a container whose first process is that shell never passes the stop signal on, so every stop costs the engine’s ten-second timeout and a kill.

§flags: &'static [&'static str]

The arguments the window is always opened with.

§packages: &'static [&'static str]

The Debian packages the application needs beside what the base image brings.

§image_mib: u64

How much room the built image takes, in whole mebibytes, as it was measured on top of qcode/base, which is what the recipe builds on. The person is told this before they ask for the image: a desktop image is an order of magnitude larger than a command-line harness’s.

Measure it the way the recipe builds it, not on a bare Debian: the first number here was taken on debian:trixie-slim during the trial and understated the image by 900 MiB, which is a promise broken before the download even starts. The live test the_image_builds_from_the_makers_archive_and_carries_the_application_and_its_settings prints the built size, so a re-measure is one run away.

Implementations§

Source§

impl Desktop

Source

pub fn command(&self) -> String

The program that opens the window, as an absolute path in the image.

Source

pub fn command_line(&self, workspace: &str) -> Vec<String>

The whole line that opens the window on the workspace at workspace: the program, the arguments it always takes, and the folder to open.

Trait Implementations§

Source§

impl Clone for Desktop

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Desktop

Source§

impl Debug for Desktop

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for Desktop

Source§

impl PartialEq for Desktop

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Desktop

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.