Sæt bogmærker i bar


Source: Download script

Last Updated: 11. September 2025 by Agnete Moos (agms@sonderborg.dk)

Parameters:

Navn Type Standardværdi Påkrævet
Click to see the source code
#! /usr/bin/env sh

# Sets a few Chrome policies related to bookmarks
#
# Related Chrome/Chromium policies:
# EditBookmarksEnabled: Prevents users from changing bookmarks: https://chromeenterprise.google/policies/#EditBookmarksEnabled
# BookmarkBarEnabled: Shows the BookmarksBar by default: https://chromeenterprise.google/policies/#BookmarkBarEnabled
# ManagedBookmarks: Creates a folder in the bookmarksbar, with any number of bookmarks directly accessible, and any
# number of subdirectories (children) with their own bookmarks. It's seemingly not possible to set individual bookmarks directly in
# the top level outside that directory: https://chromeenterprise.google/policies/#ManagedBookmarks

# Example value for the argument JSON_BOOKMARKS

#		    {
#		      "name": "DuckDuckGo",
#		      "url": "duckduckgo.com"
#		    },
#		    {
#		      "name": "Subdirectory 1",
#		      "children": [
#		        {
#		          "name":  "OS2",
#		          "url": "os2.eu"
#		        },
#		        {
#		          "name":  "Magenta",
#		          "url": "magenta.dk"
#		        }
#		      ]
#		    }

set -ex

if get_os2borgerpc_config os2_product | grep --quiet kiosk; then
  echo "Dette script er ikke designet til at blive anvendt på en kiosk-maskine."
  exit 1
fi

ACTIVATE="$1"
TOPLEVEL_FOLDER_NAME="$2"
ALLOW_EDITING_BOOKMARKS="$3"
JSON_BOOKMARKS="$4" # This argument is a file

POLICY="/etc/opt/chrome/policies/managed/os2borgerpc-bookmarks.json"
JSON_BOOKMARKS_TMP="/tmp/json-bookmarks.txt"

if [ ! -d "$(dirname "$POLICY")" ]; then
    mkdir --parents "$(dirname "$POLICY")"
fi

# Fix file encoding on JSON_BOOKMARKS in case it's latin-1, as apparently Chrome fails to read æøå in that case
# and it never loads the policy.
if file --brief --mime "$JSON_BOOKMARKS" | grep --quiet 'iso-8859-1'; then
	iconv --from-code iso-8859-1 --to-code utf-8 "$JSON_BOOKMARKS" --output "$JSON_BOOKMARKS_TMP"
	JSON_BOOKMARKS=$JSON_BOOKMARKS_TMP
fi

if [ "$ALLOW_EDITING_BOOKMARKS" = "False" ]; then
	EDIT_BOOKMARKS='"EditBookmarksEnabled": false,'
fi

if [ "$ACTIVATE" = "True" ]; then

  cat <<- EOF > "$POLICY"
		{
		  "BookmarkBarEnabled": true,
			$EDIT_BOOKMARKS
			"ManagedBookmarks": [
				{
					"toplevel_name": "$TOPLEVEL_FOLDER_NAME"
				},
				$(cat "$JSON_BOOKMARKS")
			]
		}
	EOF

else
	rm "$POLICY"
fi

Beskrivelse

Gør det muligt at sætte bogmærker i Chrome og Chromium via upload af en fil i JSON-format: https://en.wikipedia.org/wiki/JSON

Disse bliver sat i bogmærkebaren i toppen, som samtidig gøres synlig.

Man kan også vælge at slå det fra, så Borger ikke kan sætte nye bogmærker. Eventuelle bogmærker Borger sætter, bliver dog uanset slettet efter logud.

Dette script er blevet testet og virker på Ubuntu 22.04.

Parametre

  1. Sæt hak for at sætte bogmærker - lad stå tom for at slette alle bogmærkeindstillingerne.
  2. Navn du ønsker den øverste mappe, der indeholder bogmærkerne, skal have
  3. Om Borger skal have rettighed til at redigere/tilføje bogmærker. Bemærk at selv hvis det tillades, så vil de slettes efter logud.
  4. Selve bogmærkerne, som er en JSON-fil til upload.

JSON-filen har et bestemt format som skal følges - her er et eksempel på, hvordan den kan se ud: { “name”: “DuckDuckGo”, “url”: “duckduckgo.com” }, { “name”: “Undermappe 1”, “children”: [ { “name”: “OS2”, “url”: “os2.eu” }, { “name”: “Magenta”, “url”: “magenta.dk” } ] }

I eksemplet er der kun én undermappe, men der kan reelt set være så mange undermapper, som du ønsker. Nærmere info om strukturen af JSON-dataen fra Google (Chrome-udviklerne) selv: https://chromeenterprise.google/policies/#ManagedBookmarks