{"id":13494662,"url":"https://github.com/face-hh/webx","last_synced_at":"2025-10-07T16:32:18.354Z","repository":{"id":239602004,"uuid":"788088061","full_name":"face-hh/webx","owner":"face-hh","description":"An alternative for the World Wide Web - browse websites such as buss://yippie.rizz made in HTML, CSS and Lua. Custom web browser, custom HTML rendering engine, custom search engine, and more.","archived":true,"fork":false,"pushed_at":"2024-06-29T13:23:28.000Z","size":13225,"stargazers_count":1837,"open_issues_count":66,"forks_count":155,"subscribers_count":17,"default_branch":"master","last_synced_at":"2024-10-02T00:20:59.306Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/face-hh.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":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-17T18:47:48.000Z","updated_at":"2024-10-01T20:25:23.000Z","dependencies_parsed_at":"2024-05-31T12:34:44.107Z","dependency_job_id":"a4fb287a-1d41-4455-a8c6-d97b4eb9f80c","html_url":"https://github.com/face-hh/webx","commit_stats":null,"previous_names":["face-hh/webx"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/face-hh%2Fwebx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/face-hh%2Fwebx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/face-hh%2Fwebx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/face-hh%2Fwebx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/face-hh","download_url":"https://codeload.github.com/face-hh/webx/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235646139,"owners_count":19023376,"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-07-31T19:01:26.967Z","updated_at":"2025-10-07T16:32:13.023Z","avatar_url":"https://github.com/face-hh.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# Bussin Web X\n\nAn alternative to the World Wide Web (`http(s)://`), with:\n- its own **custom browser** written in Rust with [GTK](https://gtk.org/),\n- custom HTML, CSS and ***Lua*** engine (yup, **no javascript! 🎉**),\n- custom **DNS** allowing Top-Level domains such as `rizz`, `sigma`, `lol`, `dev`, etc,\n- and **search engine** at `buss://dingle.it`.\n\n![Preview of buss://register.it, the frontend for registering domains](.github_assets/image.png)\n\n# File structure\n- `/napture` - The source code for the **browser** Bussin Napture, used to view buss:// sites.\n- `/dns` - The source code for the **DNS** (Domain Name System), used for the API at `https://api.buss.lol`\n- `/dingle` - The source code for the official **search engine** (API) of Web X. For the frontend, check [dingle frontend repo](https://github.com/face-hh/dingle-frontend)\n- [registrar](https://github.com/face-hh/webx-registrar) - The source code for `buss://register.it`, frontend for `https://api.buss.lol` made for Bussin Web X. This can also serve as an example for how buss:// sites are made.\n\n# Download and Install\n## Arch Linux\n- `yay -S napture`, it's available on AUR.\n## Nix[OS]\n\n**Flakes**: The repository provides a flake which exposes an overlay providing the webx package, so you could just add the input in your flake.nix file\n\n```nix\n{\n    inputs = {\n        webx.url = \"github:face-hh/webx\";\n    };\n}\n```\n\nThen add it to your overlays and install it\n\n```nix\n{ inputs, ... }: {\n    nixpkgs.overlays = [\n        inputs.webx.overlays.x86_64-linux.default\n    ];\n}\n```\n\n\u003e For now, only tested on x86_64-linux, but may work on others aswell, just change the arch\n\nAdd it to either home.packages (home manager) or environment.systemPackages (global packages).\n\n```nix\nhome.packages = with pkgs; [\n    webx\n];\n```\n\nThen you could just launch it using `webx` in your terminal.\n\n## Linux\n- For now, you have to download [Rust](https://www.rust-lang.org/tools/install). Then, you just need to open `install-linux.sh` in the `napture` folder as an executable (if you can't execute it, first do `sudo chmod +x ./install-linux.sh`, then you should be able to install).\n## macOS\n- For now, you have to download [Rust](https://www.rust-lang.org/tools/install) and [Homebrew](https://brew.sh). Then, you just need to open `install-macos.sh` in the `napture` folder as an executable (if you can't execute it, first do `chmod +x ./install-macos.sh`, then you should be able to install).\n## Windows\n- Install the executable from the release tab. It's a self-extractor with WinRAR because it has a lot of DLLs.\n\n# Download and Compile\n## Linux\nInstall [Rust](https://www.rust-lang.org/tools/install) if you haven't already.\nIt should work by default, but if you're getting errors such as \"missing PC files\", you should Google it. Most likely you just have to install a library\n\n## Windows\nWelcome to Gaming OS 🙂\n1. Download [Rust](https://www.rust-lang.org/tools/install)\n2. Download GNU target: `rustup toolchain install stable-gnu \u0026\u0026 rustup default stable-gnu`\n3. Download [MSYS32](https://www.msys2.org/)\n4. Open MSYS32 MINGW32\n5. Run: `pacman -Syu` just in case.\n6. Run `pacman -S mingw-w64-x86_64-toolchain base-devel mingw-w64-x86_64-gtk4 mingw-w64-x86_64-gettext mingw-w64-x86_64-libxml2 mingw-w64-x86_64-librsvg mingw-w64-x86_64-pkgconf mingw-w64-x86_64-gcc mingw-w64-x86_64-libadwaita mingw-w64-x86_64-lua`\n7. Go to `Settings` -\u003e `Search` and open `Advanced system settings` -\u003e Click on `Environment variables` (or just search \"path\")\n8. Select `Path` -\u003e Click on `Edit` -\u003e Add the following three entries: `C:\\msys64\\mingw64\\include`, `C:\\msys64\\mingw64\\bin`, and `C:\\msys64\\mingw64\\lib`.\n9. Open a terminal in the folder with `napture/`, run `cargo run`.\n\n## MacOS (Apple Silicon)\n1. Install [Rust](https://www.rust-lang.org/tools/install)\n2. Install [Homebrew](https://brew.sh/)\n3. Install PKG_CONFIG_PATH and ensure it's set in your path\n\n```bash\nbrew install pkg-config\nwhich pkg-config\n```\n\n3.1. Should return something like `/opt/homebrew/bin/pkg-config`. If it doesn't, add it to your path.\n\n4. Install GTK and Necessary Libraries\n\n```bash\nbrew install glib\nbrew install gobject-introspection\nbrew install graphene\nbrew install gdk-pixbuf\nbrew install pango\nbrew install gtk+4\nbrew install libadwaita\nbrew install lua@5.4\n\nbrew --prefix glib\nbrew --prefix gobject-introspection\nbrew --prefix graphene\nbrew --prefix gdk-pixbuf\nbrew --prefix pango\nbrew --prefix gtk4\nbrew --prefix libadwaita\nbrew --prefix lua@5.4\n```\n\n4.1 Validate if the libraries are installed adequately and set in PKG_CONFIG_PATH, command below should return the path to the libraries without any errors.\n\n```bash\npkg-config --libs --cflags glib-2.0\npkg-config --libs --cflags gobject-2.0\npkg-config --libs --cflags graphene-gobject-1.0\npkg-config --libs --cflags gdk-pixbuf-2.0\npkg-config --libs --cflags pango\npkg-config --libs --cflags gtk4\npkg-config --libs --cflags libadwaita-1\npkg-config --libs --cflags lua-5.4\n```\n\n5. Run `cargo run` in the `napture/` directory.\n\n```bash\ncd napture\n\ncargo build\n# or\ncargo run\n```\n\n# Register website\nPlease follow [How to code a Buss site](https://facedev.gitbook.io/bussin-web-x-how-to-make-a-website/) for a better visual guide.\n\nSo you wish to publish a website to Web X? Great! Let's go through the rules:\n\n1. If your website contains Not Safe For Work material of any kind, it will be removed.\n2. If your website contains frequent racial slurs, references made in bad faith to tragic events, racism towards other races, or anything of that kind, it will be removed.\n3. If your website is dedicated to the publication of private information, it will be removed.\n4. If your website is actively engaged in leaking information about incoming traffic (i.e., posting the IPs of users), it will be removed.\n5. If your website displays content that violates law or regulations, including but not limited to, piracy, hacking, or illegal activities such as drug usage, will result in a removal.\n6. If your website contains or distributes malware, viruses, or any other harmful software, it will be removed.\n7. If your website is dedicated to harassment, bullying, or targeted attacks against individuals or groups, it will be removed.\n8. If your website infringes upon intellectual property rights of others, it will be removed.\n9. If your website is involved in fradulent activities, scams, or deceptive practices, it will be removed.\n10. If your website contains content that encourages harmful behavior, including self-harm, suicide, substance abuse, or dangerous challanges, it will be removed.\n\nBy publishing content to this platform (\"Bussin Napture\"/\"Bussin Web X\"), you agree to comply with all rules and regulations set forth by the administrators. The administrators reserve the right to interpret and enforce these rules at their discretion. To report websites that are not following the listed rules, please contact `FaceDev` on either [Twitter](https://twitter.com/facedevstuff) or [Discord](https://discord.gg/cNwWvdWj42).\n\nNow, to register a website, navigate to `buss://register.it` **through Bussin Napture**.\n\nYou will see this interface.\n![Preview of buss://register.it, the frontend for registering domains](.github_assets/image.png)\n\nWhat you need is the **Publish** section.\n- for the domain name, choose whatever you want. (example: `duckduckgo`)\n- for the TLD, choose one displayed above the `Result will appear...` label. (example: `rizz`)\n- for the IP, you can either use:\n   - an IP that serves `/index.html` on port 80\n   - a GitHub repository that has `index.html`, **outside any folder**. (example: [registrar](https://github.com/face-hh/webx-registrar)), ***with the `main` default branch***.\n\nDon't worry! The IP doesn't have to be valid, and you can save the domain for later!\n\n**WARNING**: After creating the domain, you'll be shown a **secret key**. Please make sure to save it as you will need it to Update/Delete your domain.\n\n# Run website locally\nBussin Napture fetches `index.html` at whatever path you give it. For example, if you enter `http://localhost:3000`, Napture will fetch `http://localhost:3000/index.html`. From the index.html, if you have further `\u003clink\u003e` or `\u003cscript\u003e` imports, they will be fetched at `http://localhost:3000/file.(css|lua)`.\n\n1. To locally test a website, you can use something like [Python](https://www.python.org/):\n```bash\npython -m http.server 3000\n```\n2. CLI support with `./napture file:///home/path/to/folder`.\n3. Enter `file:///home/path/to/folder` in the search bar.\n\n# HTML guide\nThe supported tags are: `head`, `title`, `link`, `meta`, `script`, `h1`-`h6`, `div`, `p`, `ul`, `ol`, `li`, `div`, `button`, `hr`, `img`, `input`, `textarea`, `button`, `select`, `option`. Keep in mind their syntax may be different if you're already familiar with HTML5 (i.e. `link` is used for the tab icon). Please check [registrar](https://github.com/face-hh/webx-registrar) or `/napture/test/index.html` for examples.\n\n# CSS guide\nThe supported properties are:\n- `border-color`\n- `border-width`\n- `border-style`\n- `border-radius`\n- `padding`\n- `direction` (row | column)\n- `align-items`: (fill | start | center | end)\n- `gap`\n- `color`\n- `font-size`\n- `font-height`\n- `font-family`\n- `font-weight` (ultralight | light | normal | bold | ultrabold | heavy)\n- `underline` (none | single | double | low | error)\n- `underline-color`\n- `overline` (none | single)\n- `overline-color`\n- `strikethrough` (false | true)\n- `strikethrough-color`\n- `margin-left`\n- `margin-right`\n- `margin-top`\n- `margin-bottom`\n- `width` (only on `\u003cinput\u003e` \u0026 `\u003ctextarea\u003e`)\n- `height` (only on `\u003cinput\u003e` \u0026 `\u003ctextarea\u003e`)\n\nProperties whose value type wasn't specified are either measured in `px`, or are colors (`#fff`, `red`, etc.)\n\n# Lua guide\nFor those coming from the traditional web...\n```diff\n- 1. const test = document.querySelector(\".classExample\");\n- 2. test.textContent = \"abc\";\n- 3. test.href = \"https://ok.test\"\n- 4. console.log(test.href)\n- 5. test.addEventListener(\"click\", () =\u003e {})\n- 6. test.addEventListener(\"submit\", () =\u003e {})\n+ 1. local test = get(\"classExample\")\n+ 2. test.set_content(\"abc\");\n+ 3. test.set_href(\"buss://register.it\")\n+ 4. print(test.get_href())\n+ 5. test.on_click(function())\n+ 6. test.on_submit(function())\n```\n\nI believe you'd get a better understand if you explored the [registrar](https://github.com/face-hh/webx-registrar) repository's `script.lua`.\n\nNOTE: Bussin Napture doesn't support `buss://` redirects yet. They will be added in the official release.\n\nMade by FaceDev with pure utter hatred and undesire :D","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fface-hh%2Fwebx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fface-hh%2Fwebx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fface-hh%2Fwebx/lists"}