skip to navigation
skip to content

pbm 0.6.4

pbm works with Chromium bookmarks JSON.

pbm works with Chrome and Chromium bookmarks JSON.


  • List Chrome and Chromium Bookmarks JSON files (-l / -L)
  • Print all bookmarks (--print-all)
  • Reorganize all bookmarks into the Bookmarks Bar (--organize)

Bookmarks Bar Folders

Name Description
yearly date-based folders: YYYY > YYYY-MM > YYYY-MM-DD
bookmarklets bookmarklets (additions will be merged with a default set)
chrome select chrome:// URLs
quicklinks custom quicklinks (optional; copied as-is)
starred bookmarks ending in one or more # are copied here searchably prefixed with [XO], [XOOOO]
queue default folder for new bookmarks


Install from PyPI with pip:

pip install pbm


pip install -e git+ssh://


List available Bookmarks files in Chrome and Chromium User Data directories:

pbm -l  # or -L to also list Bookmarks.%FT%T%z.bkp backups

Reorganize all bookmarks into Bookmarks Bar folders:

bmarks=$(pbm -l | grep "Profile 1" | head -n1)
pbm --organize "${bmarks}"

Serve and search bookmarks with the Tornado webapp:

pbmweb -H localhost -P 8080 -f "${bmarks}"

Then access the searchable bookmarks jstree at http://localhost:28881/bookmarks/chrome


release/0.6.4 (2016-04-28 21:00:48 -0500)

git log --reverse --pretty=format:'* %s [%h]' v0.6.3..release/0.6.4
  • MRG: Merge tag ‘v0.6.3’ into develop [c1c2ef6]
  • BLD,BUG: pbm/static/brw: upgrade [7ff47be]
  • RLS:, __init__: v0.6.4 [5405e90]

v0.6.3 (2016-04-28 18:37:59 -0500)

git log --reverse --pretty=format:'* %s [%h]' v0.6.2..v0.6.3
  • MRG: Merge tag ‘v0.6.2’ into develop [449ad8b]
  • BUG,DOC: HISTORY.rst: escape * [6e9f74d]
  • BUG,DOC: HISTORY.rst: escape * [158ad09]
  • BLD: recursive-include * LICENSE* [251cb7e]
  • BLD: recursive-include pbm/templates *.jinja [bd9a93a]
  • RLS:, __init__: v0.6.3 [d477d74]
  • BLD,BUG: Makefile: build, dist [d7b62a4]
  • DOC: HISTORY.rst: -r release/0.6.3 –hdr=- | pbcopy [bd174ab]
  • MRG: Merge branch ‘release/0.6.3’ [d66f624]

v0.6.2 (2016-04-28 18:18:06 -0500)

git log --reverse --pretty=format:'* %s [%h]' v0.6.1..v0.6.2
  • MRG: Merge tag ‘v0.6.1’ into develop [f69ab60]
  • BUG,BLD: install_requires jinja_tornado [189210d]
  • BLD: src/jinja_tornado: upgrade [850198b]
  • RLS:, __init__: v0.6.2 [5298786]
  • DOC: HISTORY.rst: -r release/0.6.2 –hdr=- | pbcopy [b3e6597]
  • MRG: Merge branch ‘release/0.6.2’ [376e14f]

v0.6.1 (2016-04-28 16:28:14 -0500)

git log --reverse --pretty=format:'* %s [%h]' v0.6.0..v0.6.1
  • MRG: Merge tag ‘v0.6.0’ into develop [c74bd7f]
  • BUG,DOC: HISTORY.rst: escape * [d14de7c]
  • BLD: recursive-include pbm/static *.html *.js [bd07338]
  • BLD: Makefile: release w/ twine because HTTPS [56a72d3]
  • RLS:, __init__: v0.6.1 [511ee6a]
  • DOC: HISTORY.rst: ‘ -r release/0.6.1 –hdr=- | pbcopy’ [d884851]
  • MRG: Merge branch ‘release/0.6.1’ [d5ddf17]

v0.6.0 (2016-04-28 16:11:26 -0500)

git log --reverse --pretty=format:'* %s [%h]' v0.5.3..v0.6.0
  • Merge tag ‘v0.5.3’ into develop [d330a7e]
  • ENH: add HTTP_ACCESS_CONTROL_ALLOW_ORIGIN (optional CORS) [a17eb19]
  • CLN: rm filenames ending with ‘ ‘ from sed -i’ ‘ [17459bd]
  • BLD:, requirements.txt: add tornado as a dependency (for pbmweb) [b670e1c]
  • UBY: -y/–yes/–skip-prompt [91ff556]
  • BUG: pbm/ ./Bookmarks -> Bookmarks (toward compat) [47838d0]
  • BLD:, requirements-test.txt: test deps: urlobject, rdflib [fb41197]
  • DOC: package description [6c934cc]
  • TST,CLN: remove old /bookmarks/chrome/dict route [482f141]
  • REF: cls.template_path [e77b2b2]
  • BLD: pbm/static/brw: git submodule [1aa753f]
  • ENH: templates/main.jinja: link to //static/brw/index.html [4aa0804]
  • TST,UBY: pbm/ logging.basicConfig(format=) [d50b31d]
  • BLD: Makefile: UNAME_S:=$(shell uname -s) [2a70f57]
  • CLN: .gitignore: add vim .swp, .swo [c177f25]
  • ENH: views, /logout, navlinks, /about, –open [ba9f16b]
  • BLD: pbm/static/brw: :fast_forward: to 3cb3d6f [4698efe]
  • DOC: HISTORY.rst: 0.6.0 [467eef1]
  • RLS:, v0.6.0 [d8191b5]
  • UBY: index.html: css [c44144f]
  • MRG: Merge branch ‘develop’ of into develop [df28218]
  • BLD: src/jinja_tornado: upgrade [656c89d]
  • BLD: pbm/static/brw: upgrade [a782e17]
  • RLS:, __init__: v0.6.0 [dfa0da9]
  • MRG: Merge branch ‘release/0.6.0’ of ssh:// into release/0.6.0 [60875ae]
  • DOC: HISTORY.rst: ‘ -r release/0.6.0 –hdr=- | pbcopy’ [5345b84]
  • MRG: Merge branch ‘release/0.6.0’ [73af3ea]

v0.5.3 (2015-04-23 21:12:41 -0500)

git log --reverse --pretty=format:'* %s [%h]' v0.5.2..v0.5.3
  • Merge tag ‘v0.5.2’ into develop [c7d528f]
  • BUG: main argv handling, logging [21a669e]
  • DOC: v0.5.3 docs, version [cf2e2ee]
  • Merge branch ‘release/0.5.3’ [ff5b2bd]

v0.5.2 (2015-04-23 20:53:01 -0500)

git log --reverse --pretty=format:'* %s [%h]' v0.5.1..v0.5.2
  • Merge tag ‘v0.5.1’ into develop [b2f5992]
  • DOC:,, HISTORY.rst: v0.5.2 [0cb8e87]
  • Merge branch ‘release/0.5.2’ [cfeed42]

v0.5.1 (2015-04-23 20:47:26 -0500)

git log --reverse --pretty=format:'* %s [%h]' v0.5.0..v0.5.1
  • Merge tag ‘v0.5.0’ into develop [0ecf417]
  • DOC: HISTORY.rst: v0.5.0, [a1111d4]
  • DOC: README.rst [b6ac7ee]
  • BUG,TST,REF: generate longdates, regular imports, test that queue[‘id’] is the max [fb1ab15]
  • DOC: HISTORY.rst: v0.5.1 [ad04316]
  • RLS: version v0.5.1 [a84d4e2]
  • Merge branch ‘release/0.5.1’ [4cda097]

v0.5.0 (2015-04-23 15:05:47 -0500)

git log --reverse --pretty=format:'* %s [%h]' v0.4.1..v0.5.0
  • ENH: Add –print-all output formatter [016a601]
  • BUG,ENH: encoding errors w/ getwriter, print_json_link_list [f26b867]
  • ENH,TST: print_html_tree, tornado app, recursive RDFa template (todo: simplify) [102c5c8]
  • ENH: /bookmarks (jstree, /bookmarks/dict), /bookmarks/list [4bea937]
  • BUG: make work with middle-click [4e7673d]
  • ENH,REF,CLN: JSON handlers, ##searchterm! onhashchanged, css, [markdown](url://formatting) [578c0ff]
  • BUG,REF: onhashchange sync (‘bindings’), css [8145dc6]
  • TST: tests/ tornado.testing.AsyncHTTPTestCase [ba24573]
  • REF: /bookmarks -> /bookmarks/chrome [ac47841]
  • TST,REF: main function signature, explicit stdout, q [19f50a8]
  • BUG: main() argv must default to sys.argv[1:] for console_script [3ee4438]
  • TST: tests/data: current output [0b2384f]
  • REF: utils.get_template, imports [3cfbaca]
  • REF: -> pbm [c1e292e]
  • REF: -> pbm [9d57407]
  • REF: -> pbm [6481879]
  • REF: -> pbm [abae5ed]
  • RLS:, v0.5.0 [ab5e5e3]
  • Merge branch ‘release/0.5.0’ [c6096e8]

v0.4.1 (2015-03-02 04:24:00 -0600)

git log --reverse --pretty=format:'* %s [%h]' v0.4.0..v0.4.1
  • Merge tag ‘v0.4.0’ into develop [604f9d3]
  • BLD: exclude .ropeproject and .bak [86a9090]
  • RLS: HISTORY.txt: v0.4.1 release notes [a93991d]
  • BLD,CLN:, Makefile: clean [3617d0c]
  • RLS: HISTORY.txt: v0.4.1 release notes [2c0300f]
  • RLS: v0.4.1 [2990c02]
  • Merge branch ‘release/v0.4.1’ [f9a5a67]
  • Merge tag ‘vv0.4.1’ into develop [357d223]

v0.4.0 (2015-03-02 04:11:08 -0600)

git log --reverse --pretty=format:'* %s [%h]' v0.3.0..v0.4.0
  • Merge tag ‘v0.3.0’ into develop [08b5088]
  • BLD: Makefile: make test -> nosetests ./tests/ [c934e99]
  • BUG: promiumbookmarks.plugins.PromiumPlugin: accept a conf={} argument [261a855]
  • TST: test_promiumbookmarks: remove import of promiumbookmarks.plugins.other [91d8132]
  • REF: promiumbookmarks/ factor BookmarksObject back into ChromiumBookmarks [4df13c9]
  • DOC: promiumbookmarks.ChromiumBookmarks.walk_bookmarks: docstring [780da1f]
  • BUG: promiumbookmarks.ChromiumBookmarks.bookmarks_list: bookmarks_list consume the iterable [1d1ab48]
  • CLN: dbf plugin: cleanup and simplify [26e3c07]
  • ENH: add “notetab (800px)” bookmarklet (closes #2) [53582c9]
  • BUG: promiumbookmarks.ChromiumBookmarks.walk_bookmarks: pass filterfunc through [ee41454]
  • TST: tests/data/Bookmarks: set date_added to a nonzero date [c88f78b]
  • BUG: set date_added to a nonzero date [326c4fe]
  • ENH: Add plugins.DedupePlugin to deduplicate bookmarks on (url, date_added) [9369891]
  • TST: Bookmarks [1620af5]
  • TST: tests/data/Bookmarks: add starred, queued [ca7278e]
  • DOC: README.rst: fix title underline [5c8dc9f]
  • REF: promiumbookmarks.plugins plugin API [773ff26]
  • ENH: plugins.starred: O instead of # (searchable) [aa95b9c]
  • ENH: plugins.starred: prefix with X [783411d]
  • BLD: Makefile: check readme syntax [1309ac4]
  • RLS: HISTORY.txt: v0.4.0 release notes [39ef2b2]
  • Merge branch ‘release/0.4.0’ [ca63866]

v0.3.0 (2015-02-08 02:50:29 -0600)

git log --reverse --pretty=format:'* %s [%h]' v0.2.5..v0.3.0
  • Merge tag ‘v0.2.5’ into develop [2a1cfaa]
  • CLN,ENH: refactoring, initial plugin support [aaf96dc]
  • CLN: auto-lint [1b25145]
  • ENH: refactor to plugins, move tests to, add allinone and starred plugins [67dc734]
  • Merge with 0.2.5 [4dca76e]
  • DOC: README.rst, HISTORY.rst: headings [5f0a8a1]
  • RLS: version 0.3.0 [b191c91]
  • Merge branch ‘release/0.3.0’ [fcd8496]

v0.2.5 (2014-12-25 08:18:16 -0600)

git log --reverse --pretty=format:'* %s [%h]' v0.2.4..v0.2.5
  • Merge tag ‘v0.2.4’ into develop [0a7ca31]
  • BUG: Add support for “linux2” platform [eb7621d]
  • RLS:, HISTORY.rst: v0.2.5 [6057e77]
  • Merge branch ‘release/0.2.5’ [59df7fe]

v0.2.4 (2014-12-13 17:58:55 -0600)

git log --reverse --pretty=format:'* %s [%h]' v0.2.3..v0.2.4
  • Merge tag ‘v0.2.3’ into develop [52555ac]
  • DOC: pip install -e git+, Bookmarks Bar Folders RST Table (Riv.vim) [ad01158]
  • RLS: version=0.2.4, keywords [7f1b08d]
  • DOC: README.rst: Bookmarks Bar Folders table (Riv.vim) [fa12164]
  • Merge branch ‘release/0.2.4’ [a582d44]

v0.2.3 (2014-12-13 17:37:45 -0600)

git log --reverse --pretty=format:'* %s [%h]' v0.2.2..v0.2.3

v0.2.2 (2014-12-13 17:33:12 -0600)

git log --reverse --pretty=format:'* %s [%h]' v0.2.1..v0.2.2
  • Merge tag ‘v0.2.1’ into develop [d2390e9]
  • BLD: exclude tests/data/*.bkp [634235a]
  • RLS: version=0.2.2 [85b111e]
  • Merge branch ‘release/0.2.2’ [92b79d9]

v0.2.1 (2014-12-13 17:27:52 -0600)

git log --reverse --pretty=format:'* %s [%h]' v0.2.0..v0.2.1
  • Merge tag ‘v0.2.0’ into develop [b8e1f96]
  • RLS,DOC,CLN: description, classifiers, README.rst, HISTORY.rst, .gitignore [8e2e0c6]
  • Merge branch ‘release/0.2.1’ [dc8465a]

v0.2.0 (2014-12-13 17:10:04 -0600)

git log --reverse --pretty=format:'* %s [%h]' 0677946..v0.2.0
  • CLN: plain refactor into ChromiumBookmarks(object) [9eef12b]
  • ENH: Add ChromiumBookmarks.__init__, __iter__ and ChromiumBookmarks.reorganized [6cc0635]
  • CLN: -> ChromiumBookmarks.reorganize_by_date [648f64e]
  • CLN: update .gitignore [aa4bd44]
  • ENH,DOC: CLI actions and options [8384381]
  • CLN: move to [5e9d0e6]
  • CLN: pep8, lint, rename to [2847bfd]
  • BLD: Update Makefile [745b370]
  • ENH: Add chrome://history and chrome://bookmarks links to bookmarks bar [cf12e50]
  • ENH,DOC: bookmarklets, chrome:// URIs, docstrings, filterfunc param [05c7634]
  • ENH,CLN: Add ‘quicklinks’ Bookmarks Bar folder passthrough [1d49949]
  • ENH,BUG: date-based backups, merge defaults into ‘bookmarklets’, add a default ‘queue’ folder, filterfunc passthrough [577cd1c]
  • PRF: optimize chrome_filterfunc [522a3e6]
  • TST: test filenames, assertRaises(IOError) if ./Bookmarks does not exist [ac68e3e]
  • BLD,CLN: Makefile, -> [21d6dd1]
  • CLN: -> [6ce5194]
  • CLN: .gitignore [87e0962]
  • ENH: -l/-L to list Bookmarks [5090209]
  • TST: Update test Bookmarks [fb0e632]
  • ENH: get_chromedir, get_chromiumdir for (platform, release) [4d423d1]
  • BLD: -> promiumbookmarks/ [6655625]
  • BLD: Add templated cookiecutter-pypackage [5038500]
  • BLD: Makefile: merge with cookiecutter [57ce9dd]
  • DOC: README.rst: Feature descriptions [a65ce02]
  • BLD: promiumbookmarks console_script entrypoint [935aaa5]
  • DOC: README.rst: comment out travis badge for now [e3ea2b4]
  • DOC: README.rst: feature descriptions [91d304f]
  • DOC: README.rst: feature descriptions [886126d]
  • DOC: README.rst: feature descriptions [2c53107]
  • DOC: README.rst: Installation, Usage [5267be5]
  • RLS: version=0.2.0 [a06a2a2]
  • Merge branch ‘release/0.2.0’ [87eece7]
File Type Py Version Uploaded on Size
pbm-0.6.4-py2.py3-none-any.whl (md5) Python Wheel py2.py3 2016-04-29 158KB
pbm-0.6.4.tar.gz (md5) Source 2016-04-29 162KB