{"id":17502664,"url":"https://github.com/bohdanbobrowski/digikam_screensaver","last_synced_at":"2026-05-09T01:10:31.194Z","repository":{"id":257907327,"uuid":"870331305","full_name":"bohdanbobrowski/digikam_screensaver","owner":"bohdanbobrowski","description":"Windows screensaver, from pictures loaded out from Digikam database in Python","archived":false,"fork":false,"pushed_at":"2025-02-28T08:04:08.000Z","size":1695,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-28T14:42:58.491Z","etag":null,"topics":["digikam","python","screensaver","sqlite","sqlite3","tkinter","tkinter-gui","win32api","windows"],"latest_commit_sha":null,"homepage":"","language":"Python","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/bohdanbobrowski.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-09T21:02:15.000Z","updated_at":"2025-02-28T08:04:11.000Z","dependencies_parsed_at":"2025-02-28T08:41:00.920Z","dependency_job_id":"ca9e1de7-5332-4ea3-924f-2682b66f3ba7","html_url":"https://github.com/bohdanbobrowski/digikam_screensaver","commit_stats":{"total_commits":47,"total_committers":1,"mean_commits":47.0,"dds":0.0,"last_synced_commit":"fcc3a71f3038b4a2f49106e7371f11d21adf225b"},"previous_names":["bohdanbobrowski/digikam_screensaver"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bohdanbobrowski%2Fdigikam_screensaver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bohdanbobrowski%2Fdigikam_screensaver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bohdanbobrowski%2Fdigikam_screensaver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bohdanbobrowski%2Fdigikam_screensaver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bohdanbobrowski","download_url":"https://codeload.github.com/bohdanbobrowski/digikam_screensaver/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246093104,"owners_count":20722395,"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":["digikam","python","screensaver","sqlite","sqlite3","tkinter","tkinter-gui","win32api","windows"],"created_at":"2024-10-19T21:15:45.368Z","updated_at":"2026-05-09T01:10:31.188Z","avatar_url":"https://github.com/bohdanbobrowski.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DigiKam Screensaver\n\n[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/bohdanbobrowski/digikam_screensaver/graphs/commit-activity) [![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)](https://lbesson.mit-license.org/) ![GitHub all releases](https://img.shields.io/github/downloads/bohdanbobrowski/digikam_screensaver/total) ![GitHub release (with filter)](https://img.shields.io/github/v/release/bohdanbobrowski/digikam_screensaver) ![GitHub Release Date - Published_At](https://img.shields.io/github/release-date/bohdanbobrowski/digikam_screensaver)\n\nWindows screensaver, from pictures loaded out from DigiKam database in Python.\n\nAs for now - this is just for Windows.\n\n## Instructions\n\n\u003cp style=\"text-align: center\"\u003e\n\u003cimg src=\"assets/default_slide_1.gif\" width=\"80%\" /\u003e\n\u003cimg src=\"assets/default_slide_2.gif\" width=\"80%\" /\u003e\n\u003c/p\u003e\n\n## Features\n\n- Takes random photos from digikam4.db SQLite database (`*.jpg`, `*.gif` and `*.png`) with a minimum rating according settings (by default it's one star).\n- Some configuration is needed.\n- Database is opened in read-only mode!\n- Pressing `\u003cF-12\u003e` will (obviously) turn off screen saver, but I've added a function that will open current picture in associated app.\n- Pressing `\u003cF-1\u003e` will open project GitHub page.  \n\n## Known issues\n\n- screensaver work just **for one monitor**\n- **preview does not work**: _none of python screensaver examples has this feature_, and to make it working I need to\ndisplay screensaver in given window handler number (Windows passes it via cmdline, I'm parsing that but Tkinter AFAIK\ncan't display or create window inside other window): see how it's done\n[here, in C](https://github.com/henrypp/matrix/blob/master/src/main.c).\n- because of these two problems above, I'm considering change Tkinter to other library \n([Arcade](https://api.arcade.academy/en/latest/index.html)? [Pygame](https://www.pygame.org/news)?) and keep Tkinter\njust for configuration window \n- the choice of Python for this kind of program (it's more for a demonstration - hold my beer, I'll show you something\ncool) is not very optimal, mainly because of the size and the way the binary generated by PyInstaller works,\nit's also like a **red rag to a bull for antiviruses**... but anyone who knows anything about PyInstaller will understand\n\n## Dev environment\n\nThis will work on Windows cmd:\n\n    git clone git@github.com:bohdanbobrowski/digikam_screensaver.git\n    cd digikam_screensaver\n    python -m venv venv\n    venv\\Scripts\\activate\n    pip install -e '.[dev]'\n\nRun configuration windows first:\n\n    python digikam_screensaver/screen_saver.py /c\n\nIt should look like this:\n\n\u003cimg src=\"assets/digikam_screensaver_configuration_window.png\" width=\"50%\" /\u003e\n\nThen, to test how does it work just type:\n\n    python digikam_screensaver/screen_saver.py /s\n\nPreview mode can be reached by typing:\n\n    python digikam_screensaver/screen_saver.py /c\n\n### Building own *.scr\n\nIf all required stuff is installed in system, this command should make the job:\n\n    python digikam_digikam_screensaver_build.py\n\nYou'll find exe in `.\\dist` folder - just rename it to scr and install.\n\n## Known bugs\n\nOn Windows 10, it is not possible to launch the associated graphical program (F12) - it looks like the screensaver is launched in some wrapper, which in turn blocks the launched graphical browser. But only with pyinstaller build! That's weird.\n\n## Documentation and inspiration\n\n### Python:\n\n1. https://github.com/SirGnip/arcade_screensaver_framework\n2. https://github.com/gaming32/Windows-Screensaver\n\nThis might be interesting, according attaching window to given win32 handler:\n\n3. https://github.com/quasar098/dvd-screensaver/blob/master/main.py\n\n### C:\n\n4. https://github.com/henrypp/matrix\n\n### Win32 Screensaver API documentation:\n\n5. https://learn.microsoft.com/en-us/windows/win32/lwef/screen-saver-library\n6. https://learn.microsoft.com/en-us/previous-versions/troubleshoot/windows/win32/screen-saver-command-line\n\n### Other:\n\n8. Interesting discussion about screensaver settings window (which didn't changed since 20 years):\nhttps://www.reddit.com/r/Windows11/comments/q0b427/the_screensaver_settings_have_looked_like_this/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbohdanbobrowski%2Fdigikam_screensaver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbohdanbobrowski%2Fdigikam_screensaver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbohdanbobrowski%2Fdigikam_screensaver/lists"}