changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate rust/lib/obj/src/config/user.rs

changeset 698: 96958d3eb5b0
parent: c7165d93a9eb
author: Richard Westhaver <ellis@rwest.io>
date: Fri, 04 Oct 2024 22:04:59 -0400
permissions: -rw-r--r--
description: fixes
17
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
1
 //! cfg::config::user
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
2
 //!
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
3
 //! User configuration primitives
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
4
 use crate::object::{direction::RelativeDirection, location::Point};
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
5
 use serde::{Deserialize, Serialize};
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
6
 use std::collections::HashMap;
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
7
 
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
8
 use crate::{AuthConfig, DisplayConfig, PackageConfig, ProjectConfig};
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
9
 
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
10
 /// User configuration type
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
11
 ///
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
12
 /// Used to configure system users for various platforms.
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
13
 #[derive(Serialize, Deserialize, Debug, Default)]
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
14
 pub struct UserConfig {
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
15
   pub shell: ShellConfig,
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
16
   pub geo: Option<Point>,
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
17
   pub displays: Option<Vec<DisplayConfig>>,
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
18
   pub packages: Vec<PackageConfig>,
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
19
   pub projects: Vec<ProjectConfig>,
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
20
   pub auth: Vec<AuthConfig>,
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
21
 }
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
22
 
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
23
 #[derive(Serialize, Deserialize, Debug, Default)]
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
24
 pub struct ShellConfig {
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
25
   pub env: HashMap<String, String>,
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
26
   pub cmds: HashMap<String, String>,
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
27
   pub shell: ShellType,
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
28
 }
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
29
 
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
30
 #[derive(Serialize, Deserialize, Debug, Hash, Default)]
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
31
 pub enum ShellType {
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
32
   #[default]
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
33
   Bash,
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
34
   Zsh,
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
35
   Sh,
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
36
 }
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
37
 
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
38
 /// A session is a single collection of `pseudo terminals` under the
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
39
 /// management of tmux. Each session has one or more windows linked to
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
40
 /// it.
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
41
 #[derive(Serialize, Deserialize, Debug, Default)]
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
42
 pub struct TmuxSessionConfig {
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
43
   pub name: String,
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
44
   pub windows: Vec<TmuxWindowConfig>,
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
45
 }
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
46
 
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
47
 /// A window occupies the entire screen and may be split into
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
48
 /// rectangular panes.
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
49
 #[derive(Serialize, Deserialize, Debug, Default)]
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
50
 pub struct TmuxWindowConfig {
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
51
   pub name: String,
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
52
   pub panes: Vec<TmuxPaneConfig>,
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
53
 }
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
54
 
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
55
 /// An isolated pseudo terminal (pty) inside a Window, inside a
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
56
 /// Session.
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
57
 #[derive(Serialize, Deserialize, Debug, Default)]
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
58
 pub struct TmuxPaneConfig {
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
59
   pub name: String,
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
60
   pub position: Option<RelativeDirection>,
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
61
   pub init: Option<String>,
c7165d93a9eb add obj and net src
ellis <ellis@rwest.io>
parents:
diff changeset
62
 }