{"id":18224008,"url":"https://github.com/james-beans/wi4l","last_synced_at":"2025-04-08T02:52:18.214Z","repository":{"id":260766651,"uuid":"882284637","full_name":"james-beans/Wi4l","owner":"james-beans","description":"Litterally just a single window implemented in 4 languages.","archived":true,"fork":false,"pushed_at":"2024-12-29T14:33:09.000Z","size":39833,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-08T02:52:11.972Z","etag":null,"topics":["c","cpp","python","rust","wi4l"],"latest_commit_sha":null,"homepage":"","language":"C++","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/james-beans.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,"publiccode":null,"codemeta":null}},"created_at":"2024-11-02T12:07:10.000Z","updated_at":"2025-03-08T15:39:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"7395586b-b796-4a4c-a867-e277fd1578f1","html_url":"https://github.com/james-beans/Wi4l","commit_stats":null,"previous_names":["james-beans/wi4l"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/james-beans%2FWi4l","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/james-beans%2FWi4l/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/james-beans%2FWi4l/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/james-beans%2FWi4l/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/james-beans","download_url":"https://codeload.github.com/james-beans/Wi4l/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247767250,"owners_count":20992541,"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":["c","cpp","python","rust","wi4l"],"created_at":"2024-11-04T01:05:48.118Z","updated_at":"2025-04-08T02:52:18.188Z","avatar_url":"https://github.com/james-beans.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Wi4l\n## W - window\n## i - in\n## 4 - 4\n## l - languages\n\n\u003chr /\u003e\n\n\u003e [!TIP]\n\u003e The implementations of the window in each language might be a bit different. But they should be similar.\n\n\u003chr /\u003e\n\n\u003e [!WARNING]\n\u003e This is tested on Windows 11 and Debian 12. This will not work on MacOS but might on other Linux distros.\n\n\u003e [!WARNING]\n\u003e Linux files do not have the `.exe` extension. The windows executables do.\n\n### Links to the code and executables:\n- [C Files](langs/C/)\n- [C++ Files](langs/C++/)\n- [Rust Files](langs/rust/)\n- [Python Files](langs/Python/)\n\n### Known issues:\n#### Windows:\n- C: \n\t- When the window is closed the program will still be running in the background.\n- C++ :\n\t- None known.\n- Rust:\n\t- None known.\n- Python:\n\t- None known.\n#### Linux:\n- C: \n\t- None known.\n- C++ :\n\t- None known.\n- Rust:\n\t- None known.\n- Python:\n\t- None known.\n\n\u003chr /\u003e\n\n### Litterally just a single window implemented in 4 languages.\n- All code and executables will be in the [langs]() folder to use.\n- This will be implemented in:\n\t- C using [Windows.h](https://en.wikipedia.org/wiki/Windows.h), X11/xlib.h and [unistd.h](https://en.wikipedia.org/wiki/Unistd.h) for Linux\n\t- C++ using [Windows.h](https://en.wikipedia.org/wiki/Windows.h) and X11/xlib.h for Linux\n\t- Rust using [glfw](https://docs.rs/glfw/latest/glfw/)\n\t- Python using [Tkinter](https://docs.python.org/3/library/tkinter.html#)\n \n \u003chr /\u003e\n\n\u003e [!WARNING]\n\u003e To compile the executables made with Python you will need to install [Pyinstaller](https://pyinstaller.readthedocs.io/en/stable/index.html) or [Nuitka](https://nuitka.net/) for compiling the Python files.\n\n\u003e [!WARNING]\n\u003e To compile the Windows Rust version you will need to do the following steps:\n1. Install [Rust from the website](https://www.rust-lang.org/learn/get-started)\n2. Install the nightly version of rust with the command `rustup install nightly`\n3. Set nightly as the default toolchain with `rustup default nightly`\n4. Run the compile command: `cargo build` or `cargo run`\n\n### Command used to compile in each language:\n#### Windows:\n- C: `gcc main.c -o main.exe -mwindows`\n- C++ : `g++ -DUNICODE -D_UNICODE main.cpp -o main.exe -mwindows`\n- Rust: `cargo run` or `cargo build`\n- Python: `pyinstaller --onefile --windowed main.py` or `nuitka --onefile --windows-console-mode=disable --enable-plugin=tk-inter main.py`\n\n\u003e [!WARNING]\n\u003e To compile the Rust version for Linux you will need to do a few extra steps below:\n1. Install Rust with the curl command `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`\n2. Install the nightly version of Rust with the command `rustup install nightly`\n3. Set nightly as the default toolchain with `rustup default nightly`\n4. Update the package list with `sudo apt update`\n5. Install dependencies with `sudo apt install cmake libglfw3-dev libglew-dev libglm-dev libxinerama-dev libgl1-mesa-dev libglu1-mesa-dev libxcursor-dev libxi-dev`\n6. Run the compile command: `cargo build` or `cargo run`\n\n\u003e [!WARNING]\n\u003e To compile the C++ version for Linux you will need to do a few extra steps below:\n1. Update the package manager list (apt): `sudo apt update`\n2. Install needed packages: sudo apt install libx11-dev xorg x11-apps libwayland-dev\n3. Run the compile command: `g++ main.cpp -o main -lX11 -lwayland-client`\n\n#### Linux (tested on Debian):\n- C: `gcc main.c -o main -lX11`\n- C++ : `g++ main.cpp -o main -lX11 -lwayland-client`\n- Rust: `cargo run` or `cargo build`\n- Python: `pyinstaller --onefile --windowed main.py` or `nuitka --onefile --windows-console-mode=disable --enable-plugin=tk-inter main.py`\n\n\u003chr /\u003e \n\n# Disclamers:\n- All implementations will not be tested on MacOS or any other version of Linux apart from Debian.\n\t- I will not test if it works. But if it does please tell me through an issue.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjames-beans%2Fwi4l","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjames-beans%2Fwi4l","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjames-beans%2Fwi4l/lists"}