├── .gitignore ├── .gitattributes ├── repo-imgs ├── s-desc.png ├── s-hover1.png ├── s-hover2.png ├── s-interfaces.png ├── s-percentage.png ├── s-scroll.png ├── s-filtering-excl.png └── s-filtering-incl.png ├── .gitmodules ├── package.json ├── minify.js ├── web ├── base.css ├── index.html ├── page.css └── page.js ├── .github └── workflows │ └── deploy-pages.yml ├── prepare.sh ├── README.md ├── prepare-data.js └── LICENSE /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | /dist 3 | .vscode 4 | 5 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.jpg filter=lfs diff=lfs merge=lfs -text 2 | *.png filter=lfs diff=lfs merge=lfs -text 3 | -------------------------------------------------------------------------------- /repo-imgs/s-desc.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:2f5dff760b26fadaca83afd0389d1b6d2d4968c96ad9ff6e2638253c319b8e63 3 | size 347975 4 | -------------------------------------------------------------------------------- /repo-imgs/s-hover1.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:4dec2597e8e43d27a863a3f0eb82f41134aa68ca22ea52f1a83290db28f49f8b 3 | size 331554 4 | -------------------------------------------------------------------------------- /repo-imgs/s-hover2.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:93f5d4c5cd42150c44c587e1ddc46a0b18c28d828d87577af6dad41d217b6c45 3 | size 331193 4 | -------------------------------------------------------------------------------- /repo-imgs/s-interfaces.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:3545a409df3d7d480530efe28c32ef2fd48b95c1826c23261b5f3c379b156f72 3 | size 73731 4 | -------------------------------------------------------------------------------- /repo-imgs/s-percentage.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:896671891d570107c6a2cdc3cd9531bb4509f120678ca3c308e7122cb99304a1 3 | size 47772 4 | -------------------------------------------------------------------------------- /repo-imgs/s-scroll.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9748193a62c306f7ea96fe86168607a3802025efccfebf7d54f82a9aaebb4e60 3 | size 414225 4 | -------------------------------------------------------------------------------- /repo-imgs/s-filtering-excl.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:8c6d287ded51b2df40432f3bcf38d4da23d4cb6ee61e523a270f8d33c0e327fa 3 | size 280650 4 | -------------------------------------------------------------------------------- /repo-imgs/s-filtering-incl.png: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a3c2af716e72501b5bb5e2552d3cab07de03fd89f2e87d3becde155d3039bbeb 3 | size 233771 4 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "wayland-explorer"] 2 | path = wayland-explorer 3 | url = https://github.com/vially/wayland-explorer.git 4 | branch = main 5 | ignore = dirty 6 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "wayland-explorer-listings", 3 | "devDependencies": { 4 | "@types/node": "^16.7.10", 5 | "clean-css": "^5.3.3", 6 | "terser": "^5.39.1" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /minify.js: -------------------------------------------------------------------------------- 1 | const process = require("process") 2 | const fs = require("fs") 3 | 4 | const { minify: jsMinify } = require("terser"); 5 | const CleanCSS = require('clean-css'); 6 | 7 | const cssMinifier = new CleanCSS({}) 8 | const jsMinifyCfg = { 9 | compress: { 10 | booleans_as_integers: true, 11 | passes: 3, 12 | }, 13 | mangle: { 14 | module: true, 15 | properties: false, 16 | }, 17 | ecma: 2025, 18 | enclose: true, 19 | toplevel: true, 20 | } 21 | 22 | async function processFile(logPrefix, file, action) { 23 | console.log(`+ ${logPrefix}: ${file}`) 24 | const input = fs.readFileSync(file, { encoding: "utf-8" }) 25 | fs.writeFileSync(file, await action(input)) 26 | } 27 | 28 | async function main() { 29 | for (const file of process.argv.slice(2)) { 30 | const stat = fs.statSync(file) 31 | if (stat.isDirectory()) 32 | console.log("- skipping directory:", file) 33 | else if (file.match(/\.css$/i)) 34 | processFile("css", file, (data) => cssMinifier.minify(data).styles) 35 | else if (file.match(/\.[mc]?js$/i)) 36 | processFile("js", file, async (data) => (await jsMinify(data, jsMinifyCfg)).code) 37 | else 38 | console.log("- skipping unknown:", file) 39 | } 40 | 41 | console.log("minify finished") 42 | } 43 | 44 | if (require.main === module) 45 | main() 46 | -------------------------------------------------------------------------------- /web/base.css: -------------------------------------------------------------------------------- 1 | 2 | body { 3 | --bg: rgb(250 250 250); 4 | --font-sans: "Noto Sans", sans-serif; 5 | --font-mono: "Source Code Pro", monospace; 6 | 7 | padding: 0; 8 | margin: 0; 9 | font-family: var(--font-sans); 10 | background-color: var(--bg); 11 | } 12 | 13 | .page-wrapper { 14 | width: 100%; 15 | min-width: max-content; 16 | display: flex; 17 | flex-flow: column nowrap; 18 | align-items: center; 19 | } 20 | 21 | .page-container { 22 | min-width: max-content; 23 | } 24 | 25 | .loading-placeholder { 26 | margin: 50px 0; 27 | display: flex; 28 | flex-flow: column nowrap; 29 | align-items: center; 30 | row-gap: 10px; 31 | min-width: 50vw; 32 | } 33 | 34 | .loading-placeholder .i-m { 35 | font-size: 1.5em; 36 | font-weight: 600; 37 | } 38 | 39 | .loading-placeholder .i-s { 40 | font-size: 0.75em; 41 | font-weight: 400; 42 | } 43 | 44 | .footer { 45 | display: flex; 46 | flex-flow: column nowrap; 47 | row-gap: 20px; 48 | margin: 40px 10px; 49 | width: 100%; 50 | } 51 | 52 | .footer .i-heading { 53 | font-size: 1.2em; 54 | font-weight: 600; 55 | color: #353535; 56 | } 57 | 58 | .footer .i-info { 59 | display: flex; 60 | flex-flow: column nowrap; 61 | color: #202020; 62 | font-size: 0.8em; 63 | } 64 | 65 | .footer .i-info a { 66 | color: inherit; 67 | text-decoration: underline; 68 | } 69 | 70 | .footer .a-mono { 71 | font-family: var(--font-mono); 72 | } 73 | -------------------------------------------------------------------------------- /.github/workflows/deploy-pages.yml: -------------------------------------------------------------------------------- 1 | name: Build and deploy to github pages 2 | 3 | permissions: 4 | contents: read 5 | pages: write 6 | id-token: write 7 | 8 | on: 9 | push: 10 | branches: 11 | - master 12 | workflow_dispatch: 13 | inputs: 14 | pullWE: 15 | description: "Pull wayland-explorer submodule" 16 | type: boolean 17 | default: false 18 | required: true 19 | schedule: 20 | - cron: '0 2 * * *' 21 | 22 | jobs: 23 | build: 24 | runs-on: ubuntu-24.04 25 | steps: 26 | - name: Checkout 27 | uses: actions/checkout@v4 28 | - uses: actions/setup-node@v4 29 | with: 30 | node-version: 22 31 | cache: 'npm' 32 | - name: NPM install 33 | run: npm install 34 | - name: Setup Pages 35 | uses: actions/configure-pages@v5 36 | - name: Check trigger event 37 | if: ${{ github.event_name == 'schedule' || inputs.pullWE }} 38 | run: echo "WE_PULL=1" >>"$GITHUB_ENV" 39 | - name: Generate dist 40 | run: | 41 | ./prepare.sh 42 | - name: Upload artifact 43 | uses: actions/upload-pages-artifact@v3 44 | with: 45 | path: ./dist 46 | 47 | deploy-pages: 48 | environment: 49 | name: github-pages 50 | url: ${{ steps.deployment.outputs.page_url }} 51 | runs-on: ubuntu-latest 52 | needs: build 53 | steps: 54 | - name: Deploy to GitHub Pages 55 | id: deployment 56 | uses: actions/deploy-pages@v4 57 | -------------------------------------------------------------------------------- /web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 |
6 |
7 | A convenient way to explore current Wayland protocols and their support status.
8 | Try it out on GitHub Pages
9 |
16 | Click the document icon to view the protocol description and author information directly in the table.
17 | Or click its name to read the full description and API specification on Wayland explorer
18 |
23 | Click the bullet-list icon to view the list of interfaces for each protocol, as well as the full compositor support matrix for each interface.
24 | If a compositor has only partial support, interface list will expand automatically.
25 | To view the complete API specification, click on a protocol name to go to Wayland explorer
26 |
35 | See what percentage of listed protocols each compositor supports.
36 | You can exclude non-standard protocols from these calculations by toggling the option under the Settings button in the header
37 |
42 |
43 |
56 |
57 |