{"id":16648538,"url":"https://github.com/w2sv/wifi-widget","last_synced_at":"2025-03-16T22:32:04.956Z","repository":{"id":65543303,"uuid":"564661585","full_name":"w2sv/WiFi-Widget","owner":"w2sv","description":"Android app providing a fully configurable widget for the monitoring of your WiFi connection details.","archived":false,"fork":false,"pushed_at":"2024-04-10T03:59:20.000Z","size":17473,"stargazers_count":117,"open_issues_count":13,"forks_count":5,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-04-10T05:04:51.642Z","etag":null,"topics":["android","android-application","connectivity","devops","fdroid","jetpack-compose","kotlin","networking","widget","wifi"],"latest_commit_sha":null,"homepage":"https://play.google.com/store/apps/details?id=com.w2sv.wifiwidget","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/w2sv.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2022-11-11T07:46:00.000Z","updated_at":"2024-05-03T22:00:20.411Z","dependencies_parsed_at":"2023-02-15T16:01:41.444Z","dependency_job_id":"516624c6-c785-49c9-b550-c194dc008f3a","html_url":"https://github.com/w2sv/WiFi-Widget","commit_stats":null,"previous_names":[],"tags_count":58,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/w2sv%2FWiFi-Widget","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/w2sv%2FWiFi-Widget/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/w2sv%2FWiFi-Widget/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/w2sv%2FWiFi-Widget/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/w2sv","download_url":"https://codeload.github.com/w2sv/WiFi-Widget/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243832262,"owners_count":20355075,"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":["android","android-application","connectivity","devops","fdroid","jetpack-compose","kotlin","networking","widget","wifi"],"created_at":"2024-10-12T09:04:41.619Z","updated_at":"2025-03-16T22:32:04.951Z","avatar_url":"https://github.com/w2sv.png","language":"Kotlin","funding_links":["https://www.buymeacoffee.com/w2sv"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"\"\u003e\u003cimg width=\"200\" height=\"200\" src=\"https://github.com/w2sv/WiFi-Widget/blob/main/app/src/main/res/mipmap-xxxhdpi/logo_round.png\" alt=\"\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003eWiFi Widget\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/endpoint?color=green\u0026logo=google-play\u0026logoColor=green\u0026url=https%3A%2F%2Fplay.cuzi.workers.dev%2Fplay%3Fi%3Dcom.w2sv.wifiwidget%26l%3DPlay%2520Store%26m%3D%24version\" alt=\"\"/\u003e\n  \u003cimg alt=\"F-Droid\" src=\"https://img.shields.io/f-droid/v/com.w2sv.wifiwidget\"\u003e\n  \u003cimg alt=\"GitHub release (latest by date including pre-releases)\" src=\"https://img.shields.io/github/v/release/w2sv/WiFi-Widget?include_prereleases\"/\u003e\n\n  \u003cbr\u003e\n\n  \u003ca href=\"https://github.com/w2sv/WiFi-Widget/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/downloads/w2sv/WiFi-Widget/total?label=Downloads\u0026logo=github\" alt=\"\"/\u003e\n  \u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/endpoint?color=green\u0026logo=google-play\u0026logoColor=green\u0026url=https%3A%2F%2Fplay.cuzi.workers.dev%2Fplay%3Fi%3Dcom.w2sv.wifiwidget%26l%3DDownloads%26m%3D%24totalinstalls\" alt=\"\"/\u003e\n\n  \u003cbr\u003e\n\n  \u003cimg src=\"https://img.shields.io/github/license/w2sv/WiFi-Widget\" alt=\"\"\u003e\n  \u003cimg alt=\"GitHub code size in bytes\" src=\"https://img.shields.io/github/languages/code-size/w2sv/WiFi-Widget\"\u003e\n  \u003ca href=\"https://github.com/w2sv/WiFi-Widget/actions/workflows/workflow.yaml\"\u003e\u003cimg alt=\"Check \u0026 Assemble Debug\" src=\"https://github.com/w2sv/WiFi-Widget/actions/workflows/workflow.yaml/badge.svg\"\u003e\u003c/a\u003e\n\n\u003c/p\u003e\n\n------\n\n\u003cp align=\"center\"\u003e\n\u003cb\u003eAndroid app providing a fully configurable widget for the monitoring of your WiFi connection details.\u003c/b\u003e\n\u003c/p\u003e\n\n------\n\n\u003ch2 align=\"center\"\u003eScreenshots\u003c/h2\u003e\n\n| ![](https://github.com/w2sv/WiFi-Widget/blob/main/app/src/main/play/listings/en-US/graphics/phone-screenshots/1.jpg) | ![](https://github.com/w2sv/WiFi-Widget/blob/main/app/src/main/play/listings/en-US/graphics/phone-screenshots/2.jpg) | ![](https://github.com/w2sv/WiFi-Widget/blob/main/app/src/main/play/listings/en-US/graphics/phone-screenshots/3.jpg) |\n|----------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------|\n| ![](https://github.com/w2sv/WiFi-Widget/blob/main/app/src/main/play/listings/en-US/graphics/phone-screenshots/4.jpg) | ![](https://github.com/w2sv/WiFi-Widget/blob/main/app/src/main/play/listings/en-US/graphics/phone-screenshots/5.jpg) | ![](https://github.com/w2sv/WiFi-Widget/blob/main/app/src/main/play/listings/en-US/graphics/phone-screenshots/6.jpg) |\n\n\u003ch2 align=\"center\"\u003eDownload\u003c/h2\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://play.google.com/store/apps/details?id=com.w2sv.wifiwidget\"\u003e\u003cimg alt=\"Get it on Google Play\" src=\"https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png\" height=\"80\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://f-droid.org/packages/com.w2sv.wifiwidget/\"\u003e\u003cimg alt=\"Download from F-Droid\" src=\"https://fdroid.gitlab.io/artwork/badge/get-it-on.png\" height=\"80\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/w2sv/WiFi-Widget/releases/latest\"\u003e\u003cimg alt=\"Get it on GitHub\" src=\"https://github.com/machiav3lli/oandbackupx/blob/034b226cea5c1b30eb4f6a6f313e4dadcbb0ece4/badge_github.png\" height=\"80\"/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch2 align=\"center\"\u003eFeatures\u003c/h2\u003e\n\n### In-App\n\n- Neat Material 3 Design, featuring smooth animations wherever they're appropriate\n- Configurable theme:\n    - Light / dark\n    - Dynamic / static colors\n    - AMOLED black\n- Adaptive layouts for landscape \u0026 portrait mode\n- Live WiFi Status display with property copy-to-clipboard functionality on click\n\n### Widget\n- Property copy-to-clipboard functionality on click\n- **Configuration options:**\n    - Appearance:\n        - Size\n          - from 2x1 to fullscreen\n        - Light/dark theme with static/dynamic, or entirely custom colors\n        - Background opacity\n        - Font size\n        - Property value alignment (left | right)\n    - Displayed properties:\n        - SSID\n        - BSSID\n        - IP Addresses:\n            - Loopback\n            - Site Local\n            - Link Local\n            - Unique Local Address\n            - Multicast\n            - Global Unicast\n            - Public\n                - fetched from [api.ipify.org](https://api.ipify.org)\n            ---\n            - For address types supporting IPv4 \u0026 IPv6, you may choose which versions to include (IPv4 | Ipv6 | both)\n            - Display of prefix lengths (IPv4 \u0026 IPv6), and/or subnet masks (IPv4 only)\n        - Frequency\n        - Channel\n        - Link Speed\n        - RSSI\n        - Signal Strength\n        - Standard\n        - WiFi Generation\n        - Security Protocol\n        - Gateway\n        - DNS(s)\n        - DHCP\n        - NAT64 Prefix\n        - From [ip-api.com/](https://ip-api.com/)\n            - Location:\n                - Zip Code\n                - District\n                - City\n                - Region\n                - Country\n                - Continent\n            - GPS Location\n            - ASN\n            - ISP\n    - Property appearance order\n    - Bottom bar elements inclusion:\n        - Last refresh date time\n        - Buttons:\n            - Refresh data\n            - Open WiFi settings\n            - Open widget settings\n    - Data refreshing:\n        - Interval\n        - Whether to refresh on low battery\n\n\u003ch2 align=\"center\"\u003eTech Stack\u003c/h2\u003e\n\n- Kotlin only\n- Jetpack Compose for in-app UI, xml for widget UI\n- Coroutines \u0026 flows\n- [Dagger-Hilt](https://dagger.dev/hilt/) for dependency injection\n- [OkHttp](https://square.github.io/okhttp/) for network requests, [kotlinx serialization](https://github.com/Kotlin/kotlinx.serialization) for JSON parsing\n- [compose-destinations](https://github.com/raamcosta/compose-destinations) for navigation\n- Proto \u0026 Preferences data store\n- JUnit 4, [mockito](https://github.com/mockito/mockito), [robolectric](https://robolectric.org/) \u0026 [turbine](https://github.com/cashapp/turbine) for unit testing\n- JUnit 4 Compose android (instrumented) testing\n- Androidx Macro benchmarking \u0026 baseline profile generation with app-specific usage journey, implemented with [UI Automator](https://developer.android.com/training/testing/other-components/ui-automator)\n\n\u003ch2 align=\"center\"\u003eArchitecture\u003c/h2\u003e\n\n- Multi-modular build\n- Convention plugins for gradle code reuse, whilst keeping modules independent from one another\n- \"Clean architecture\" (or however you want to call it), with the UI and data layers depending on the domain layer, which exposes the data model and repository interfaces\n\n\u003ch3 align=\"center\"\u003eDependency Graph\u003c/h2\u003e\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"docs/graphs/dependency_graph.svg\" alt=\"\"/\u003e\n\u003c/p\u003e\n\n\u003ch2 align=\"center\"\u003eCredits\u003c/h2\u003e\n\n\u003cp align=\"center\"\u003e\nLogo foreground by \u003ca href=\"https://freeicons.io/profile/75801\"\u003eHilmy Abiyyu Asad\u003c/a\u003e taken\nfrom \u003ca href=\"https://freeicons.io/computer-devices-3/router-wifi-internet-hotspot-icon-487667#\"\u003ehere\u003c/a\u003e,\nwhere it is licensed\nunder \u003ca href=\"https://creativecommons.org/licenses/by/3.0/\"\u003eCreative Commons(Attribution 3.0 unported)\u003c/a\u003e.\n\u003c/p\u003e\n\n\u003ch2 align=\"center\"\u003eDonations\u003c/h2\u003e\n\u003cbr\u003e\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://www.buymeacoffee.com/w2sv\" target=\"_blank\"\u003e\u003cimg src=\"https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png\" alt=\"Buy Me A Coffee\" style=\"height: 41px !important;width: 174px !important\" \u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch2 align=\"center\"\u003eLicense\u003c/h2\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/w2sv/WiFi-Widget/blob/main/LICENSE\"\u003eGPL-3.0 License\u003c/a\u003e © \u003ca href=\"https://github.com/w2sv\"\u003ew2sv\u003c/a\u003e [2022 - Present]\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fw2sv%2Fwifi-widget","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fw2sv%2Fwifi-widget","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fw2sv%2Fwifi-widget/lists"}