feat(settings): settings app: apps list + per-capability allow/revoke, about (who/role), sign out; system-only caps permissions/session (install refused); pm MANAGE_BADGE copy (list/apps/allow/revoke only), APPS op; init WHO + session pass-on; factory decisions seeded for new system apps; k-ui list_item/toggle, screens/back/scroll
This commit is contained in:
@@ -2,6 +2,16 @@
|
||||
|
||||
use types::budget::Limits;
|
||||
|
||||
/// Whether a program holds the session: who is signed in, signing out.
|
||||
#[derive(Clone, Copy, PartialEq, Eq)]
|
||||
pub enum Session {
|
||||
No,
|
||||
/// For itself only (the shell).
|
||||
Own,
|
||||
/// To pass on to apps granted `session` (the permission manager).
|
||||
PassOn,
|
||||
}
|
||||
|
||||
/// A board device init hands to a program over its endpoint.
|
||||
#[derive(Clone, Copy, PartialEq, Eq)]
|
||||
pub enum Device {
|
||||
@@ -49,8 +59,8 @@ pub struct Program {
|
||||
pub spawns: Option<Limits>,
|
||||
/// May halt the machine.
|
||||
pub system_control: bool,
|
||||
/// May sign the user out (`types::spawn::SIGN_OUT`), in the next slot.
|
||||
pub signs_out: bool,
|
||||
/// The session (`types::spawn::SIGN_OUT`, `WHO`), in the next slot.
|
||||
pub session: Session,
|
||||
/// Takes Ctrl+C: a terminal copy with `types::terminal::CONTROL`, last.
|
||||
pub takes_ctrl_c: bool,
|
||||
/// Started again if it dies (see init's supervise.rs).
|
||||
@@ -84,7 +94,7 @@ const fn server(name: &'static str, file: &'static [u8], limits: Limits) -> Prog
|
||||
console: false,
|
||||
spawns: None,
|
||||
system_control: false,
|
||||
signs_out: false,
|
||||
session: Session::No,
|
||||
takes_ctrl_c: false,
|
||||
restart: true,
|
||||
restarts_clients: false,
|
||||
@@ -141,6 +151,7 @@ pub const SESSION: &[Program] = &[Program {
|
||||
spawns: Some(Limits { pages: 2048, endpoints: 8, notifications: 8, regions: 8 }),
|
||||
// The shell holds handles to the apps it ran, which die with it.
|
||||
restarts_clients: true,
|
||||
session: Session::PassOn,
|
||||
// Installing waits for the user's consent.
|
||||
pinged: false,
|
||||
..server("permission", b"bin/permission", Limits { pages: 96, ..SMALL })
|
||||
@@ -167,7 +178,7 @@ pub const DESKTOP: &[Program] = &[Program {
|
||||
serves: false,
|
||||
uses: &["terminal", "permission"],
|
||||
storage: &[users(b"home", true)],
|
||||
signs_out: true,
|
||||
session: Session::Own,
|
||||
takes_ctrl_c: true,
|
||||
..server("shell", b"bin/shell", SMALL)
|
||||
}];
|
||||
|
||||
Reference in New Issue
Block a user