Justering/expand/marginaler, hover-popup med peek, appikon
All checks were successful
check / check (push) Successful in 1m37s

- Ny layoutmodell: alignment (center/start/end längs kanten), expand
  (ö eller täck hela kanten) och tre marginaler — A från kanten,
  B/C i början/slutet av kanten. Funkar för alla fyra positionerna.
- Settings → Layout har en ritad illustration (cairo) som visar vad
  A/B/C betyder för vald position och uppdateras live.
- Fönsterlistan för grupper kan öppnas vid hover (group_popup) och
  stängs när pekaren lämnar den; hover på en rad kan peeka (alla andra
  fönster tonas ner via Wayfires alpha-plugin) eller fokusera fönstret
  (list_hover: peek/focus/none).
- Appikon (assets/waydock.svg) + .desktop-fil; installeras av
  install.sh och används av settings-fönstret.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-30 00:03:15 +02:00
parent c9cdf2edc3
commit 04d999642c
10 changed files with 490 additions and 32 deletions

View File

@@ -28,6 +28,34 @@ pub enum Layer {
Bottom,
}
/// Var längs kanten ön ligger (start = vänster/topp, end = höger/botten).
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum Alignment {
Center,
Start,
End,
}
/// Hur fönsterlistan för en grupperad app öppnas.
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum GroupPopup {
Click,
Hover,
}
/// Vad som händer när man hovrar en rad i fönsterlistan.
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum ListHover {
/// tona ner alla andra fönster så bara det hovrade syns tydligt
Peek,
/// fokusera/lyft fönstret direkt vid hover
Focus,
None,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "snake_case")]
pub enum ClickAction {
@@ -151,6 +179,8 @@ pub struct Behavior {
pub group_apps: bool,
pub tooltips: bool,
pub urgent_pulse: bool,
pub group_popup: GroupPopup,
pub list_hover: ListHover,
}
impl Default for Behavior {
fn default() -> Self {
@@ -161,6 +191,8 @@ impl Default for Behavior {
group_apps: true,
tooltips: true,
urgent_pulse: true,
group_popup: GroupPopup::Click,
list_hover: ListHover::Peek,
}
}
}
@@ -268,8 +300,15 @@ impl Default for LogConfig {
#[serde(default)]
pub struct Config {
pub position: Position,
pub centered: bool,
pub alignment: Alignment,
/// false = ö som är så stor som innehållet; true = täck hela kanten
pub expand: bool,
/// avstånd från kanten baren ligger mot (px)
pub margin: i32,
/// marginal i början av kanten: vänster (topp/botten) resp. topp (vänster/höger)
pub margin_start: i32,
/// marginal i slutet av kanten: höger resp. botten
pub margin_end: i32,
pub layer: Layer,
pub avoid_windows: bool,
pub appearance: Appearance,
@@ -287,8 +326,11 @@ impl Default for Config {
fn default() -> Self {
Self {
position: Position::Bottom,
centered: true,
alignment: Alignment::Center,
expand: false,
margin: 8,
margin_start: 0,
margin_end: 0,
layer: Layer::Top,
avoid_windows: false,
appearance: Appearance::default(),