{"id":14984333,"url":"https://github.com/ahmadassaf/booklight","last_synced_at":"2025-04-10T20:08:43.773Z","repository":{"id":27974179,"uuid":"31467480","full_name":"ahmadassaf/booklight","owner":"ahmadassaf","description":"Your Chrome Alfred - An Extension to provide spotlight-like interface for your bookmarks","archived":false,"fork":false,"pushed_at":"2018-06-20T14:11:11.000Z","size":305,"stargazers_count":106,"open_issues_count":19,"forks_count":6,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-03-24T17:52:44.691Z","etag":null,"topics":["bookmark","bookmark-manager","bookmark-search","chrome","chrome-extension","extension","google-chrome","productivity"],"latest_commit_sha":null,"homepage":"https://chrome.google.com/webstore/detail/booklight/lkdhojpobehkcldjmileiancjjpdeakk","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ahmadassaf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-02-28T16:02:17.000Z","updated_at":"2025-01-22T06:59:52.000Z","dependencies_parsed_at":"2022-08-26T13:23:15.844Z","dependency_job_id":null,"html_url":"https://github.com/ahmadassaf/booklight","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahmadassaf%2Fbooklight","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahmadassaf%2Fbooklight/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahmadassaf%2Fbooklight/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ahmadassaf%2Fbooklight/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ahmadassaf","download_url":"https://codeload.github.com/ahmadassaf/booklight/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248288350,"owners_count":21078903,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bookmark","bookmark-manager","bookmark-search","chrome","chrome-extension","extension","google-chrome","productivity"],"created_at":"2024-09-24T14:08:53.064Z","updated_at":"2025-04-10T20:08:43.741Z","avatar_url":"https://github.com/ahmadassaf.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Booklight\n==========\n\nI got fed up wasting my time trying to navigate my way through bunch of bookmarks folder to arrange them. So if you are:\n- Obsessed with organization\n- Have a couple hundreds (or thousands) of folders in your bookmarks\n- You like to keep things tidy and every page has to be in its \"perfect\" place\n\nthen you came to the right place. **Booklight** is a clean Chrome Extension to ease the way of adding a bookmark.\n\n- To launch press (ctrl/Control + b)\n- To enable bookmarks search mode hit `space` after booklight is launched\n\n[Download from Chrome Store](https://chrome.google.com/webstore/detail/booklight/lkdhojpobehkcldjmileiancjjpdeakk) |\n[Watch YouTube Video](https://www.youtube.com/watch?v=fxqaToLRLNo)\n\n### Features\n\n- Filter bookmarks based on manual entry\n- Show the path of the current selected folder\n- Navigate easily through the folders tree using keyboard\n    - if the folder is highlighted in blue this means that it contains sub-folders as well. The right arrow (-\u003e) keyboard key will go inside that folder. You can go back one step to the back using the left keyboard arrow (\u003c-)\n- Bookmark directly when you find your target\n- The ability to switch to urls search **NEW**\n- Launching urls in current or new tab **NEW**\n- Fuzzy search enabled for filtering on both folders and urls **NEW**\n- Clean current URL before bookmarking (sometimes the url is polluted with query strings e.g `?source= ...` for various tracking information). To clean the url from those, hit `ctrl+alt+x` and this will solve this issue.\n\n![booklight](https://s22.postimg.cc/h7ex2dhdt/booklight_main.gif)\n\n## Bookmark Search \u0026 launch\n\nBooklight now has the ability to search on your bookmakrs **and it is blazing fast**. I have around 20,000 bookmarks ! and through smart lazy loading and fuzzy search, you can now easily search and launch bookmarks anywhere while browsing.\nTo switch to the url search mode just hit `space` and then you will see that you can now search urls by having the `|` symbol in the input box.\nTo launch a url in the current window, simply hit `enter` and to open it in a new tab hit `ctr\\control + enter`\n\n![booklight-urls](https://s22.postimg.cc/8do0kw4ld/booklight.gif)\n\n### Booklight Performance\nI currently have over 1000 folders and 20,000 bookmarked urls. Booklight is blazing fast, to achieve this i implement various hacks to minimize DOM manipulations and most importantly lazy-loading of urls. The lazy loading happens in the following function:\n\n```javascript\nlazyloader: function lazyloader(elements){\n\n\tvar lazyloader = this;\n\n\tthis.elements  = elements;\n\tthis.showLimit = 15;\n\tthis.urlsDOM   = '';\n\n\tthis.load = function(empty, hide) {\n\n\t\tvar urlsDOM             = '';\n\t\tvar currentAttachedUrls = this.urlsDOM == '' ? 0 : $('.booklight_list li[data-type=\"url\"]').length;\n\t\tvar limit               = this.elements.length \u003e this.showLimit ? this.showLimit : this.elements.length;\n\t\tvar urlsToAdd           = this.elements.slice(currentAttachedUrls, currentAttachedUrls + limit);\n\n\t\t// the idea is build a kind of lazy loading for urls to minimize the building of the DOM elements\n\t\turlsToAdd.forEach(function(url){\n\t\t\turlsDOM += '\u003cli id=\"' + url.id + '\" data-url=\"' + url.url + '\" data-parent=\"' + url.parentId + '\" data-type=\"url\"\u003e' +\n\t\t\t'\u003cimg src=\"http://www.google.com/s2/favicons?domain_url=' + url.url + '\"\u003c/img\u003e' +\n\t\t\turl.title + '\u003c/li\u003e';\n\t\t});\n\n\t\tlazyloader.urlsDOM += urlsDOM;\n\n\t\tbooklight.UI.showSection(urlsDOM, empty, hide);\n\t\tbooklight.UI.updateCounter();\n\t}\n}\n```\nYou can tweak the number of elements you want to show on every iteration and it works for both searching and filtering.\n\n### Things i would like to do\n\n- Add mouse interactions\n- Add better logic to the star icon (at the moment it only shows when the page is successfully bookmarked) but it will not update if remove the bookmark ... etc.\n- ~~Add fuzzy search for filtering from input box~~\n- Smart folder suggestions\n- ~~Remember last location when going back to main screen or removing filters~~ **done**\n\n\n[Download from Chrome Store](https://chrome.google.com/webstore/detail/booklight/lkdhojpobehkcldjmileiancjjpdeakk)\n\n### Thoughts\n\n - [Google Chrome’s awful new bookmark manager (and how to switch it off)](http://blog.garethjmsaunders.co.uk/2015/04/19/google-chromes-awful-new-bookmark-manager-and-how-to-switch-it-off/)\n - [Chrome users roast Google on spit of hate over revamped bookmarks manager](http://www.computerworld.com/article/2913426/web-browsers/chrome-users-roast-google-on-spit-of-hate-over-revamped-bookmarks-manager.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahmadassaf%2Fbooklight","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fahmadassaf%2Fbooklight","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fahmadassaf%2Fbooklight/lists"}