├── .gitignore ├── .npmrc ├── .vscode ├── extensions.json └── launch.json ├── README.md ├── astro.config.mjs ├── package-lock.json ├── package.json ├── public ├── BingSiteAuth.xml ├── favicon.png ├── google2bbec697a1cabb4f.html └── robots.txt ├── src ├── apps.ts ├── env.d.ts ├── pages │ └── index.astro └── styles │ └── global.css ├── tailwind.config.mjs └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | # build output 2 | dist/ 3 | # generated types 4 | .astro/ 5 | 6 | # dependencies 7 | node_modules/ 8 | 9 | # logs 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | pnpm-debug.log* 14 | 15 | 16 | # environment variables 17 | .env 18 | .env.production 19 | 20 | # macOS-specific files 21 | .DS_Store 22 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | @jsr:registry=https://npm.jsr.io 2 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["astro-build.astro-vscode"], 3 | "unwantedRecommendations": [] 4 | } 5 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "command": "./node_modules/.bin/astro dev", 6 | "name": "Development server", 7 | "request": "launch", 8 | "type": "node-terminal" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Are We LibAdwaita Yet? 2 | 3 | Welcome to the "Are We LibAdwaita Yet?" website, where you can explore a curated collection of apps that utilize `libadwaita`. While this list may not encompass every app in existence, it provides a snapshot of apps that we are aware of and welcomes contributions from the community to expand the selection. 4 | 5 | ## 🚀 Project Structure 6 | 7 | Here's an overview of the project's directory structure: 8 | 9 | ```text 10 | / 11 | ├── public/ 12 | ├── src/ 13 | | └── apps.ts 14 | │ └── pages/ 15 | │ └── index.astro 16 | └── package.json 17 | ``` 18 | 19 | Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name. 20 | 21 | There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components. 22 | 23 | Any static assets, like images, can be placed in the `public/` directory. 24 | 25 | ## 🧞 Commands 26 | 27 | All commands are run from the root of the project, from a terminal: 28 | 29 | | Command | Action | 30 | | :------------------------ | :----------------------------------------------- | 31 | | `npm install` | Installs dependencies | 32 | | `npm run dev` | Starts local dev server at `localhost:4321` | 33 | | `npm run build` | Build your production site to `./dist/` | 34 | | `npm run preview` | Preview your build locally, before deploying | 35 | | `npm run astro ...` | Run CLI commands like `astro add`, `astro check` | 36 | | `npm run astro -- --help` | Get help using the Astro CLI | 37 | 38 | ## Contributing 39 | 40 | If you come across an app that's missing from our list, you can actively contribute by forking this repository and adding it to the `src/apps.ts` file. Each app entry should include four mandatory fields. Note that the app **must** be published on [Flathub](https://flathub.org) for it to be considered. 41 | 42 | We appreciate your contributions and look forward to growing our collection of LibAdwaita-powered apps! 43 | -------------------------------------------------------------------------------- /astro.config.mjs: -------------------------------------------------------------------------------- 1 | import sitemap from "@astrojs/sitemap"; 2 | import tailwindcss from "@tailwindcss/vite"; 3 | import { defineConfig } from "astro/config"; 4 | 5 | // https://astro.build/config 6 | export default defineConfig({ 7 | site: "https://arewelibadwaitayet.com", 8 | integrations: [sitemap()], 9 | vite: { 10 | plugins: [tailwindcss()], 11 | }, 12 | }); 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "arewelibadwaitayet", 3 | "type": "module", 4 | "version": "0.0.1", 5 | "scripts": { 6 | "dev": "astro dev", 7 | "start": "astro dev", 8 | "build": "astro check && astro build", 9 | "preview": "astro preview", 10 | "astro": "astro" 11 | }, 12 | "dependencies": { 13 | "@astrojs/check": "^0.9.4", 14 | "@astrojs/sitemap": "^3.4.0", 15 | "@tailwindcss/vite": "^4.1.7", 16 | "astro": "^5.7.13", 17 | "tailwindcss": "^4.1.7", 18 | "typescript": "^5.8.3" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /public/BingSiteAuth.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 09E59A17439A06857609719CA77132C7 4 | -------------------------------------------------------------------------------- /public/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redjohnsh/arewelibadwaitayet/f97f4957d4aa8c3dc0bebcbe5908442b756cc0a9/public/favicon.png -------------------------------------------------------------------------------- /public/google2bbec697a1cabb4f.html: -------------------------------------------------------------------------------- 1 | google-site-verification: google2bbec697a1cabb4f.html -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | 4 | Sitemap: https://arewelibadwaitayet.com/sitemap-index.xml -------------------------------------------------------------------------------- /src/apps.ts: -------------------------------------------------------------------------------- 1 | type App = { 2 | name: string; 3 | desc: string; 4 | lang: Lang; 5 | }; 6 | 7 | export enum Lang { 8 | C = "C", 9 | CPlusPlus = "C++", 10 | CSharp = "CSharp", 11 | Crystal = "Crystal", 12 | Go = "Go", 13 | JavaScript = "JavaScript", 14 | Lua = "Lua", 15 | Python = "Python", 16 | Rust = "Rust", 17 | Swift = "Swift", 18 | TypeScript = "TypeScript", 19 | Vala = "Vala", 20 | } 21 | 22 | const APP_MAP: Record = { 23 | "io.bassi.Amberol": { 24 | name: "Amberol", 25 | desc: "Plays music, and nothing else", 26 | lang: Lang.Rust, 27 | }, 28 | "net.natesales.Aviator": { 29 | name: "Aviator", 30 | desc: "Your Video Copilot: AV1/OPUS Video Encoder", 31 | lang: Lang.Python, 32 | }, 33 | "io.github.Bavarder.Bavarder": { 34 | name: "Bavarder", 35 | desc: "Chit-chat with an AI", 36 | lang: Lang.Python, 37 | }, 38 | "com.raggesilver.BlackBox": { 39 | name: "Black Box", 40 | desc: "A beautiful GTK 4 terminal", 41 | lang: Lang.Vala, 42 | }, 43 | "com.rafaelmardojai.Blanket": { 44 | name: "Blanket", 45 | desc: "Listen to ambient sounds", 46 | lang: Lang.Python, 47 | }, 48 | "com.usebottles.bottles": { 49 | name: "Bottles", 50 | desc: "Run Windows Software", 51 | lang: Lang.Python, 52 | }, 53 | "org.gnome.Builder": { 54 | name: "Builder", 55 | desc: "An IDE for GNOME", 56 | lang: Lang.C, 57 | }, 58 | "page.kramo.Cartridges": { 59 | name: "Cartridges", 60 | desc: "Launch all your games", 61 | lang: Lang.Python, 62 | }, 63 | "org.gnome.Snapshot": { 64 | name: "Camera", 65 | desc: "Take pictures and videos", 66 | lang: Lang.Rust, 67 | }, 68 | "org.nickvision.cavalier": { 69 | name: "Cavalier", 70 | desc: "Visualize audio with CAVA", 71 | lang: Lang.CSharp, 72 | }, 73 | "com.github.rafostar.Clapper": { 74 | name: "Clapper", 75 | desc: "Lean back and enjoy videos", 76 | lang: Lang.C, 77 | }, 78 | "org.gnome.design.Contrast": { 79 | name: "Contrast", 80 | desc: "Check contrast between two colors", 81 | lang: Lang.Rust, 82 | }, 83 | "io.gitlab.adhami3310.Converter": { 84 | name: "Switcheroo", 85 | desc: "Convert and manipulate images", 86 | lang: Lang.Rust, 87 | }, 88 | "com.github.huluti.Curtail": { 89 | name: "Curtail", 90 | desc: "Compress your images", 91 | lang: Lang.Python, 92 | }, 93 | "com.belmoussaoui.Decoder": { 94 | name: "Decoder", 95 | desc: "Scan and Generate QR Codes", 96 | lang: Lang.Rust, 97 | }, 98 | "org.nickvision.money": { 99 | name: "Denaro", 100 | desc: "Manage your personal finances", 101 | lang: Lang.CSharp, 102 | }, 103 | "app.drey.Dialect": { 104 | name: "Dialect", 105 | desc: "Translate between languages", 106 | lang: Lang.Python, 107 | }, 108 | "me.dusansimic.DynamicWallpaper": { 109 | name: "Dynamic Wallpaper", 110 | desc: "Dynamic wallpaper creator for Gnome 42", 111 | lang: Lang.Python, 112 | }, 113 | "com.github.wwmm.easyeffects": { 114 | name: "Easy Effects", 115 | desc: "Audio Effects for PipeWire Applications", 116 | lang: Lang.CPlusPlus, 117 | }, 118 | "io.github.mrvladus.List": { 119 | name: "Errands", 120 | desc: "Manage your tasks", 121 | lang: Lang.Python, 122 | }, 123 | "io.github.cleomenezesjr.Escambo": { 124 | name: "Escambo", 125 | desc: "Test and develop APIs", 126 | lang: Lang.Python, 127 | }, 128 | "com.mattjakeman.ExtensionManager": { 129 | name: "Extension Manager", 130 | desc: "Browse, install, and manage GNOME Shell Extensions", 131 | lang: Lang.C, 132 | }, 133 | "com.github.finefindus.eyedropper": { 134 | name: "Eyedropper", 135 | desc: "Pick and format colors", 136 | lang: Lang.Rust, 137 | }, 138 | "com.github.ADBeveridge.Raider": { 139 | name: "File Shredder", 140 | desc: "Permanently delete your files", 141 | lang: Lang.C, 142 | }, 143 | "de.schmidhuberj.Flare": { 144 | name: "Flare", 145 | desc: "Chat with your friends on Signal", 146 | lang: Lang.Rust, 147 | }, 148 | "com.github.tchx84.Flatseal": { 149 | name: "Flatseal", 150 | desc: "Manage Flatpak permissions", 151 | lang: Lang.JavaScript, 152 | }, 153 | "io.github.giantpinkrobots.flatsweep": { 154 | name: "Flatsweep", 155 | desc: "Flatpak leftover cleaner", 156 | lang: Lang.Python, 157 | }, 158 | "io.github.diegoivanme.flowtime": { 159 | name: "Flowtime", 160 | desc: "Spend your time wisely", 161 | lang: Lang.Vala, 162 | }, 163 | "com.mardojai.ForgeSparks": { 164 | name: "Forge Sparks", 165 | desc: "Get Git forges notifications", 166 | lang: Lang.JavaScript, 167 | }, 168 | "de.haeckerfelix.Fragments": { 169 | name: "Fragments", 170 | desc: "Manage torrents", 171 | lang: Lang.Rust, 172 | }, 173 | "io.github.realmazharhussain.GdmSettings": { 174 | name: "GDM Settings", 175 | desc: "Customize your login screen", 176 | lang: Lang.Python, 177 | }, 178 | "dev.Cogitri.Health": { 179 | name: "Health", 180 | desc: "Track your fitness goals", 181 | lang: Lang.Rust, 182 | }, 183 | "org.gnome.Loupe": { 184 | name: "Image Viewer", 185 | desc: "View images", 186 | lang: Lang.Rust, 187 | }, 188 | "io.gitlab.adhami3310.Impression": { 189 | name: "Impression", 190 | desc: "Create bootable drives", 191 | lang: Lang.Rust, 192 | }, 193 | "io.gitlab.gregorni.Letterpress": { 194 | name: "Letterpress", 195 | desc: "Create beautiful ASCII art", 196 | lang: Lang.Python, 197 | }, 198 | "org.gnome.design.Lorem": { 199 | name: "Lorem", 200 | desc: "Generate placeholder text", 201 | lang: Lang.Rust, 202 | }, 203 | "fr.romainvigier.MetadataCleaner": { 204 | name: "Metadata Cleaner", 205 | desc: "View and clean metadata in files", 206 | lang: Lang.Python, 207 | }, 208 | "io.missioncenter.MissionCenter": { 209 | name: "Mission Center", 210 | desc: "Monitor system resource usage", 211 | lang: Lang.Rust, 212 | }, 213 | "io.github.seadve.Mousai": { 214 | name: "Mousai", 215 | desc: "Identify songs in seconds", 216 | lang: Lang.Rust, 217 | }, 218 | "io.gitlab.news_flash.NewsFlash": { 219 | name: "Newsflash", 220 | desc: "Keep up with your feeds", 221 | lang: Lang.Rust, 222 | }, 223 | "com.belmoussaoui.Obfuscate": { 224 | name: "Obfuscate", 225 | desc: "Censor private information", 226 | lang: Lang.Rust, 227 | }, 228 | "org.nickvision.tubeconverter": { 229 | name: "Parabolic", 230 | desc: "Download web video and audio", 231 | lang: Lang.CSharp, 232 | }, 233 | "org.gnome.World.PikaBackup": { 234 | name: "Pika Backup", 235 | desc: "Keep your data safe", 236 | lang: Lang.Rust, 237 | }, 238 | "org.gnome.Podcasts": { 239 | name: "Podcasts", 240 | desc: "Listen to your favorite shows", 241 | lang: Lang.Rust, 242 | }, 243 | "com.github.marhkb.Pods": { 244 | name: "Pods", 245 | desc: "Keep track of your podman containers", 246 | lang: Lang.Rust, 247 | }, 248 | "net.nokyan.Resources": { 249 | name: "Resources", 250 | desc: "Keep an eye on system resources", 251 | lang: Lang.Rust, 252 | }, 253 | "com.rafaelmardojai.SharePreview": { 254 | name: "Share Preview", 255 | desc: "Test social media cards locally", 256 | lang: Lang.Rust, 257 | }, 258 | "de.haeckerfelix.Shortwave": { 259 | name: "Shortwave", 260 | desc: "Listen to internet radio", 261 | lang: Lang.Rust, 262 | }, 263 | "it.mijorus.smile": { 264 | name: "Smile", 265 | desc: "An emoji picker", 266 | lang: Lang.Python, 267 | }, 268 | "org.gnome.Solanum": { 269 | name: "Solanum", 270 | desc: "Balance working time and break time", 271 | lang: Lang.Rust, 272 | }, 273 | "xyz.ketok.Speedtest": { 274 | name: "Speedtest", 275 | desc: "Measure your internet connection speed", 276 | lang: Lang.Python, 277 | }, 278 | "dev.alextren.Spot": { 279 | name: "Spot", 280 | desc: "Listen to music on Spotify", 281 | lang: Lang.Rust, 282 | }, 283 | "io.gitlab.liferooter.TextPieces": { 284 | name: "Text Pieces", 285 | desc: "Developer's scratchpad", 286 | lang: Lang.Rust, 287 | }, 288 | "me.iepure.Ticketbooth": { 289 | name: "Ticket Booth", 290 | desc: "Keep track of your favorite shows", 291 | lang: Lang.Python, 292 | }, 293 | "de.philippun1.turtle": { 294 | name: "Turtle", 295 | desc: "Manage your git repositories", 296 | lang: Lang.Python, 297 | }, 298 | "io.gitlab.theevilskeleton.Upscaler": { 299 | name: "Upscaler", 300 | desc: "Upscale and enhance images", 301 | lang: Lang.Python, 302 | }, 303 | "com.github.unrud.VideoDownloader": { 304 | name: "Video Downloader", 305 | desc: "Download web videos", 306 | lang: Lang.Python, 307 | }, 308 | "org.gnome.gitlab.YaLTeR.VideoTrimmer": { 309 | name: "Video Trimmer", 310 | desc: "Trim videos quickly", 311 | lang: Lang.Rust, 312 | }, 313 | "io.github.flattool.Warehouse": { 314 | name: "Warehouse", 315 | desc: "Manage all things Flatpak", 316 | lang: Lang.Python, 317 | }, 318 | "app.drey.Warp": { 319 | name: "Warp", 320 | desc: "Fast and secure file transfer", 321 | lang: Lang.Rust, 322 | }, 323 | "com.github.hugolabe.Wike": { 324 | name: "Wike", 325 | desc: "Search and read Wikipedia articles", 326 | lang: Lang.Python, 327 | }, 328 | "re.sonny.Workbench": { 329 | name: "Workbench", 330 | desc: "Prototype with GNOME technologies", 331 | lang: Lang.JavaScript, 332 | }, 333 | "org.gnome.Music": { 334 | name: "Music", 335 | desc: "Play and organize your music collection", 336 | lang: Lang.Python, 337 | }, 338 | "org.gnome.Calendar": { 339 | name: "Calendar", 340 | desc: "Manage your schedule", 341 | lang: Lang.C, 342 | }, 343 | "org.gnome.Weather": { 344 | name: "Weather", 345 | desc: "Show weather conditions and forecast", 346 | lang: Lang.TypeScript, 347 | }, 348 | "org.gnome.Maps": { 349 | name: "Maps", 350 | desc: "Find places around the world", 351 | lang: Lang.JavaScript, 352 | }, 353 | "org.gnome.clocks": { 354 | name: "Clocks", 355 | desc: "Keep track of time", 356 | lang: Lang.Vala, 357 | }, 358 | "org.gnome.Epiphany": { 359 | name: "Web", 360 | desc: "Browse the web", 361 | lang: Lang.C, 362 | }, 363 | "io.github.nate_xyz.Resonance": { 364 | name: "Resonance", 365 | desc: "Harmonize your listening experience", 366 | lang: Lang.Rust, 367 | }, 368 | "org.gnome.Decibels": { 369 | name: "Audio Player", 370 | desc: "Play audio files", 371 | lang: Lang.TypeScript, 372 | }, 373 | "com.belmoussaoui.Authenticator": { 374 | name: "Authenticator", 375 | desc: "Generate two-factor codes", 376 | lang: Lang.Rust, 377 | }, 378 | "org.gnome.World.Secrets": { 379 | name: "Secrets", 380 | desc: "Manage your passwords", 381 | lang: Lang.Python, 382 | }, 383 | "com.github.neithern.g4music": { 384 | name: "Gapless", 385 | desc: "Play your music elegantly", 386 | lang: Lang.Vala, 387 | }, 388 | "io.github.diegopvlk.Dosage": { 389 | name: "Dosage", 390 | desc: "Keep track of your treatments", 391 | lang: Lang.JavaScript, 392 | }, 393 | "org.gnome.Todo": { 394 | name: "Endeavour", 395 | desc: "Manage your tasks", 396 | lang: Lang.C, 397 | }, 398 | "org.gnome.DejaDup": { 399 | name: "Déjà Dup Backups", 400 | desc: "Protect yourself from data loss", 401 | lang: Lang.Vala, 402 | }, 403 | "de.haeckerfelix.AudioSharing": { 404 | name: "Audio Sharing", 405 | desc: "Share your computer audio", 406 | lang: Lang.Rust, 407 | }, 408 | "io.github.nate_xyz.Chromatic": { 409 | name: "Chromatic", 410 | desc: "Fine-tune your instruments", 411 | lang: Lang.Rust, 412 | }, 413 | "org.nickvision.tagger": { 414 | name: "Tagger", 415 | desc: "Tag your music", 416 | lang: Lang.CSharp, 417 | }, 418 | "app.drey.EarTag": { 419 | name: "Ear Tag", 420 | desc: "Edit audio file tags", 421 | lang: Lang.Python, 422 | }, 423 | "io.github.celluloid_player.Celluloid": { 424 | name: "Celluloid", 425 | desc: "Plays videos", 426 | lang: Lang.C, 427 | }, 428 | "com.pojtinger.felicitas.Multiplex": { 429 | name: "Multiplex", 430 | desc: "Watch torrents with your friends", 431 | lang: Lang.Go, 432 | }, 433 | "io.gitlab.adhami3310.Footage": { 434 | name: "Footage", 435 | desc: "Polish your videos", 436 | lang: Lang.Rust, 437 | }, 438 | "io.github.seadve.Kooha": { 439 | name: "Kooha", 440 | desc: "Elegantly record your screen", 441 | lang: Lang.Rust, 442 | }, 443 | "org.gnome.gitlab.YaLTeR.Identity": { 444 | name: "Identity", 445 | desc: "Compare images and videos", 446 | lang: Lang.Rust, 447 | }, 448 | "io.github.nokse22.asciidraw": { 449 | name: "ASCII Draw", 450 | desc: "Sketch anything using characters", 451 | lang: Lang.Python, 452 | }, 453 | "dev.geopjr.Calligraphy": { 454 | name: "Calligraphy", 455 | desc: "Turn text into ASCII banners", 456 | lang: Lang.Python, 457 | }, 458 | "io.github.tfuxu.Halftone": { 459 | name: "Halftone", 460 | desc: "Dither your images", 461 | lang: Lang.Python, 462 | }, 463 | "io.github.dubstar_04.design": { 464 | name: "Design", 465 | desc: "2D CAD for GNOME", 466 | lang: Lang.JavaScript, 467 | }, 468 | "io.github.dlippok.photometric-viewer": { 469 | name: "Photometry", 470 | desc: "View photometric files", 471 | lang: Lang.Python, 472 | }, 473 | "com.rafaelmardojai.WebfontKitGenerator": { 474 | name: "Webfont Kit Generator", 475 | desc: "Create @font-face kits easily", 476 | lang: Lang.Python, 477 | }, 478 | "nl.g4d.Girens": { 479 | name: "Girens for Plex", 480 | desc: "Watch your Plex content", 481 | lang: Lang.Python, 482 | }, 483 | "io.github.bytezz.IPLookup": { 484 | name: "IP Lookup", 485 | desc: "Find info about an IP address", 486 | lang: Lang.Python, 487 | }, 488 | "im.dino.Dino": { 489 | name: "Dino", 490 | desc: "Modern XMPP chat client", 491 | lang: Lang.Vala, 492 | }, 493 | "org.gabmus.gfeeds": { 494 | name: "Feeds", 495 | desc: "News reader for GNOME", 496 | lang: Lang.Python, 497 | }, 498 | "dev.geopjr.Tuba": { 499 | name: "Tuba", 500 | desc: "Browse the Fediverse", 501 | lang: Lang.Vala, 502 | }, 503 | "re.sonny.Tangram": { 504 | name: "Tangram", 505 | desc: "Browser for your pinned tabs", 506 | lang: Lang.JavaScript, 507 | }, 508 | "info.febvre.Komikku": { 509 | name: "Komikku", 510 | desc: "Discover and read manga & comics", 511 | lang: Lang.Python, 512 | }, 513 | "se.sjoerd.Graphs": { 514 | name: "Graphs", 515 | desc: "Plot and manipulate data", 516 | lang: Lang.Python, 517 | }, 518 | "com.github.cassidyjames.dippi": { 519 | name: "Dippi", 520 | desc: "Calculate display info like DPI", 521 | lang: Lang.Vala, 522 | }, 523 | "org.gabmus.whatip": { 524 | name: "What IP", 525 | desc: "Info on your IP", 526 | lang: Lang.Python, 527 | }, 528 | "ir.imansalmani.IPlan": { 529 | name: "IPlan", 530 | desc: "Your plan for improving personal life and workflow", 531 | lang: Lang.Rust, 532 | }, 533 | "com.feaneron.Boatswain": { 534 | name: "Boatswain", 535 | desc: "Control your Elgato Stream Decks", 536 | lang: Lang.C, 537 | }, 538 | "garden.turtle.Jellybean": { 539 | name: "Stockpile", 540 | desc: "Keep count of restockable items", 541 | lang: Lang.Vala, 542 | }, 543 | "org.gnome.Characters": { 544 | name: "Characters", 545 | desc: "Character map application", 546 | lang: Lang.C, 547 | }, 548 | "com.clarahobbs.chessclock": { 549 | name: "Chess Clock", 550 | desc: "Time games of over-the-board chess", 551 | lang: Lang.Python, 552 | }, 553 | "io.github.lainsce.Khronos": { 554 | name: "Khronos", 555 | desc: "Log the time it took to do tasks", 556 | lang: Lang.Vala, 557 | }, 558 | "re.sonny.Retro": { 559 | name: "Retro", 560 | desc: "Customizable clock widget", 561 | lang: Lang.JavaScript, 562 | }, 563 | "com.github.vikdevelop.timer": { 564 | name: "Timer", 565 | desc: "Simple countdown timer", 566 | lang: Lang.Python, 567 | }, 568 | "io.github.dgsasha.Remembrance": { 569 | name: "Reminders", 570 | desc: "Set reminders for yourself", 571 | lang: Lang.Python, 572 | }, 573 | "dev.geopjr.Collision": { 574 | name: "Collision", 575 | desc: "Check hashes for your files", 576 | lang: Lang.Crystal, 577 | }, 578 | "pm.mirko.Atoms": { 579 | name: "Atoms", 580 | desc: "Manage Chroot and Containers", 581 | lang: Lang.Python, 582 | }, 583 | "re.sonny.Playhouse": { 584 | name: "Playhouse", 585 | desc: "Playground for HTML/CSS/JavaScript", 586 | lang: Lang.JavaScript, 587 | }, 588 | "org.gnome.World.Citations": { 589 | name: "Citations", 590 | desc: "Manage your bibliography", 591 | lang: Lang.Rust, 592 | }, 593 | "com.felipekinoshita.Wildcard": { 594 | name: "Wildcard", 595 | desc: "Test your regular expressions", 596 | lang: Lang.Rust, 597 | }, 598 | "de.philippun1.Snoop": { 599 | name: "Snoop", 600 | desc: "Snoop through your files", 601 | lang: Lang.Vala, 602 | }, 603 | "me.iepure.devtoolbox": { 604 | name: "Dev Toolbox", 605 | desc: "Development tools at your fingertips", 606 | lang: Lang.Python, 607 | }, 608 | "re.sonny.Commit": { 609 | name: "Commit", 610 | desc: "Commit message editor", 611 | lang: Lang.JavaScript, 612 | }, 613 | "io.github.lainsce.Emulsion": { 614 | name: "Emulsion", 615 | desc: "Stock up on colors", 616 | lang: Lang.Vala, 617 | }, 618 | "org.gnome.design.IconLibrary": { 619 | name: "Icon Library", 620 | desc: "Symbolic icons for your apps", 621 | lang: Lang.Rust, 622 | }, 623 | "io.github.nate_xyz.Paleta": { 624 | name: "Paleta", 625 | desc: "Generate color palettes with ease", 626 | lang: Lang.Python, 627 | }, 628 | "org.gnome.design.SymbolicPreview": { 629 | name: "Symbolic Preview", 630 | desc: "Symbolics Made Easy", 631 | lang: Lang.Rust, 632 | }, 633 | "com.hunterwittenborn.Celeste": { 634 | name: "Celeste", 635 | desc: "Sync your cloud files", 636 | lang: Lang.Rust, 637 | }, 638 | "com.felipekinoshita.Kana": { 639 | name: "Kana", 640 | desc: "Learn Japanese characters", 641 | lang: Lang.Rust, 642 | }, 643 | "com.ranfdev.Notify": { 644 | name: "Notify", 645 | desc: "Receive notifications from ntfy.sh.", 646 | lang: Lang.Rust, 647 | }, 648 | "fr.sgued.ten_forward": { 649 | name: "Ten Forward", 650 | desc: "Control a NAT-PMP gateway", 651 | lang: Lang.Rust, 652 | }, 653 | "dev.zelikos.rollit": { 654 | name: "Chance", 655 | desc: "Roll the dice", 656 | lang: Lang.Rust, 657 | }, 658 | "io.github.fkinoshita.Telegraph": { 659 | name: "Telegraph", 660 | desc: "Write and decode morse", 661 | lang: Lang.Python, 662 | }, 663 | "com.gitlab.guillermop.MasterKey": { 664 | name: "Master Key", 665 | desc: "A password manager application", 666 | lang: Lang.Python, 667 | }, 668 | "io.github.eminfedar.vaktisalah-gtk-rs": { 669 | name: "Vakt-i Salah", 670 | desc: "Simple prayer times app", 671 | lang: Lang.Rust, 672 | }, 673 | "io.gitlab.azymohliad.WatchMate": { 674 | name: "Watchmate", 675 | desc: "Manage your PineTime", 676 | lang: Lang.Rust, 677 | }, 678 | "io.github.diegoivan.pdf_metadata_editor": { 679 | name: "Paper Clip", 680 | desc: "Edit PDF document metadata", 681 | lang: Lang.Vala, 682 | }, 683 | "org.gnome.Chess": { 684 | name: "GNOME Chess", 685 | desc: "Play the classic two-player board game of chess", 686 | lang: Lang.Vala, 687 | }, 688 | "org.gnome.World.Iotas": { 689 | name: "Iotas", 690 | desc: "Simple note taking", 691 | lang: Lang.Python, 692 | }, 693 | "de.k_bo.Televido": { 694 | name: "Televido", 695 | desc: "Access German-language public TV", 696 | lang: Lang.Rust, 697 | }, 698 | "de.schmidhuberj.DieBahn": { 699 | name: "Railway", 700 | desc: "Find all your travel information", 701 | lang: Lang.Rust, 702 | }, 703 | "com.belmoussaoui.ReadItLater": { 704 | name: "Read It Later", 705 | desc: "Save and read web articles", 706 | lang: Lang.Rust, 707 | }, 708 | "so.libdb.dissent": { 709 | name: "Dissent", 710 | desc: "Tiny native Discord app", 711 | lang: Lang.Go, 712 | }, 713 | "com.github.joseexposito.touche": { 714 | name: "Touché", 715 | desc: "Multi-touch gestures", 716 | lang: Lang.JavaScript, 717 | }, 718 | "it.mijorus.gearlever": { 719 | name: "Gear Lever", 720 | desc: "Manage AppImages", 721 | lang: Lang.Python, 722 | }, 723 | "im.bernard.Nostalgia": { 724 | name: "Nostalgia", 725 | desc: "Set historic GNOME Wallpapers", 726 | lang: Lang.Vala, 727 | }, 728 | "io.github.vikdevelop.SaveDesktop": { 729 | name: "SaveDesktop", 730 | desc: "Save your desktop configuration", 731 | lang: Lang.Python, 732 | }, 733 | "io.frama.tractor.carburetor": { 734 | name: "Carburetor", 735 | desc: "Browse anonymously", 736 | lang: Lang.Python, 737 | }, 738 | "cool.ldr.lfy": { 739 | name: "lfy", 740 | desc: "Translation software for read paper", 741 | lang: Lang.Python, 742 | }, 743 | "art.taunoerik.tauno-monitor": { 744 | name: "Tauno Monitor", 745 | desc: "Serial port monitor", 746 | lang: Lang.Python, 747 | }, 748 | "io.github.giantpinkrobots.varia": { 749 | name: "Varia", 750 | desc: "Download files and torrents", 751 | lang: Lang.Python, 752 | }, 753 | "app.drey.Biblioteca": { 754 | name: "Biblioteca", 755 | desc: "Read GNOME documentation offline", 756 | lang: Lang.JavaScript, 757 | }, 758 | "org.gnome.Fractal": { 759 | name: "Fractal", 760 | desc: "Chat on Matrix", 761 | lang: Lang.Rust, 762 | }, 763 | "io.github.leolost2605.gradebook": { 764 | name: "Gradebook", 765 | desc: "Keep track of your grades", 766 | lang: Lang.Vala, 767 | }, 768 | "io.github.alainm23.planify": { 769 | name: "Planify", 770 | desc: "Forget about forgetting things", 771 | lang: Lang.Vala, 772 | }, 773 | "net.krafting.Playlifin": { 774 | name: "Playlifin", 775 | desc: "Sync YouTube playlists to Jellyfin", 776 | lang: Lang.Python, 777 | }, 778 | "dev.bragefuglseth.Fretboard": { 779 | name: "Fretboard", 780 | desc: "Look up guitar chords", 781 | lang: Lang.Rust, 782 | }, 783 | "cafe.avery.Delfin": { 784 | name: "Delfin", 785 | desc: "Stream movies and TV shows from Jellyfin", 786 | lang: Lang.Rust, 787 | }, 788 | "io.gitlab.daikhan.stable": { 789 | name: "Daikhan", 790 | desc: "Play Videos/Music with style", 791 | lang: Lang.Vala, 792 | }, 793 | "io.github.FailurePoint.RandomNumberFive": { 794 | name: "Random Number Five", 795 | desc: "Random number generator for For the Linux desktop!", 796 | lang: Lang.Python, 797 | }, 798 | "org.freedesktop.Bustle": { 799 | name: "Bustle", 800 | desc: "Visualize D-Bus activity", 801 | lang: Lang.Rust, 802 | }, 803 | "com.quexten.Goldwarden": { 804 | name: "Goldwarden", 805 | desc: "A Bitwarden compatible desktop client", 806 | lang: Lang.Go, 807 | }, 808 | "com.github.johnfactotum.Foliate": { 809 | name: "Foliate", 810 | desc: "Read e-books in style", 811 | lang: Lang.JavaScript, 812 | }, 813 | "app.drey.KeyRack": { 814 | name: "Key Rack", 815 | desc: "View and edit passwords", 816 | lang: Lang.Rust, 817 | }, 818 | "io.github.fizzyizzy05.binary": { 819 | name: "Binary", 820 | desc: "Convert numbers between bases", 821 | lang: Lang.Python, 822 | }, 823 | "org.gaphor.Gaphor": { 824 | name: "Gaphor", 825 | desc: "Simple UML and SysML modeling tool", 826 | lang: Lang.Python, 827 | }, 828 | "page.codeberg.libre_menu_editor.LibreMenuEditor": { 829 | name: "Main Menu", 830 | desc: "Customize the menu", 831 | lang: Lang.Python, 832 | }, 833 | "io.github.fabrialberio.pinapp": { 834 | name: "Pins", 835 | desc: "Create and edit application shortcuts", 836 | lang: Lang.C, 837 | }, 838 | "it.mijorus.whisper": { 839 | name: "Whisper", 840 | desc: "Listen to your mic", 841 | lang: Lang.Python, 842 | }, 843 | "de.schmidhuberj.tubefeeder": { 844 | name: "Pipeline", 845 | desc: "Follow video creators", 846 | lang: Lang.Rust, 847 | }, 848 | "xyz.tytanium.DoorKnocker": { 849 | name: "Door Knocker", 850 | desc: "Check the availability of portals", 851 | lang: Lang.C, 852 | }, 853 | "io.github.sigmasd.stimulator": { 854 | name: "Stimulator", 855 | desc: "Keep your computer awake", 856 | lang: Lang.TypeScript, 857 | }, 858 | "io.github.idevecore.Valuta": { 859 | name: "Valuta", 860 | desc: "Convert between currencies", 861 | lang: Lang.Python, 862 | }, 863 | "io.github.amit9838.mousam": { 864 | name: "Mousam", 865 | desc: "Weather at a glance", 866 | lang: Lang.Python, 867 | }, 868 | "it.mijorus.collector": { 869 | name: "Collector", 870 | desc: "Drag and Drop to the next level", 871 | lang: Lang.Python, 872 | }, 873 | "org.sigxcpu.Livi": { 874 | name: "Light Video", 875 | desc: "A simple GTK4 based video player for mobile phones", 876 | lang: Lang.C, 877 | }, 878 | "net.krafting.PleasureDVR": { 879 | name: "Pleasure DVR", 880 | desc: "DVR for the Chaturbate website", 881 | lang: Lang.Python, 882 | }, 883 | "io.github.unrud.RecentFilter": { 884 | name: "Recent Filter", 885 | desc: "Exclude files and folders from recently used files", 886 | lang: Lang.Python, 887 | }, 888 | "io.github.davidoc26.wallpaper_selector": { 889 | name: "Wallpaper Selector", 890 | desc: "Downloads and applies wallpapers", 891 | lang: Lang.Rust, 892 | }, 893 | "app.drey.Doggo": { 894 | name: "Doggo", 895 | desc: "Clicker and chance game", 896 | lang: Lang.C, 897 | }, 898 | "com.github.tenderowl.frog": { 899 | name: "Frog", 900 | desc: "Extract text from images", 901 | lang: Lang.Python, 902 | }, 903 | "xyz.slothlife.Jogger": { 904 | name: "Jogger", 905 | desc: "Fitness tracker", 906 | lang: Lang.Rust, 907 | }, 908 | "com.github.rogercrocker.badabib": { 909 | name: "Bada Bib!", 910 | desc: "View and edit BibTeX entries", 911 | lang: Lang.Python, 912 | }, 913 | "com.github.cassidyjames.clairvoyant": { 914 | name: "Clairvoyant", 915 | desc: "Ask questions, get psychic answers", 916 | lang: Lang.Vala, 917 | }, 918 | "io.github.xverizex.RetroSpriteEditor": { 919 | name: "Retro Sprite", 920 | desc: "Pixel Editor for Retro Consoles", 921 | lang: Lang.C, 922 | }, 923 | "io.github.phastmike.tags": { 924 | name: "Tags", 925 | desc: "Color logs based on tags", 926 | lang: Lang.Vala, 927 | }, 928 | "io.github.santiagocezar.maniatic-launcher": { 929 | name: "Maniatic Launcher", 930 | desc: "A Retro Engine v5 launcher", 931 | lang: Lang.Python, 932 | }, 933 | "io.github.nokse22.minitext": { 934 | name: "Mini Text", 935 | desc: "Ephemeral scratch pad", 936 | lang: Lang.Python, 937 | }, 938 | "io.github.nokse22.ultimate-tic-tac-toe": { 939 | name: "Ultimate Tic Tac Toe", 940 | desc: "(Tic Tac Toe)²", 941 | lang: Lang.Python, 942 | }, 943 | "io.github.nokse22.inspector": { 944 | name: "Inspector", 945 | desc: "View information about your system", 946 | lang: Lang.Python, 947 | }, 948 | "io.github.nokse22.trivia-quiz": { 949 | name: "Trivia Quiz", 950 | desc: "Respond to endless questions", 951 | lang: Lang.Python, 952 | }, 953 | "io.github.nokse22.teleprompter": { 954 | name: "Teleprompter", 955 | desc: "Stay on track during speeches", 956 | lang: Lang.Python, 957 | }, 958 | "me.ppvan.psequel": { 959 | name: "psequel", 960 | desc: "A minimal SQL client", 961 | lang: Lang.Vala, 962 | }, 963 | "dev.tchx84.Portfolio": { 964 | name: "Portfolio", 965 | desc: "Manage files on the go", 966 | lang: Lang.Python, 967 | }, 968 | "io.github.dvlv.boxbuddyrs": { 969 | name: "BoxBuddy", 970 | desc: "A Graphical Distrobox Manager", 971 | lang: Lang.Rust, 972 | }, 973 | "io.github.weclaw1.ScoreTracker": { 974 | name: "Score Tracker", 975 | desc: "Application for tracking player scores in card and board games", 976 | lang: Lang.Rust, 977 | }, 978 | "dev.mufeed.Wordbook": { 979 | name: "Wordbook", 980 | desc: "Lookup definitions for any English term", 981 | lang: Lang.Python, 982 | }, 983 | "com.github.huluti.Coulr": { 984 | name: "Coulr", 985 | desc: "Enjoy colors and feel happy", 986 | lang: Lang.Python, 987 | }, 988 | "org.nicotine_plus.Nicotine": { 989 | name: "Nicotine+", 990 | desc: "Browse the Soulseek network", 991 | lang: Lang.Python, 992 | }, 993 | "dev.skynomads.Seabird": { 994 | name: "Seabird", 995 | desc: "A simple Kubernetes IDE for GNOME", 996 | lang: Lang.Go, 997 | }, 998 | "io.github.zefr0x.hashes": { 999 | name: "Hashes", 1000 | desc: "Identify hashing algorithms", 1001 | lang: Lang.Python, 1002 | }, 1003 | "com.toolstack.Folio": { 1004 | name: "Folio", 1005 | desc: "Take notes in Markdown", 1006 | lang: Lang.Vala, 1007 | }, 1008 | "org.cvfosammmm.Lemma": { 1009 | name: "Lemma", 1010 | desc: "Note-Taking App", 1011 | lang: Lang.Python, 1012 | }, 1013 | "io.github.david_swift.Flashcards": { 1014 | name: "Memorize", 1015 | desc: "Study flashcards", 1016 | lang: Lang.Swift, 1017 | }, 1018 | "app.drey.Elastic": { 1019 | name: "Elastic", 1020 | desc: "Design spring animations", 1021 | lang: Lang.Vala, 1022 | }, 1023 | "com.github.geigi.cozy": { 1024 | name: "Cozy", 1025 | desc: "Listen to audio books", 1026 | lang: Lang.Python, 1027 | }, 1028 | "com.github.Darazaki.Spedread": { 1029 | name: "Spedread", 1030 | desc: "GTK speed reading software: Read like a speedrunner!", 1031 | lang: Lang.Vala, 1032 | }, 1033 | "im.bernard.Memorado": { 1034 | name: "Memorado", 1035 | desc: "Memorize anything", 1036 | lang: Lang.Python, 1037 | }, 1038 | "de.wagnermartin.Plattenalbum": { 1039 | name: "Plattenalbum", 1040 | desc: "Browse music with MPD", 1041 | lang: Lang.Python, 1042 | }, 1043 | "io.github.finefindus.Hieroglyphic": { 1044 | name: "Hieroglyphic", 1045 | desc: "Find LaTeX symbols", 1046 | lang: Lang.Rust, 1047 | }, 1048 | "com.core447.StreamController": { 1049 | name: "StreamController", 1050 | desc: "Control your Elgato Stream Decks with plugin support", 1051 | lang: Lang.Python, 1052 | }, 1053 | "org.gnome.gitlab.cheywood.Buffer": { 1054 | name: "Buffer", 1055 | desc: "Embrace ephemeral text", 1056 | lang: Lang.Python, 1057 | }, 1058 | "io.gitlab.leesonwai.Tactics": { 1059 | name: "Tactics", 1060 | desc: "Build your soccer lineup", 1061 | lang: Lang.C, 1062 | }, 1063 | "io.gitlab.leesonwai.Sums": { 1064 | name: "Sums", 1065 | desc: "Calculate with postfix notation", 1066 | lang: Lang.C, 1067 | }, 1068 | "io.github.halfmexican.Mingle": { 1069 | name: "Mingle", 1070 | desc: "Combine emojis with Google's Emoji Kitchen", 1071 | lang: Lang.Vala, 1072 | }, 1073 | "io.github.cleomenezesjr.aurea": { 1074 | name: "Aurea", 1075 | desc: "Flatpak metainfo banner previewer", 1076 | lang: Lang.Python, 1077 | }, 1078 | "org.gnome.gitlab.somas.Apostrophe": { 1079 | name: "Apostrophe", 1080 | desc: "Edit Markdown in style", 1081 | lang: Lang.Python, 1082 | }, 1083 | "app.drey.Damask": { 1084 | name: "Damask", 1085 | desc: "Automatic wallpapers from the Internet", 1086 | lang: Lang.Vala, 1087 | }, 1088 | "dev.tchx84.Gameeky": { 1089 | name: "Gameeky", 1090 | desc: "Play, create and learn", 1091 | lang: Lang.Python, 1092 | }, 1093 | "io.github.Foldex.AdwSteamGtk": { 1094 | name: "AdwSteamGtk", 1095 | desc: "Give Steam the Adwaita treatment", 1096 | lang: Lang.Python, 1097 | }, 1098 | "org.gnome.SimpleScan": { 1099 | name: "Document Scanner", 1100 | desc: "Make a digital copy of your photos and documents", 1101 | lang: Lang.Vala, 1102 | }, 1103 | "org.gnome.design.AppIconPreview": { 1104 | name: "App Icon Preview", 1105 | desc: "Tool for designing applications icons", 1106 | lang: Lang.Rust, 1107 | }, 1108 | "io.github.andreibachim.shortcut": { 1109 | name: "Shortcut", 1110 | desc: "Make app shortcuts", 1111 | lang: Lang.Rust, 1112 | }, 1113 | "io.github.mpobaschnig.Vaults": { 1114 | name: "Vaults", 1115 | desc: "Keep important files safe", 1116 | lang: Lang.Rust, 1117 | }, 1118 | "com.github.johnfactotum.QuickLookup": { 1119 | name: "Quick Lookup", 1120 | desc: "Look up words quickly", 1121 | lang: Lang.JavaScript, 1122 | }, 1123 | "io.github.fsobolev.TimeSwitch": { 1124 | name: "Time Switch", 1125 | desc: "Set a task to run after a timer", 1126 | lang: Lang.Python, 1127 | }, 1128 | "cz.ondrejkolin.Barcoder": { 1129 | name: "Barcoder", 1130 | desc: "Create barcodes", 1131 | lang: Lang.Rust, 1132 | }, 1133 | "io.github.achetagames.epic_asset_manager": { 1134 | name: "Epic Asset Manager", 1135 | desc: "Manage your Epic assets", 1136 | lang: Lang.Rust, 1137 | }, 1138 | "org.gnome.gitlab.bazylevnik0.Convolution": { 1139 | name: "Convolution", 1140 | desc: "Maze escaping game", 1141 | lang: Lang.JavaScript, 1142 | }, 1143 | "xyz.safeworlds.hiit": { 1144 | name: "Exercise Timer", 1145 | desc: "Train and rest with high intensity", 1146 | lang: Lang.Rust, 1147 | }, 1148 | "net.codelogistics.webapps": { 1149 | name: "Web Apps", 1150 | desc: "Install websites as apps", 1151 | lang: Lang.Python, 1152 | }, 1153 | "com.jeffser.Alpaca": { 1154 | name: "Alpaca", 1155 | desc: "Chat with local AI models", 1156 | lang: Lang.Python, 1157 | }, 1158 | "app.devsuite.Schemes": { 1159 | name: "Schemes", 1160 | desc: "Create syntax highlighting schemes", 1161 | lang: Lang.C, 1162 | }, 1163 | "nl.v0yd.Capsule": { 1164 | name: "Capsule", 1165 | desc: "Medication tracker", 1166 | lang: Lang.JavaScript, 1167 | }, 1168 | "garden.jamie.Morphosis": { 1169 | name: "Morphosis", 1170 | desc: "Convert your documents", 1171 | lang: Lang.Python, 1172 | }, 1173 | "app.fotema.Fotema": { 1174 | name: "Fotema", 1175 | desc: "Admire your photos", 1176 | lang: Lang.Rust, 1177 | }, 1178 | "org.gnome.Crosswords.Editor": { 1179 | name: "Crossword Editor", 1180 | desc: "Create crossword puzzles", 1181 | lang: Lang.C, 1182 | }, 1183 | "org.gnome.Crosswords": { 1184 | name: "Crosswords", 1185 | desc: "Solve crossword puzzles", 1186 | lang: Lang.C, 1187 | }, 1188 | "io.gitlab.cyberphantom52.sudoku_solver": { 1189 | name: "Sudoku Solver", 1190 | desc: "A simple Sudoku Sovler", 1191 | lang: Lang.Rust, 1192 | }, 1193 | "io.github.nokse22.Exhibit": { 1194 | name: "Exhibit", 1195 | desc: "Preview your 3D models", 1196 | lang: Lang.Python, 1197 | }, 1198 | "io.github.pieterdd.RcloneShuttle": { 1199 | name: "Rclone Shuttle", 1200 | desc: "Upload your files to anywhere", 1201 | lang: Lang.Rust, 1202 | }, 1203 | "io.gitlab.elescoute.spacelaunch": { 1204 | name: "Space Launch", 1205 | desc: "Rocket launches tracker", 1206 | lang: Lang.Vala, 1207 | }, 1208 | "xyz.parlatype.Parlatype": { 1209 | name: "Parlatype", 1210 | desc: "Media player for transcription", 1211 | lang: Lang.C, 1212 | }, 1213 | "app.devsuite.Manuals": { 1214 | name: "Manuals", 1215 | desc: "Read developer documentation", 1216 | lang: Lang.C, 1217 | }, 1218 | "dev.bragefuglseth.Keypunch": { 1219 | name: "Keypunch", 1220 | desc: "Practice your typing skills", 1221 | lang: Lang.Rust, 1222 | }, 1223 | "net.danigm.loop": { 1224 | name: "Loop", 1225 | desc: "A simple audio loop machine for GNOME", 1226 | lang: Lang.Python, 1227 | }, 1228 | "org.gnome.gitlab.ilhooq.Bookup": { 1229 | name: "Bookup", 1230 | desc: "Streamline notes with Markdown!", 1231 | lang: Lang.C, 1232 | }, 1233 | "io.github.lainsce.Countdown": { 1234 | name: "Countdown", 1235 | desc: "Track events until they happen or since they happened", 1236 | lang: Lang.Vala, 1237 | }, 1238 | "io.github.lainsce.DotMatrix": { 1239 | name: "Dot Matrix", 1240 | desc: "The creativity playground of lines and curves", 1241 | lang: Lang.Vala, 1242 | }, 1243 | "app.drey.Blurble": { 1244 | name: "Blurble", 1245 | desc: "Word guessing game", 1246 | lang: Lang.Vala, 1247 | }, 1248 | "me.sanchezrodriguez.passes": { 1249 | name: "Passes", 1250 | desc: "Manage your digital passes", 1251 | lang: Lang.Python, 1252 | }, 1253 | "de.hummdudel.Libellus": { 1254 | name: "Libellus", 1255 | desc: "View DnD information in style", 1256 | lang: Lang.JavaScript, 1257 | }, 1258 | "com.saivert.pwvucontrol": { 1259 | name: "pwvucontrol", 1260 | desc: "Volume control for pipewire", 1261 | lang: Lang.Rust, 1262 | }, 1263 | "app.devsuite.Ptyxis": { 1264 | name: "Ptyxis", 1265 | desc: "Container-oriented terminal", 1266 | lang: Lang.C, 1267 | }, 1268 | "io.github.smolblackcat.Progress": { 1269 | name: "Progress", 1270 | desc: "Kanban-style task organiser", 1271 | lang: Lang.CPlusPlus, 1272 | }, 1273 | "org.gnome.Sudoku": { 1274 | name: "GNOME Sudoku", 1275 | desc: "Test your logic skills in this number grid puzzle", 1276 | lang: Lang.Vala, 1277 | }, 1278 | "io.github.lo2dev.Echo": { 1279 | name: "Echo", 1280 | desc: "Ping websites", 1281 | lang: Lang.Python, 1282 | }, 1283 | "io.github.getnf.embellish": { 1284 | name: "Embellish", 1285 | desc: "Install nerd fonts", 1286 | lang: Lang.Go, 1287 | }, 1288 | "nl.emphisia.icon": { 1289 | name: "Iconic", 1290 | desc: "Easily add icons on top of folders", 1291 | lang: Lang.Rust, 1292 | }, 1293 | "com.github.ztefn.haguichi": { 1294 | name: "Haguichi", 1295 | desc: "Manage your Hamachi networks", 1296 | lang: Lang.Vala, 1297 | }, 1298 | "com.oyajun.ColorCode": { 1299 | name: "Color Code", 1300 | desc: "Color Code to Resistance Value", 1301 | lang: Lang.Python, 1302 | }, 1303 | "es.danirod.Cartero": { 1304 | name: "Cartero", 1305 | desc: "Make HTTP requests and test APIs", 1306 | lang: Lang.Rust, 1307 | }, 1308 | "io.github.lawstorant.boxflat": { 1309 | name: "Boxflat", 1310 | desc: "Configure Moza Racing hardware", 1311 | lang: Lang.Python, 1312 | }, 1313 | "org.gnome.gitlab.cheywood.Pulp": { 1314 | name: "Pulp", 1315 | desc: "Skim excessive feeds", 1316 | lang: Lang.Python, 1317 | }, 1318 | "org.gnome.Showtime": { 1319 | name: "Showtime", 1320 | desc: "Watch without distraction", 1321 | lang: Lang.Python, 1322 | }, 1323 | "de.z_ray.Facetracker": { 1324 | name: "Facetracker", 1325 | desc: "Face tracking made easy", 1326 | lang: Lang.Python, 1327 | }, 1328 | "io.github.sigmasd.share": { 1329 | name: "Share", 1330 | desc: "Easily share files", 1331 | lang: Lang.TypeScript, 1332 | }, 1333 | "com.lynnmichaelmartin.TimeTracker": { 1334 | name: "Time Tracker", 1335 | desc: "Track and sync time, local-first", 1336 | lang: Lang.JavaScript, 1337 | }, 1338 | "org.gnome.Papers": { 1339 | name: "Papers", 1340 | desc: "Read documents", 1341 | lang: Lang.C, 1342 | }, 1343 | "net.codelogistics.clicker": { 1344 | name: "Clicker", 1345 | desc: "Simulate user input repeatedly", 1346 | lang: Lang.Python, 1347 | }, 1348 | "org.skytemple.Randomizer": { 1349 | name: "SkyTemple Randomizer", 1350 | desc: "Randomizer for Pokémon Mystery Dungeon Explorers of Sky", 1351 | lang: Lang.Python, 1352 | }, 1353 | "com.adrienplazas.Metronome": { 1354 | name: "Metronome", 1355 | desc: "Keep the tempo", 1356 | lang: Lang.Rust, 1357 | }, 1358 | "io.github.mezoahmedii.Picker": { 1359 | name: "Picker", 1360 | desc: "A simple app to pick something out of a list of things", 1361 | lang: Lang.Python, 1362 | }, 1363 | "dev.geopjr.Archives": { 1364 | name: "Archives", 1365 | desc: "Create and view web archives", 1366 | lang: Lang.Vala, 1367 | }, 1368 | "com.github.gmg137.netease-cloud-music-gtk": { 1369 | name: "NetEase Cloud Music Gtk4", 1370 | desc: "Linux muisc player for NetEase Cloud Music", 1371 | lang: Lang.Rust, 1372 | }, 1373 | "com.github.ryonakano.pinit": { 1374 | name: "Pin It!", 1375 | desc: "Pin portable apps to the launcher", 1376 | lang: Lang.Vala, 1377 | }, 1378 | "com.github.ryonakano.konbucase": { 1379 | name: "KonbuCase", 1380 | desc: "Convert case in your text", 1381 | lang: Lang.Vala, 1382 | }, 1383 | "dev.deedles.Trayscale": { 1384 | name: "Trayscale", 1385 | desc: "Unofficial GUI for Tailscale", 1386 | lang: Lang.Go, 1387 | }, 1388 | "io.github.seadve.Delineate": { 1389 | name: "Delineate", 1390 | desc: "View and edit graphs", 1391 | lang: Lang.Rust, 1392 | }, 1393 | "de.leopoldluley.Clapgrep": { 1394 | name: "Clapgrep", 1395 | desc: "One app to search through all your files, powered by ripgrep", 1396 | lang: Lang.Rust, 1397 | }, 1398 | "eu.nokun.MirrorHall": { 1399 | name: "Mirror Hall", 1400 | desc: "Use Linux devices as virtual displays in a peer-to-peer fashion", 1401 | lang: Lang.Python, 1402 | }, 1403 | "org.pipewire.Helvum": { 1404 | name: "Helvum", 1405 | desc: "Patchbay for PipeWire", 1406 | lang: Lang.Rust, 1407 | }, 1408 | "io.github.kelvinnovais.Kasasa": { 1409 | name: "Kasasa", 1410 | desc: "Create ephemeral floating screenshot windows", 1411 | lang: Lang.C, 1412 | }, 1413 | "io.github.vmkspv.netsleuth": { 1414 | name: "Netsleuth", 1415 | desc: "Calculate IP subnets", 1416 | lang: Lang.Python, 1417 | }, 1418 | "space.rirusha.Cassette": { 1419 | name: "Cassette", 1420 | desc: "Unofficial Yandex Music client", 1421 | lang: Lang.Vala, 1422 | }, 1423 | "org.gnome.Calculator": { 1424 | name: "Calculator", 1425 | desc: "Perform arithmetic, scientific or financial calculations", 1426 | lang: Lang.Vala, 1427 | }, 1428 | "hu.irl.sysex-controls": { 1429 | name: "SysEx Controls", 1430 | desc: "SysEx Controls for Linux", 1431 | lang: Lang.C, 1432 | }, 1433 | "io.github.philippkosarev.bmi": { 1434 | name: "BMI", 1435 | desc: "A body mass index calculator", 1436 | lang: Lang.Python, 1437 | }, 1438 | "ca.vlacroix.Tally": { 1439 | name: "Tally", 1440 | desc: "Count anything", 1441 | lang: Lang.Lua, 1442 | }, 1443 | "org.gnome.design.Typography": { 1444 | name: "Typography", 1445 | desc: "Look up text styles", 1446 | lang: Lang.C, 1447 | }, 1448 | "org.gnome.design.Palette": { 1449 | name: "Palette", 1450 | desc: "Color Palette tool", 1451 | lang: Lang.Vala, 1452 | }, 1453 | "net.krafting.PedantiK": { 1454 | name: "PedantiK", 1455 | desc: "Find the Wikipedia page", 1456 | lang: Lang.Python, 1457 | }, 1458 | "io.github.buonhobo.Katharsis": { 1459 | name: "Katharsis", 1460 | desc: "A simple Kathara GUI to test emulated computer networks", 1461 | lang: Lang.Python, 1462 | }, 1463 | "ca.edestcroix.Recordbox": { 1464 | name: "Recordbox", 1465 | desc: "Browse and play your local music", 1466 | lang: Lang.Rust, 1467 | }, 1468 | "com.konstantintutsch.Caffeine": { 1469 | name: "Caffeine", 1470 | desc: "Calculate your coffee", 1471 | lang: Lang.C, 1472 | }, 1473 | "dev.qwery.AddWater": { 1474 | name: "Add Water", 1475 | desc: "Keep Firefox in Fashion", 1476 | lang: Lang.Python, 1477 | }, 1478 | "com.dz4k.FruitCredits": { 1479 | name: "Fruit Credits", 1480 | desc: "Keep plaintext accounts", 1481 | lang: Lang.Vala, 1482 | }, 1483 | "de.swsnr.turnon": { 1484 | name: "Turn On", 1485 | desc: "Turn on devices in your network", 1486 | lang: Lang.Rust, 1487 | }, 1488 | "net.krafting.HexColordle": { 1489 | name: "Hex Colordle", 1490 | desc: "Find the color", 1491 | lang: Lang.Python, 1492 | }, 1493 | "io.gitlab.guillermop.Counters": { 1494 | name: "Counters", 1495 | desc: "Keep track of anything", 1496 | lang: Lang.TypeScript, 1497 | }, 1498 | "io.github.efogdev.mpris-timer": { 1499 | name: "Play Timer", 1500 | desc: "Native-feeling timers for GNOME", 1501 | lang: Lang.Go, 1502 | }, 1503 | "io.github.plrigaux.sysd-manager": { 1504 | name: "SysD Manager", 1505 | desc: "A GUI to manage systemd units", 1506 | lang: Lang.Rust, 1507 | }, 1508 | "com.github.flxzt.rnote": { 1509 | name: "Rnote", 1510 | desc: "Sketch and take handwritten notes", 1511 | lang: Lang.Rust, 1512 | }, 1513 | "io.github.qwersyk.Newelle": { 1514 | name: "Newelle", 1515 | desc: "Your AI-Powered System Assistant", 1516 | lang: Lang.Python, 1517 | }, 1518 | "net.krafting.SemantiK": { 1519 | name: "Semantik", 1520 | desc: "Find the secret word", 1521 | lang: Lang.Python, 1522 | }, 1523 | "net.krafting.Reddy": { 1524 | name: "Reddy", 1525 | desc: "Repost Reddit images to Lemmy", 1526 | lang: Lang.Python, 1527 | }, 1528 | "io.github.Q1CHENL.fig": { 1529 | name: "Fig", 1530 | desc: "Sleek GIF editor", 1531 | lang: Lang.Python, 1532 | }, 1533 | "io.github.alescdb.mailviewer": { 1534 | name: "MailViewer", 1535 | desc: "EML and MSG file viewer", 1536 | lang: Lang.Rust, 1537 | }, 1538 | "org.gnome.Gtranslator": { 1539 | name: "Translation Editor", 1540 | desc: "Translate and localize applications and libraries", 1541 | lang: Lang.C, 1542 | }, 1543 | "io.github.OkuBrowser.oku": { 1544 | name: "Oku", 1545 | desc: "A Web browser with an emphasis on local-first data storage", 1546 | lang: Lang.Rust, 1547 | }, 1548 | "io.github.dzheremi2.lrcmake-gtk": { 1549 | name: "LRCMake", 1550 | desc: "Sync lyrics of your loved songs", 1551 | lang: Lang.Python, 1552 | }, 1553 | "io.github.kriptolix.Poliedros": { 1554 | name: "Poliedros", 1555 | desc: "Poliedros is a multi-type dice roller", 1556 | lang: Lang.Python, 1557 | }, 1558 | "com.konstantintutsch.Lock": { 1559 | name: "Lock", 1560 | desc: "Process data with GnuPG", 1561 | lang: Lang.C, 1562 | }, 1563 | "org.gnome.baobab": { 1564 | name: "Disk Usage Analyzer", 1565 | desc: "Check folder sizes and available disk space", 1566 | lang: Lang.Vala, 1567 | }, 1568 | "org.gnome.design.Emblem": { 1569 | name: "Emblem", 1570 | desc: "Generate project avatars", 1571 | lang: Lang.Rust, 1572 | }, 1573 | "org.gnome.Contacts": { 1574 | name: "Contacts", 1575 | desc: "Manage your contacts", 1576 | lang: Lang.Vala, 1577 | }, 1578 | "org.gnome.Firmware": { 1579 | name: "Firmware", 1580 | desc: "Install firmware on devices", 1581 | lang: Lang.C, 1582 | }, 1583 | "org.gnome.font-viewer": { 1584 | name: "Fonts", 1585 | desc: "View fonts on your system", 1586 | lang: Lang.C, 1587 | }, 1588 | "org.gnome.Logs": { 1589 | name: "Logs", 1590 | desc: "View detailed event logs for the system", 1591 | lang: Lang.C, 1592 | }, 1593 | "org.gnome.Mahjongg": { 1594 | name: "Mahjongg", 1595 | desc: "Match tiles and clear the board", 1596 | lang: Lang.Vala, 1597 | }, 1598 | "org.gnome.TextEditor": { 1599 | name: "Text Editor", 1600 | desc: "Edit text files", 1601 | lang: Lang.C, 1602 | }, 1603 | "org.gnome.Polari": { 1604 | name: "Polari", 1605 | desc: "Talk to people on IRC", 1606 | lang: Lang.JavaScript, 1607 | }, 1608 | "page.tesk.Refine": { 1609 | name: "Refine", 1610 | desc: "Tweak various aspects of GNOME", 1611 | lang: Lang.Python, 1612 | }, 1613 | "org.gnome.dspy": { 1614 | name: "D-Spy", 1615 | desc: "Analyze D-Bus connections", 1616 | lang: Lang.C, 1617 | }, 1618 | "org.gnome.GHex": { 1619 | name: "GHex", 1620 | desc: "Inspect and edit binary files", 1621 | lang: Lang.C, 1622 | }, 1623 | "org.gnome.Calls": { 1624 | name: "Calls", 1625 | desc: "Make phone and SIP calls", 1626 | lang: Lang.C, 1627 | }, 1628 | "sm.puri.Chatty": { 1629 | name: "Chats", 1630 | desc: "Messaging application for mobile and desktop", 1631 | lang: Lang.C, 1632 | }, 1633 | "org.gnome.FileRoller": { 1634 | name: "File Roller", 1635 | desc: "Open, modify and create compressed archive files", 1636 | lang: Lang.C, 1637 | }, 1638 | "org.gnome.SoundRecorder": { 1639 | name: "Sound Recorder", 1640 | desc: "A simple, modern sound recorder for GNOME", 1641 | lang: Lang.TypeScript, 1642 | }, 1643 | "org.gnome.LightsOff": { 1644 | name: "Lights Off", 1645 | desc: "Turn off all the lights", 1646 | lang: Lang.Vala, 1647 | }, 1648 | "org.gnome.Mines": { 1649 | name: "Mines", 1650 | desc: "Clear hidden mines from a minefield", 1651 | lang: Lang.Vala, 1652 | }, 1653 | "org.gnome.Nibbles": { 1654 | name: "Nibbles", 1655 | desc: "Guide a worm around a maze", 1656 | lang: Lang.Vala, 1657 | }, 1658 | "org.gnome.Robots": { 1659 | name: "GNOME Robots", 1660 | desc: "Avoid the robots and make them crash into each other", 1661 | lang: Lang.Rust, 1662 | }, 1663 | "org.gnome.SwellFoop": { 1664 | name: "Swell Foop", 1665 | desc: "Clear the screen by removing groups of colored and shaped tiles", 1666 | lang: Lang.Vala, 1667 | }, 1668 | "re.sonny.Junction": { 1669 | name: "Junction", 1670 | desc: "Application chooser", 1671 | lang: Lang.JavaScript, 1672 | }, 1673 | "io.github.revisto.drum-machine": { 1674 | name: "Drum Machine", 1675 | desc: "Create and play drum beats", 1676 | lang: Lang.Python, 1677 | }, 1678 | "com.ranfdev.DistroShelf": { 1679 | name: "DistroShelf", 1680 | desc: "Manage Distrobox containers", 1681 | lang: Lang.Rust, 1682 | }, 1683 | "io.github.flattool.Ignition": { 1684 | name: "Ignition", 1685 | desc: "Manage startup apps and scripts", 1686 | lang: Lang.TypeScript, 1687 | }, 1688 | "io.github.nozwock.Packet": { 1689 | name: "Packet", 1690 | desc: "Share files easily", 1691 | lang: Lang.Rust, 1692 | }, 1693 | "be.alexandervanhee.gradia": { 1694 | name: "Gradia", 1695 | desc: "Quickly edit screenshots to put them better in context", 1696 | lang: Lang.Python, 1697 | }, 1698 | "io.github.cgueret.Scriptorium": { 1699 | name: "Scriptorium", 1700 | desc: "An all in one book editing tool for GNOME", 1701 | lang: Lang.Python, 1702 | }, 1703 | }; 1704 | 1705 | export default Object.entries(APP_MAP) 1706 | .map(([id, app]) => ({ id, ...app })) 1707 | .sort((a, b) => a.name.localeCompare(b.name)); 1708 | -------------------------------------------------------------------------------- /src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /src/pages/index.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import apps, { Lang } from "../apps.ts"; 3 | import "../styles/global.css"; 4 | --- 5 | 6 | 7 | 8 | 9 | 10 | 11 | Libadwaita Apps - A Curated List for Gnome 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 |

21 | Discover the Best LibAdwaita Apps in One Place 22 |

23 |

24 | Your Comprehensive List for LibAdwaita-Powered Linux Applications 25 |

26 |

29 | Uncover a curated selection of Linux apps utilizing libadwaita. 30 | Explore the latest and most exciting applications seamlessly 31 | integrating with LibAdwaita. 32 | 🚀 Explore. Find. Innovate. 🧑‍💻 33 |

34 |
35 |
38 | { 39 | apps.map((app) => ( 40 | 46 | 61 | {app.lang} 62 | 63 |
64 | {`${app.name} 70 | 71 | {app.name} 72 | 73 |

74 | {app.desc} 75 |

76 |
77 |
78 | )) 79 | } 80 |
81 |
82 | A total of {apps.length} apps using LibAdwaita 83 |
84 |
85 | 86 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /src/styles/global.css: -------------------------------------------------------------------------------- 1 | @import "tailwindcss"; 2 | -------------------------------------------------------------------------------- /tailwind.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | export default { 3 | content: ['./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}'], 4 | theme: { 5 | extend: {}, 6 | }, 7 | plugins: [], 8 | } 9 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig.json", 3 | "extends": "astro/tsconfigs/strictest", 4 | "compilerOptions": { 5 | "lib": ["ES2022"] 6 | } 7 | } 8 | --------------------------------------------------------------------------------