{"id":17656469,"url":"https://github.com/mjakeman/hyena","last_synced_at":"2026-01-19T16:31:29.035Z","repository":{"id":42056051,"uuid":"288581053","full_name":"mjakeman/Hyena","owner":"mjakeman","description":"A work-in-progess port of Banshee's Hyena utility library to .NET 5 and GTK 3.","archived":false,"fork":false,"pushed_at":"2022-04-15T03:16:01.000Z","size":2719,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-10-26T10:49:28.539Z","etag":null,"topics":["csharp","gtk","gtk3"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mjakeman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-08-18T22:55:22.000Z","updated_at":"2022-04-15T03:16:02.000Z","dependencies_parsed_at":"2022-08-12T03:31:39.907Z","dependency_job_id":null,"html_url":"https://github.com/mjakeman/Hyena","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mjakeman/Hyena","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mjakeman%2FHyena","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mjakeman%2FHyena/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mjakeman%2FHyena/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mjakeman%2FHyena/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mjakeman","download_url":"https://codeload.github.com/mjakeman/Hyena/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mjakeman%2FHyena/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28574286,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T16:29:19.148Z","status":"ssl_error","status_checked_at":"2026-01-19T16:29:17.772Z","response_time":67,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["csharp","gtk","gtk3"],"created_at":"2024-10-23T14:32:55.568Z","updated_at":"2026-01-19T16:31:29.019Z","avatar_url":"https://github.com/mjakeman.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hyena\n![CI Build](https://github.com/firox263/Hyena/workflows/CI%20Build/badge.svg)\n\nA utility library primarily used by Banshee.\n\nThis is a port of Hyena to .NET Core and Gtk 3 using the gir.core\nbindings. It will hopefully act as a general purpose library to\nease the development of complex GTK applications in C#.\n\nI aim to keep this library up to date with the most recent\ncommits in the gir.core repository. At the moment, it requires\nchanges from https://github.com/gircore/gir.core/pull/299.\n\nPlease note, this port is *very* incomplete and much of it\ndoes not compile. The `Hyena.Tests` directory doesn't actually\nwork, and is just a dumping ground for now. I will look at rewriting\nthe tests for NUnit 3 in the future.\n\nSee `TODO.md` for current status.\n\n## Demo: ExceptionDialog\nThe first example of a widget ported from gtk-sharp (Gtk2) to gir.core (Gtk3). Note that the Gtk2 dialog is running on WSL via VcXsrv, hence the size of the window.\n\n![Small Exception Dialog](exception-dialog-1.png)\n![Big Exception Dialog](exception-dialog-2.png)\n\nThis dialog takes a C# exception and generates a user-facing dialog with\ninformation about the cause of the problem. There are some slight changes,\nsuch as the omission of the 'X' on the close button, but otherwise they are\nvery much the same, even in parts of the source code. It has been updated to\nuse modern CSS Styling.\n\n## Building\nYou're on your own :)\n\nA typical build might look as follows:\n\n```\n# Get repository and *recursively* init submodules (we need ext/gir.core/gir-files)\n\u003e git clone --recursive https://github.com/firox263/Hyena.git\n\u003e cd Hyena\n\n# Run the binding generation tool\n\u003e pushd ext/gir.core/Build\n\u003e dotnet run\n\n# Return to Hyena directory and build\n\u003e popd\n\u003e dotnet build\n\n# Run Gui code tests:\n\u003e dotnet run --project Hyena.Gui\n```\n\n`Hyena.Gui.Old` contains Mono/Gtk2 code and no longer builds. `Hyena`, `Hyena.Data.Sqlite`, and `Hyena.Gui` all build using .NET Core 3.1.\n\nMake sure you have a compatible version of Gtk installed (see gir.core for setup instructions).\n\nYou can run with `dotnet run --project=Hyena.Gui`.\n\n## Original README\nThe original README can be seen below:\n\n```txt\nThis is a library of useful GUI and non-GUI C# code, originally used in Banshee.\n\nNOTE\n** It is not API stable, and so is not installed to the GAC.**\n\nThere are three ways to use Hyena in your app:\n\n1) Require it as an external dep; copy its .dll files into your project\n\n   Applications using it should make a local copy of whatever components you use.\n   That is, you should consider Hyena a build-time dependency, not a run-time, since\n   at run-time your app will contain a copy of Hyena.\n\n   There are variables defined in the pkg-config files that contain assemblies \n   and files needed for a given component of Hyena (eg hyena, hyena.data.sqlite, \n   and hyena.gui).\n\n   pkg-config --variable=Assemblies hyena\n   pkg-config --variable=Files hyena\n   \n   You can look at PDF Mod for an example of how to use Hyena:\n\n   http://git.gnome.org/cgit/pdfmod/tree/configure.ac\n   http://git.gnome.org/cgit/pdfmod/tree/Makefile.am\n   http://git.gnome.org/cgit/pdfmod/tree/src/Makefile.am\n\n2) Include it as a submodule in your git repo\n\n   This is advantageous if you want to closely track and maybe contribute\n   back to Hyena.  It also means developers don't have to install Hyena\n   themselves from packages or git.\n\n     git submodule add git://git.gnome.org/hyena lib/Hyena\n     git submodule update --init\n     git add .gitmodules\n\n   Then you'll need to add Hyena to your build system.  See Banshee's setup:\n\n     http://git.gnome.org/cgit/banshee/tree/configure.ac\n     http://git.gnome.org/cgit/banshee/tree/Makefile.am\n\n   You can also include the appropriate .csproj in your .sln.  Set them to\n   build under the 'Submodule' configuration, and the binaries will get\n   outputted to ../../bin from the Hyena checkout directory.\n\n3) Bundle the .dll files in your project\n\n   It's an expedient, but not good form for FOSS projects.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmjakeman%2Fhyena","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmjakeman%2Fhyena","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmjakeman%2Fhyena/lists"}