{"id":20756493,"url":"https://github.com/basiliscos/perl-watcher","last_synced_at":"2025-07-01T09:07:16.625Z","repository":{"id":8555323,"uuid":"10179616","full_name":"basiliscos/perl-watcher","owner":"basiliscos","description":"Nagios-inspired system tray events desktop watcher / notifier","archived":false,"fork":false,"pushed_at":"2014-01-07T18:05:57.000Z","size":1654,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-11T15:53:34.766Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Perl","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/basiliscos.png","metadata":{"files":{"readme":"README.md","changelog":"Changes","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":"2013-05-20T18:58:33.000Z","updated_at":"2016-04-11T22:28:36.000Z","dependencies_parsed_at":"2022-09-05T10:41:26.457Z","dependency_job_id":null,"html_url":"https://github.com/basiliscos/perl-watcher","commit_stats":null,"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/basiliscos/perl-watcher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basiliscos%2Fperl-watcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basiliscos%2Fperl-watcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basiliscos%2Fperl-watcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basiliscos%2Fperl-watcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/basiliscos","download_url":"https://codeload.github.com/basiliscos/perl-watcher/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/basiliscos%2Fperl-watcher/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262933321,"owners_count":23386784,"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":[],"created_at":"2024-11-17T09:32:46.352Z","updated_at":"2025-07-01T09:07:16.521Z","avatar_url":"https://github.com/basiliscos.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PerlWatcher\n\n![Build status](https://api.travis-ci.org/basiliscos/perl-watcher.png \"Build status\")\n\n## Description\n\nNagios-inspired system tray events desktop watcher / notifier. The main\ndifference, that it is desktop application.\n\nThere is too many programs (system update, news, weather etc), which notify\nyou about it via it's own style.\n\nDo you need to track and aggregate events from the different sources?\nPerlWatcher can do simplified infrastructure monitoring (pinging them),\ntrack stock quotes, weather, new software updates, poll the remote VCS\nfor RSS updates, be notified by local news or by some changes on your\n/var/log/messages? Do you want to have possibility to easily write your own\nevent-watcher in the case you local media-content provider does not have any\nAPI no notify you about new films and you fill yourself hackish enough to do\nsome reverse engineering for writing your watcher?\n\nIf yes, than PerlWatcher is designed for that purpose.\n\nPerlWatcher supports also an different levels of notification: \"notice\",\n\"info\" .. \"alert\". They indicate how important the event is for you: if you are\ndoing an boring task it's natural to switch attention to anything else for\ncouple of seconds; but if the task is serious you can rise the notification\nlevel to 'alert' to be disturbed only by blackout on remote servers :)\n\nIt looks like (Gtk2 UI):\n\n![PerlWatcher GTK2 screenshot](https://raw.github.com/basiliscos/images/master/PerlWatcher-0.16.png \"PerlWatcher GTK2 screenshot\")\n\n\n## PerlWatcher and RSS-Aggregator\n\nPerlWatcher isn't designed to be fully functional RSS-Aggregator, because:\n* RSS-feeds news often aren't complete as web version, because web-masters\nneed you to go to the site and see the banners. It isn't very pleasant to\nread only the half part of the news, and then go to the site to see the\nfull version.\n* PerlWatcher is designed to be lightweight: displaying simple text (headers)\nis enough for that, while showing the HTML with images isn't so.\n\n## Installation\n\nInstall perl and cpan-minus https://metacpan.org/module/App::cpanminus#INSTALLATION .\nThe most easy way to do that is just do\n```\ncurl -L http://cpanmin.us | perl - --sudo App::cpanminus\n```\n\nNow it is time to intall PerlWatcher itself\n\n```\ncpanm App::PerlWatcher::Engine\ncpanm App::PerlWatcher::UI::Gtk2\ncpanm App::PerlWatcher::Watcher::FileTail\n```\n\n### Running (GTK2-frontend)\n```\nperl-watcher-gtk\n```\n\nEdit ~/.perl-watcher/engine.conf and add/modify watchers like:\n\n```\n        {\n            class =\u003e 'App::PerlWatcher::Watcher::Ping',\n            config =\u003e {\n                host    =\u003e  'google.com',\n                port    =\u003e  80,\n                frequency   =\u003e  10,\n                on =\u003e { fail =\u003e { 5 =\u003e 'alert' } },\n            },\n        },\n\n        {\n            class =\u003e 'App::PerlWatcher::Watcher::Rss',\n            config =\u003e {\n                url         =\u003e  'http://www.opennet.ru/opennews/opennews_all.rss',\n                title       =\u003e  'opennet',\n                frequency   =\u003e 60,\n                timeout     =\u003e 10,\n                items       =\u003e  5,\n                on          =\u003e {\n                        ok      =\u003e { 1  =\u003e 'notice' },\n                        fail    =\u003e { 10 =\u003e 'info/max' },\n                },\n            },\n        },\n\n```\nExplanation: here the PerlWatcher will \n* montitor google.com by pinging it's port 80 every 10 seconds, and after 5 \nunsuccessfull pings it will set status 'alert'; \n* fetch top 5 news from opennet.ru every minute, and in case of 10 failures it\nwill set 'info' status to the watcher.\n\n## Development\n\nAny help, critique, suggestions, requests, advises... are welcome. Especially,\nI have troubles with Gtk2 UI.\n\nCurrent road map can be found here https://github.com/basiliscos/perl-watcher/blob/master/TODO\n\n## Design\n\nPerlWatcher is written in Modern Perl using AnyEvent and Moo.\n\nPerlWatcher is composed of Engine (including basic watchers) and UI. Watchers are\ncompletly decoupled from UI, so it should be possible to use any possible Watcher\nwith any UI. Currently UI frontend use GTK2+, but it should be easy to use the others, \nlike: KDE, console or even aggregate it as tmux-extension.\n\n\n## COPYRIGHT AND LICENSE\n\n    This software is copyright (c) 2013 by Ivan Baidakou.\n\n    This is free software; you can redistribute it and/or modify it under\n    the same terms as the Perl 5 programming language system itself.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbasiliscos%2Fperl-watcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbasiliscos%2Fperl-watcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbasiliscos%2Fperl-watcher/lists"}