Glib::BookmarkFile(3)

πŸ¦‹ Glib::BookmarkFile(3) πŸ¦‹

okay so this is part 1 of the Glib::BookmarkFile(3) page from the User Contributed Perl Documentation, and it's giving parser-for-bookmark-files excellence. iykyk πŸ’…


🌸 NAME 🌸

Glib::BookmarkFile β€” a parser for bookmark files. periodt. πŸŽ€


✨ SYNOPSIS ✨

bestie, this synopsis is doing the most and honestly? slay. copy it exactly:

use Glib;

$date .= $_ while (<DATA>);

$b = Glib::BookmarkFile->new;
$b->load_from_data($data);
$uri = 'file:///some/path/to/a/file.txt';
if ($b->has_item($uri)) {
      $title = $b->get_title($uri);
      $desc  = $b->get_description($uri);

      print "Bookmark for `$uri' ($title):\n";
      print "  $desc\n";
}
0;

__DATA__
<?xml version="1.0" encoding="UTF-8"?>
<xbel version="1.0"
      xmlns:bookmark="http://www.freedesktop.org/standards/desktop-bookmarks"
      xmlns:mime="http://www.freedesktop.org/standards/shared-mime-info">
  <bookmark href="file:///tmp/test-file.txt" added="2006-03-22T18:54:00Z" modified="2006-03-22T18:54:00Z" visited="2006-03-22T18:54:00Z">
    <title>Test File</title>
    <desc>Some test file</desc>
    <info>
      <metadata owner="http://freedesktop.org">
        <mime:mime-type type="text/plain"/>
        <bookmark:applications>
          <bookmark:application name="Gedit" exec="gedit %u" timestamp="1143053640" count="1"/>
        </bookmark:applications>
      </metadata>
    </info>
  </bookmark>
</xbel>

πŸ’… DESCRIPTION πŸ’…

okay so Glib::BookmarkFile lets you parse, edit or create files containing lists of bookmarks to resources pointed to by URIs, with some meta-data bound to them, following the Desktop Bookmark Specification. the recent files support inside GTK+ uses this type of files to store the list of recently used files. 🫢

The syntax of bookmark files is described in detail in the Desktop Bookmarks Specification. here's the quick summary, bestie: bookmark files use a subclass of the XML Bookmark Exchange Language (XBEL) document format, defining meta-data such as the MIME type of the resource pointed by a bookmark, the list of applications that have registered the same URI and the visibility of the bookmark. πŸ’–βœ¨

✨ METHODS ✨

Okay bestie, this is the method buffet. Every bookmark inside a Glib::BookmarkFile is doing main character stuff, and these are the calls that make it happen. πŸ’…

πŸŽ€ bookmarkfile = Glib::BookmarkFile->new πŸŽ€

Fresh new Glib::BookmarkFile, ready for business. No extra args listed. Slay. ✨

πŸŽ€ $bookmark_file->add_application ($uri, $name, $exec) πŸŽ€

  • $uri (string) β€” the bookmark URI.
  • $name (string or undef) β€” the app name, or undef for the default.
  • $exec (string or undef) β€” the launch command, or undef for the default.

Adds the application with $name and $exec to the list of applications that have registered a bookmark for $uri into $bookmark_file.

Every bookmark inside a Glib::BookmarkFile must have at least an application registered. Each application must provide a name, a command line useful for launching the bookmark, the number of times the bookmark has been registered by the application and the last time the application registered this bookmark.

If $name is undef, the name of the application will be the same returned by Glib::get_application_name(); if $exec is undef, the command line will be a composition of the program name as returned by Glib::get_prgname() and the "%u" modifier, which will be expanded to the bookmark's URI.

This function will automatically take care of updating the registrations count and timestamping in case an application with the same $name had already registered a bookmark for $uri inside the bookmark file. If no bookmark for $uri is found one is created. 🫢

πŸŽ€ $bookmark_file->add_group ($uri, $group) πŸŽ€

  • $uri (string) β€” the bookmark URI.
  • $group (string) β€” the group name to add.

Adds $group to the list of groups to which the bookmark for $uri belongs to. If no bookmark for $uri is found one is created. πŸ’–

πŸŽ€ unix timestamp = $bookmark_file->get_added ($uri) πŸŽ€

  • $uri (string) β€” the bookmark URI.

No extra prose on this one β€” it gives you the added timestamp. ⏰

πŸŽ€ $bookmark_file->set_added ($uri, $value) πŸŽ€

  • $uri (string) β€” the bookmark URI.
  • $value (unix timestamp) β€” the time to set.

Sets the time the bookmark for $uri was added. If no bookmark for $uri is found one is created. ✨

πŸŽ€ ($exec, $count, $stamp) = $bookmark_file->get_app_info ($uri, $name) πŸŽ€

  • $uri (string) β€” the bookmark URI.
  • $name (string) β€” the application name.

Gets the registration information of $name for the bookmark for $uri. See Glib::BookmarkFile::set_app_info() for more information about the returned data.

May croak with a Glib::Error in $@ on failure. 😭

πŸŽ€ $bookmark_file->set_app_info ($uri, $name, $exec, $count, $stamp) πŸŽ€

  • $uri (string) β€” the bookmark URI.
  • $name (string) β€” the application name.
  • $exec (string) β€” the launch command.
  • $count (integer) β€” the registration count.
  • $stamp (unix timestamp) β€” the last registration time.

Sets the meta-data of application $name inside the list of applications that have registered a bookmark for $uri inside $bookmark_file.

You should rarely use this method; use Glib::BookmarkFile::add_application() and Glib::BookmarkFile::remove_application() instead.

$name can be any UTF-8 encoded string used to identify an application. $exec can have one of these two modifiers: "%f", which will be expanded as the local file name retrieved from the bookmark's URI; "%u", which will be expanded as the bookmark's URI. The expansion is done automatically when retrieving the stored command line using the Glib::BookmarkFile::get_app_info() method. $count is the number of times the application has registered the bookmark; if it is < 0, the current registration count will be increased by one, if it is 0, the application with $name will be removed from the list of registered applications. $stamp is the Unix time of the last registration, as returned by time(); if it is -1, the current time will be used.

If you try to remove an application by setting its registration count to zero, and no bookmark for $uri is found, %FALSE is returned and an exception is fired. πŸ’€

May croak with a Glib::Error in $@ on failure. 😭

πŸŽ€ list = $bookmark_file->get_applications ($uri) πŸŽ€

  • $uri (string) β€” the bookmark URI.

Retrieves the names of the applications that have registered the bookmark for $uri.

May croak with a Glib::Error in $@ on failure. 😭

πŸŽ€ $bookmark_file->get_description ($uri) πŸŽ€

  • $uri (string) β€” the bookmark URI.

Gets the description of the bookmark for $uri.

May croak with a Glib::Error in $@ on failure. 😭

πŸŽ€ $bookmark_file->set_description ($uri, $description) πŸŽ€

  • $uri (string) β€” the bookmark URI.
  • $description (string) β€” the description text.

Sets the description of the bookmark for $uri. If no bookmark for $uri is found one is created. 🌸

πŸŽ€ list = $bookmark_file->get_groups ($uri) πŸŽ€

  • $uri (string) β€” the bookmark URI.

Retrieves the list of group names of the bookmark for $uri.

May croak with a Glib::Error in $@ on failure. 😭

πŸŽ€ $bookmark_file->set_groups ($uri, ...) πŸŽ€

  • $uri (string) β€” the bookmark URI.
  • ... (list) β€” one or more group names.

Sets a list of group names for the item with URI $uri. Each previously set group name list is removed. If no bookmark for $uri is found one is created. πŸŽ€

πŸŽ€ boolean = $bookmark_file->has_application ($uri, $name) πŸŽ€

  • $uri (string) β€” the bookmark URI.
  • $name (string) β€” the application name.

Checks whether the bookmark for $uri inside $bookmark_file has been registered by application $name.

May croak with a Glib::Error in $@ on failure. 😭

πŸŽ€ boolean = $bookmark_file->has_group ($uri, $group) πŸŽ€

  • $uri (string) β€” the bookmark URI.
  • $group (string) β€” the group name.

Checks whether $group appears in the list of groups to which the bookmark for $uri belongs to.

May croak with a Glib::Error in $@ on failure. 😭

πŸŽ€ boolean = $bookmark_file->has_item ($uri) πŸŽ€

  • $uri (string) β€” the bookmark URI.

Looks whether the bookmark file has a bookmark for $uri. πŸ‘€

πŸŽ€ ($href, $mime_type) = $bookmark_file->get_icon ($uri) πŸŽ€

  • $uri (string) β€” the bookmark URI.

Gets the icon of the bookmark for $uri.

May croak with a Glib::Error in $@ on failure. 😭

πŸŽ€ $bookmark_file->set_icon ($uri, $href, $mime_type) πŸŽ€

  • $uri (string) β€” the bookmark URI.
  • $href (string or undef) β€” the icon href, or undef.
  • $mime_type (string or undef) β€” the icon MIME type, or undef.

Sets the icon for the bookmark for $uri. If $href is undef, unsets the currently set icon. πŸ–ΌοΈ

πŸŽ€ boolean = $bookmark_file->get_is_private ($uri) πŸŽ€

  • $uri (string) β€” the bookmark URI.
May croak with a Glib::Error in $@ on failure. 😭

πŸŽ€ $bookmark_file->set_is_private ($uri, $is_private) πŸŽ€

  • $uri (string) β€” the bookmark URI.
  • $is_private (boolean) β€” private or not.

No extra prose β€” just sets the private flag. πŸ™ˆ

πŸŽ€ $bookmark_file->load_from_data ($buf) πŸŽ€

  • $buf (scalar) β€” the bookmark file data.

Parses a string containing a bookmark file structure.

May croak with a Glib::Error in $@ on failure. 😭

πŸŽ€ ($full_path) = $bookmark_file->load_from_data_dirs ($file) πŸŽ€

  • $file (localized file name) β€” the file to find.

Parses a bookmark file, searching for it inside the data directories. If a file is found, it returns the full path.

May croak with a Glib::Error in $@ on failure. 😭

πŸŽ€ $bookmark_file->load_from_file ($file) πŸŽ€

  • $file (localized file name) β€” the file to parse.

Parses a bookmark file.

May croak with a Glib::Error in $@ on failure. 😭

πŸŽ€ string = $bookmark_file->get_mime_type ($uri) πŸŽ€

  • $uri (string) β€” the bookmark URI.

Gets the MIME type of the bookmark for $uri.

May croak with a Glib::Error in $@ on failure. 😭

πŸŽ€ $bookmark_file->set_mime_type ($uri, $mime_type) πŸŽ€

  • $uri (string) β€” the bookmark URI.
  • $mime_type (string) β€” the MIME type.

Sets the MIME type of the bookmark for $uri. If no bookmark for $uri is found one is created. 🧚

πŸŽ€ unix timestamp = $bookmark_file->get_modified ($uri) πŸŽ€

  • $uri (string) β€” the bookmark URI.

No extra prose β€” it gives you the modified timestamp. ⏳

πŸŽ€ $bookmark_file->set_modified ($uri, $value) πŸŽ€

  • $uri (string) β€” the bookmark URI.
  • $value (unix timestamp) β€” the time to set.

Sets the time the bookmark for $uri was last modified. If no bookmark for $uri is found one is created. ✨

πŸŽ€ $bookmark_file->move_item ($old_uri, $new_uri) πŸŽ€

  • $old_uri (string) β€” the current URI.
  • $new_uri (string or undef) β€” the new URI, or undef.

Changes the URI of a bookmark item from $old_uri to $new_uri. Any existing bookmark for $new_uri will be overwritten. If $new_uri is undef, then the bookmark is removed. πŸ’…

May croak with a Glib::Error in $@ on failure. 😭

πŸŽ€ $bookmark_file->remove_application ($uri, $name) πŸŽ€

  • $uri (string) β€” the bookmark URI.
  • $name (string) β€” the application name.

Removes application registered with $name from the list of applications that have registered a bookmark for $uri inside $bookmark_file.

May croak with a Glib::Error in $@ on failure. 😭

πŸŽ€ $bookmark_file->remove_group ($uri, $group) πŸŽ€

  • $uri (string) β€” the bookmark URI.
  • $group (string) β€” the group name.

Removes $group from the list of groups to which the bookmark for $uri belongs to.

May croak with a Glib::Error in $@ on failure. 😭

πŸŽ€ $bookmark_file->remove_item ($uri) πŸŽ€

  • $uri (string) β€” the bookmark URI.

Removes the bookmark for $uri from the bookmark file.

May croak with a Glib::Error in $@ on failure. 😭

πŸŽ€ integer = $bookmark_file->get_size πŸŽ€

Gets the number of bookmarks inside the bookmark file. No args, just count vibes. πŸ”’

πŸŽ€ $bookmark_file->get_title ($uri, $title) πŸŽ€

  • $uri (string) β€” the bookmark URI.

Gets the title of the bookmark for $uri.

May croak with a Glib::Error in $@ on failure. 😭

πŸŽ€ $bookmark_file->set_title ($uri, $title) πŸŽ€

  • $uri (string) β€” the bookmark URI.
  • $title (string) β€” the title text.

Sets the title of the bookmark for $uri. If no bookmark for $uri is found one is created. πŸ‘‘

πŸŽ€ string = $bookmark_file->to_data πŸŽ€

Returns the bookmark file as a string.

May croak with a Glib::Error in $@ on failure. 😭

πŸŽ€ $bookmark_file->to_file ($file) πŸŽ€

  • $file (localized file name) β€” where to save it.

Saves the contents of a bookmark file into a file. The write operation is guaranteed to be atomic by writing the contents of the bookmark file to a temporary file and then moving the file to the target file.

May croak with a Glib::Error in $@ on failure. 😭

πŸŽ€ list = $bookmark_file->get_uris πŸŽ€

Returns the URI of all the bookmarks in the bookmark file. All the URIs, all the vibes. 🌈

πŸŽ€ unix timestamp = $bookmark_file->get_visited ($uri) πŸŽ€

  • $uri (string) β€” the bookmark URI.

No extra prose β€” it gives you the visited timestamp. ⏱️

πŸŽ€ $bookmark_file->set_visited ($uri, $value) πŸŽ€

  • $uri (string) β€” the bookmark URI.
  • $value (unix timestamp) β€” the time to set.

Sets the time the bookmark for $uri was last visited. If no bookmark for $uri is found one is created. πŸ’œ


πŸ‘€ SEE ALSO πŸ‘€

Glib β€” that's the whole SEE ALSO, bestie. Go read it. 🫢

Copyright (C) 2003-2011 by the gtk2-perl team.

This software is licensed under the LGPL. See Glib for a full notice.


And that's the whole vibe check, bestie. This page is from perl v5.42.0, dated 2023-09-05 β€” kiss it goodbye, mwah. πŸ«ΆπŸ’–

πŸ“¦ where this page comes from