diff --git a/docs/modules/Clipboard.md b/docs/modules/Clipboard.md index 212a60d..f168f8f 100644 --- a/docs/modules/Clipboard.md +++ b/docs/modules/Clipboard.md @@ -12,15 +12,15 @@ Supports plain text and images. > Type: `clipboard` -| Name | Type | Default | Description | -|-----------------------|---------------------------------------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------| -| `icon` | `string` or [image](images) | `󰨸` | Icon to show on the widget button. | -| `icon_size` | `integer` | `32` | Size to render icon at (image icons only). | -| `max_items` | `integer` | `10` | Maximum number of items to show in the popup. | -| `truncate` | `'start'` or `'middle'` or `'end'` or `Map` | `null` | The location of the ellipses and where to truncate text from. Leave null to avoid truncating. Use the long-hand `Map` version if specifying a length. | -| `truncate.mode` | `'start'` or `'middle'` or `'end'` | `null` | The location of the ellipses and where to truncate text from. Leave null to avoid truncating. | -| `truncate.length` | `integer` | `null` | The fixed width (in chars) of the widget. Leave blank to let GTK automatically handle. | -| `truncate.max_length` | `integer` | `null` | The maximum number of characters before truncating. Leave blank to let GTK automatically handle. | +| Name | Type | Default | Description | +|-----------------------|------------------------------------------------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------| +| `icon` | `string` or [image](images) | `󰨸` | Icon to show on the widget button. | +| `icon_size` | `integer` | `32` | Size to render icon at (image icons only). | +| `max_items` | `integer` | `10` | Maximum number of items to show in the popup. | +| `truncate` | `'start'` or `'middle'` or `'end'` or `off` or `Map` | `off` | The location of the ellipses and where to truncate text from. Leave null to avoid truncating. Use the long-hand `Map` version if specifying a length. | +| `truncate.mode` | `'start'` or `'middle'` or `'end'` or `off` | `off` | The location of the ellipses and where to truncate text from. Leave null to avoid truncating. | +| `truncate.length` | `integer` | `null` | The fixed width (in chars) of the widget. Leave blank to let GTK automatically handle. | +| `truncate.max_length` | `integer` | `null` | The maximum number of characters before truncating. Leave blank to let GTK automatically handle. |
JSON diff --git a/docs/modules/Focused.md b/docs/modules/Focused.md index 009b125..066004a 100644 --- a/docs/modules/Focused.md +++ b/docs/modules/Focused.md @@ -10,15 +10,15 @@ Displays the title and/or icon of the currently focused window. > Type: `focused` -| Name | Type | Default | Description | -|-----------------------|---------------------------------------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------| -| `show_icon` | `boolean` | `true` | Whether to show the app's icon. | -| `show_title` | `boolean` | `true` | Whether to show the app's title. | -| `icon_size` | `integer` | `32` | Size of icon in pixels. | -| `truncate` | `'start'` or `'middle'` or `'end'` or `Map` | `null` | The location of the ellipses and where to truncate text from. Leave null to avoid truncating. Use the long-hand `Map` version if specifying a length. | -| `truncate.mode` | `'start'` or `'middle'` or `'end'` | `null` | The location of the ellipses and where to truncate text from. Leave null to avoid truncating. | -| `truncate.length` | `integer` | `null` | The fixed width (in chars) of the widget. Leave blank to let GTK automatically handle. | -| `truncate.max_length` | `integer` | `null` | The maximum number of characters before truncating. Leave blank to let GTK automatically handle. | +| Name | Type | Default | Description | +|-----------------------|------------------------------------------------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------| +| `show_icon` | `boolean` | `true` | Whether to show the app's icon. | +| `show_title` | `boolean` | `true` | Whether to show the app's title. | +| `icon_size` | `integer` | `32` | Size of icon in pixels. | +| `truncate` | `'start'` or `'middle'` or `'end'` or `off` or `Map` | `off` | The location of the ellipses and where to truncate text from. Leave null to avoid truncating. Use the long-hand `Map` version if specifying a length. | +| `truncate.mode` | `'start'` or `'middle'` or `'end'` or `off` | `off` | The location of the ellipses and where to truncate text from. Leave null to avoid truncating. | +| `truncate.length` | `integer` | `null` | The fixed width (in chars) of the widget. Leave blank to let GTK automatically handle. | +| `truncate.max_length` | `integer` | `null` | The maximum number of characters before truncating. Leave blank to let GTK automatically handle. |
JSON diff --git a/docs/modules/Music.md b/docs/modules/Music.md index 5c5bc7d..bdde681 100644 --- a/docs/modules/Music.md +++ b/docs/modules/Music.md @@ -11,27 +11,27 @@ in MPRIS mode, the widget will listen to all players and automatically detect/di > Type: `music` -| | Type | Default | Description | -|-----------------------|---------------------------------------------|----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------| -| `player_type` | `'mpris'` or `'mpd'` | `mpris` | Whether to connect to MPRIS players or an MPD server. | -| `format` | `string` | `{title} / {artist}` | Format string for the widget. More info below. | -| `truncate` | `'start'` or `'middle'` or `'end'` or `Map` | `null` | The location of the ellipses and where to truncate text from. Leave null to avoid truncating. Use the long-hand `Map` version if specifying a length. | -| `truncate.mode` | `'start'` or `'middle'` or `'end'` | `null` | The location of the ellipses and where to truncate text from. Leave null to avoid truncating. | -| `truncate.length` | `integer` | `null` | The fixed width (in chars) of the widget. Leave blank to let GTK automatically handle. | -| `truncate.max_length` | `integer` | `null` | The maximum number of characters before truncating. Leave blank to let GTK automatically handle. | -| `icons.play` | `string` or [image](images) | `` | Icon to show when playing. | -| `icons.pause` | `string` or [image](images) | `` | Icon to show when paused. | -| `icons.prev` | `string` or [image](images) | `󰒮` | Icon to show on previous button. | -| `icons.next` | `string` or [image](images) | `󰒭` | Icon to show on next button. | -| `icons.volume` | `string` or [image](images) | `󰕾` | Icon to show under popup volume slider. | -| `icons.track` | `string` or [image](images) | `󰎈` | Icon to show next to track title. | -| `icons.album` | `string` or [image](images) | `󰀥` | Icon to show next to album name. | -| `icons.artist` | `string` or [image](images) | `󰠃` | Icon to show next to artist name. | -| `show_status_icon` | `boolean` | `true` | Whether to show the play/pause icon on the widget. | -| `icon_size` | `integer` | `32` | Size to render icon at (image icons only). | -| `cover_image_size` | `integer` | `128` | Size to render album art image at inside popup. | -| `host` | `string` | `localhost:6600` | [MPD Only] TCP or Unix socket for the MPD server. | -| `music_dir` | `string` | `$HOME/Music` | [MPD Only] Path to MPD server's music directory on disc. Required for album art. | +| | Type | Default | Description | +|-----------------------|------------------------------------------------------|----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------| +| `player_type` | `'mpris'` or `'mpd'` | `mpris` | Whether to connect to MPRIS players or an MPD server. | +| `format` | `string` | `{title} / {artist}` | Format string for the widget. More info below. | +| `truncate` | `'start'` or `'middle'` or `'end'` or `off` or `Map` | `off` | The location of the ellipses and where to truncate text from. Leave null to avoid truncating. Use the long-hand `Map` version if specifying a length. | +| `truncate.mode` | `'start'` or `'middle'` or `'end'` or `off` | `off` | The location of the ellipses and where to truncate text from. Leave null to avoid truncating. | +| `truncate.length` | `integer` | `null` | The fixed width (in chars) of the widget. Leave blank to let GTK automatically handle. | +| `truncate.max_length` | `integer` | `null` | The maximum number of characters before truncating. Leave blank to let GTK automatically handle. | +| `icons.play` | `string` or [image](images) | `` | Icon to show when playing. | +| `icons.pause` | `string` or [image](images) | `` | Icon to show when paused. | +| `icons.prev` | `string` or [image](images) | `󰒮` | Icon to show on previous button. | +| `icons.next` | `string` or [image](images) | `󰒭` | Icon to show on next button. | +| `icons.volume` | `string` or [image](images) | `󰕾` | Icon to show under popup volume slider. | +| `icons.track` | `string` or [image](images) | `󰎈` | Icon to show next to track title. | +| `icons.album` | `string` or [image](images) | `󰀥` | Icon to show next to album name. | +| `icons.artist` | `string` or [image](images) | `󰠃` | Icon to show next to artist name. | +| `show_status_icon` | `boolean` | `true` | Whether to show the play/pause icon on the widget. | +| `icon_size` | `integer` | `32` | Size to render icon at (image icons only). | +| `cover_image_size` | `integer` | `128` | Size to render album art image at inside popup. | +| `host` | `string` | `localhost:6600` | [MPD Only] TCP or Unix socket for the MPD server. | +| `music_dir` | `string` | `$HOME/Music` | [MPD Only] Path to MPD server's music directory on disc. Required for album art. | See [here](images) for information on images. diff --git a/src/config/truncate.rs b/src/config/truncate.rs index 09966cd..14222ad 100644 --- a/src/config/truncate.rs +++ b/src/config/truncate.rs @@ -6,6 +6,7 @@ use serde::Deserialize; #[serde(rename_all = "snake_case")] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] pub enum EllipsizeMode { + None, Start, Middle, End, @@ -14,6 +15,7 @@ pub enum EllipsizeMode { impl From for GtkEllipsizeMode { fn from(value: EllipsizeMode) -> Self { match value { + EllipsizeMode::None => Self::None, EllipsizeMode::Start => Self::Start, EllipsizeMode::Middle => Self::Middle, EllipsizeMode::End => Self::End, @@ -31,6 +33,17 @@ impl From for GtkEllipsizeMode { #[serde(untagged)] #[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] pub enum TruncateMode { + /// Do not truncate content. + /// + /// Setting this option may cause excessively long content to overflow other widgets, + /// shifting them off-screen. + /// + /// # Example + /// + /// ```corn + /// { truncate = "off" } + Off, + /// Auto mode lets GTK decide when to ellipsize. /// /// To use this mode, set the truncate option to a string @@ -97,14 +110,14 @@ impl TruncateMode { const fn length(&self) -> Option { match self { - Self::Auto(_) => None, + Self::Auto(_) | Self::Off => None, Self::Length { length, .. } => *length, } } const fn max_length(&self) -> Option { match self { - Self::Auto(_) => None, + Self::Auto(_) | Self::Off => None, Self::Length { max_length, .. } => *max_length, } }