diff --git a/docs/configuration.md b/docs/configuration.md
index f4f96f5..949452a 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -1520,10 +1520,11 @@ An array of groups which can optionally have a title and a custom color.
| links | array | yes | |
| same-tab | boolean | no | false |
| hide-arrow | boolean | no | false |
+| target | string | no | |
> [!TIP]
>
-> You can set `same-tab` and `hide-arrow` either on the group which will apply them to all links in that group, or on each individual link which will override the value set on the group.
+> You can set `same-tab`, `hide-arrow` and `target` either on the group which will apply them to all links in that group, or on each individual link which will override the value set on the group.
###### Properties for each link
| Name | Type | Required | Default |
@@ -1533,6 +1534,7 @@ An array of groups which can optionally have a title and a custom color.
| icon | string | no | |
| same-tab | boolean | no | false |
| hide-arrow | boolean | no | false |
+| target | string | no | |
`icon`
@@ -1556,6 +1558,10 @@ Whether to open the link in the same tab or a new one.
Whether to hide the colored arrow on each link.
+`target`
+
+Set a custom value for the link's `target` attribute. Possible values are `_blank`, `_self`, `_parent` and `_top`, you can read more about what they do [here](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#target). This property has precedence over `same-tab`.
+
### ChangeDetection.io
Display a list watches from changedetection.io.
diff --git a/internal/glance/templates/bookmarks.html b/internal/glance/templates/bookmarks.html
index 1e8bfc7..f247bdb 100644
--- a/internal/glance/templates/bookmarks.html
+++ b/internal/glance/templates/bookmarks.html
@@ -13,7 +13,7 @@
{{ end }}
- {{ .Title }}
+ {{ .Title }}
{{ end }}
diff --git a/internal/glance/widget-bookmarks.go b/internal/glance/widget-bookmarks.go
index d55b818..4f3d26e 100644
--- a/internal/glance/widget-bookmarks.go
+++ b/internal/glance/widget-bookmarks.go
@@ -14,6 +14,7 @@ type bookmarksWidget struct {
Color *hslColorField `yaml:"color"`
SameTab bool `yaml:"same-tab"`
HideArrow bool `yaml:"hide-arrow"`
+ Target string `yaml:"target"`
Links []struct {
Title string `yaml:"title"`
URL string `yaml:"url"`
@@ -23,10 +24,11 @@ type bookmarksWidget struct {
// {{ if not .SameTab }} would return true for any non-nil pointer
// which leaves us with no way of checking if the value is true or
// false, hence the duplicated fields below
- SameTabRaw *bool `yaml:"same-tab"`
- SameTab bool `yaml:"-"`
- HideArrowRaw *bool `yaml:"hide-arrow"`
- HideArrow bool `yaml:"-"`
+ SameTabRaw *bool `yaml:"same-tab"`
+ SameTab bool `yaml:"-"`
+ HideArrowRaw *bool `yaml:"hide-arrow"`
+ HideArrow bool `yaml:"-"`
+ Target string `yaml:"target"`
} `yaml:"links"`
} `yaml:"groups"`
}
@@ -49,6 +51,18 @@ func (widget *bookmarksWidget) initialize() error {
} else {
link.HideArrow = *link.HideArrowRaw
}
+
+ if link.Target == "" {
+ if group.Target != "" {
+ link.Target = group.Target
+ } else {
+ if link.SameTab {
+ link.Target = ""
+ } else {
+ link.Target = "_blank"
+ }
+ }
+ }
}
}