{"id":15723626,"url":"https://github.com/rggh/guissh","last_synced_at":"2025-05-13T04:33:33.018Z","repository":{"id":234972557,"uuid":"789835799","full_name":"RGGH/guissh","owner":"RGGH","description":"SSH GUI made with iced","archived":false,"fork":false,"pushed_at":"2024-05-02T09:04:01.000Z","size":383,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-01T06:26:39.379Z","etag":null,"topics":["gui","iced","rust","ssh2","tokio-rs"],"latest_commit_sha":null,"homepage":"https://youtu.be/X9Hebeionj8","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RGGH.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-04-21T17:25:02.000Z","updated_at":"2024-12-25T07:51:29.000Z","dependencies_parsed_at":"2024-05-02T10:25:34.509Z","dependency_job_id":"a72300b8-6989-44fa-9e27-fdc50b34c0fe","html_url":"https://github.com/RGGH/guissh","commit_stats":null,"previous_names":["rggh/guissh"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RGGH%2Fguissh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RGGH%2Fguissh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RGGH%2Fguissh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RGGH%2Fguissh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RGGH","download_url":"https://codeload.github.com/RGGH/guissh/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253877265,"owners_count":21977632,"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":["gui","iced","rust","ssh2","tokio-rs"],"created_at":"2024-10-03T22:12:36.184Z","updated_at":"2025-05-13T04:33:32.992Z","avatar_url":"https://github.com/RGGH.png","language":"Rust","readme":"[![Rust](https://github.com/RGGH/guissh/actions/workflows/rust.yml/badge.svg)](https://github.com/RGGH/guissh/actions/workflows/rust.yml)\n\n# iced.rs\n\n[https://github.com/RGGH/iced_tutorial](https://github.com/RGGH/iced_tutorial)\n\n### [YouTube iced GUI video](https://youtu.be/X9Hebeionj8)\n\n![screenshot](resources/screenshot.png)\n\n## Examples\n\n[https://github.com/iced-rs/awesome-iced?tab=readme-ov-file](https://github.com/iced-rs/awesome-iced?tab=readme-ov-file)\n\n[https://github.com/RGGH/iced_tutorial/blob/main/tutorial/first_app.md](https://github.com/RGGH/iced_tutorial/blob/main/tutorial/first_app.md)\n\n## Getting Started\n\nAn Iced program is built with several key parts that work together to define the application's functionality and appearance. Here's a breakdown of the terms:\n\n**Imports:**\n\n- Similar to other programming languages, `imports` bring functionality from external libraries like Iced itself or other helper libraries into your program.\n\n**fn main:**\n\n- This is the main function where your program execution starts. In Iced, it typically sets up the initial state of your application and launches the UI loop.\n\n**struct:**\n\n- Structures define custom data types that hold related pieces of information. In Iced, you'll often create structs to represent the state of your UI elements like buttons or text fields.\n\n**theme**:\n\n```rust\nfn theme(\u0026self) -\u003e iced::Theme {\n    iced::Theme::Dracula\n}\n```\n\n**impl:**\n\n- The `impl` keyword is used to define methods that act on your structs. These methods can handle user interactions, update the state, or perform calculations related to your UI elements.\n- eg\n\n```rust\nimpl Sandbox for GroceryList {\n```\n\n**update:**\n\n- The `update` function is called whenever the user interacts with your UI (like clicking a button or typing in a field). It receives the current application state and the event that triggered the update. Here, you update the state based on the user interaction.\n\n```rust\n    fn update(\u0026mut self, message: Self::Message) {\n        match message {\n            // Update logic\n        }\n    }\n\n    fn view(\u0026self) -\u003e iced::Element\u003c'_, Self::Message\u003e {\n        // View logic\n    }\n```\n\n**view:**\n\n- The `view` function takes the current application state and translates it into the visual representation of your UI. This function defines how different UI elements are arranged and displayed on the screen.\n\n**title:**\n\n- The `title` is a string that sets the title of your application window.\n  -------------------------------------------------------------------------\n\n### These parts work together in a loop:\n\n- **Initialization:** The `fn main` sets up the initial state and launches the UI loop.\n- **Event Handling:** When a user interacts with the UI, an event is generated.\n- **Update:** The `update` function receives the event and updates the application state accordingly.\n\n```rust\n    fn update(\u0026mut self, **message**: Self::Message) {\n```\n\n- **View:** The `view` function takes the updated state and generates the new UI visuals.\n\n  (contains rows and columns)\n- **Render:** The updated UI is rendered on the screen.\n- **Repeat:** This loop continues, constantly updating the UI based on user interactions and state changes.\n\nIced provides a clean way to separate the logic of your application (`update`) from the visual representation (`view`) making your code more maintainable and easier to understand.\n\n## How to run in main (Sandbox version)\n\n```rust\nstruct **GroceryList** {\n\tgrocery_items: Vec\u003cString\u003e,\n\tinput_value: String,\n}\n\n.\n.\n.\n\nfn main() -\u003e iced::Result {\n    **GroceryList**::run(Settings::default())\n}\n```\n\nIf you are a just getting started with the library, this trait offers a simpler interface.\n\nUnlike an application, Sandbox cannot run any asynchronous actions or be initialized with some external flags. However, both traits are very similar and upgrading from a sandbox is very straightforward.\n\nTherefore, it is recommended to always start by implementing this trait and upgrade only once necessary.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frggh%2Fguissh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frggh%2Fguissh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frggh%2Fguissh/lists"}