diff --git a/v2/cmd/wails/internal/version.txt b/v2/cmd/wails/internal/version.txt index 4c83680fa..62fd0835e 100644 --- a/v2/cmd/wails/internal/version.txt +++ b/v2/cmd/wails/internal/version.txt @@ -1 +1 @@ -v2.8.0 \ No newline at end of file +v2.8.1 \ No newline at end of file diff --git a/website/src/pages/changelog.mdx b/website/src/pages/changelog.mdx index 38ade30b7..6a7878913 100644 --- a/website/src/pages/changelog.mdx +++ b/website/src/pages/changelog.mdx @@ -13,12 +13,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - `Security` in case of vulnerabilities. ## [Unreleased] + +## v2.8.1 - 2024-04-11 + +### Added + - Added docs to help fix NixOs/Wayland font-size css issue. Added by @atterpac in [PR](https://github.com/wailsapp/wails/pull/3268) - Added -m (skip `go mod tidy`) flag to dev command by @te5se in [PR](https://github.com/wailsapp/wails/pull/3275) - Added mac option `DisableZoom` to remove zoom button. Added by @wizzymore in [PR](https://github.com/wailsapp/wails/pull/3289) -- Changed Create a project with changing the default name to the project’s name. Changed by [@Twacqwq](https://github.com/Twacqwq) in [PR](https://github.com/wailsapp/wails/pull/3303) -- Fix some typos in comments. Changed by [@reallylowest](https://github.com/reallylowest) in [PR](https://github.com/wailsapp/wails/pull/3357) + +### Fixed + +- Fixed some typos in comments. Changed by [@reallylowest](https://github.com/reallylowest) in [PR](https://github.com/wailsapp/wails/pull/3357) - Fixed an issue where the destination file was not properly closed after copying. Changed by [@testwill](https://github.com/testwill) in [PR](https://github.com/wailsapp/wails/pull/3384) +- Fixed an issue where `xattr` calls were not working. Fixed by [@leaanthony](https://github.com/wailsapp/wails/pull/3328) + +### Changed + +- Changed Create a project with changing the default name to the project’s name. Changed by [@Twacqwq](https://github.com/Twacqwq) in [PR](https://github.com/wailsapp/wails/pull/3303) ## v2.8.0 - 2024-02-08 diff --git a/website/versioned_docs/version-v2.7.0/appendix/_category_.json b/website/versioned_docs/version-v2.7.0/appendix/_category_.json deleted file mode 100644 index 83af4ca28..000000000 --- a/website/versioned_docs/version-v2.7.0/appendix/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Appendix", - "position": 70 -} diff --git a/website/versioned_docs/version-v2.7.0/community/_category_.json b/website/versioned_docs/version-v2.7.0/community/_category_.json deleted file mode 100644 index 524986e1e..000000000 --- a/website/versioned_docs/version-v2.7.0/community/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Community", - "position": 50 -} diff --git a/website/versioned_docs/version-v2.7.0/community/links.mdx b/website/versioned_docs/version-v2.7.0/community/links.mdx deleted file mode 100644 index fe8b51dd0..000000000 --- a/website/versioned_docs/version-v2.7.0/community/links.mdx +++ /dev/null @@ -1,27 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Links - -This page serves as a list for community related links. Please submit a PR (click `Edit this page` at the bottom) -to submit links. - -## Awesome Wails - -The [definitive list](https://github.com/wailsapp/awesome-wails) of links related to Wails. - -## Support Channels - -- [Wails Discord Server](https://discord.gg/JDdSxwjhGf) -- [Github Issues](https://github.com/wailsapp/wails/issues) -- [v2 Beta Discussion Board](https://github.com/wailsapp/wails/discussions/828) - -## Social Media - -- [Twitter](https://twitter.com/wailsapp) -- [Wails Chinese Community QQ Group](https://qm.qq.com/cgi-bin/qm/qr?k=PmIURne5hFGNd7QWzW5qd6FV-INEjNJv&jump_from=webapi) - Group number: 1067173054 - -## Other Tutorials and Articles - -- [Building of Bulletin Board](https://blog.customct.com/building-bulletin-board) diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/_category_.json b/website/versioned_docs/version-v2.7.0/community/showcase/_category_.json deleted file mode 100644 index 276e283b7..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Showcase", - "position": 1 -} diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/bulletinboard.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/bulletinboard.mdx deleted file mode 100644 index 37be75135..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/bulletinboard.mdx +++ /dev/null @@ -1,10 +0,0 @@ -# BulletinBoard - -```mdx-code-block -

- -
-

-``` - -The [BulletinBoard](https://github.com/raguay/BulletinBoard) application is a versital message board for static messages or dialogs to get information from the user for a script. It has a TUI for creating new dialogs that can latter be used to get information from the user. It's design is to stay running on your system and show the information as needed and then hide away. I have a process for watching a file on my system and sending the contents to BulletinBoard when changed. It works great with my workflows. There is also an [Alfred workflow](https://github.com/raguay/MyAlfred/blob/master/Alfred%205/EmailIt.alfredworkflow) for sending information to the program. The workflow is also for working with [EmailIt](https://github.com/raguay/EmailIt). diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/cfntracker.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/cfntracker.mdx deleted file mode 100644 index 8fab23b75..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/cfntracker.mdx +++ /dev/null @@ -1,39 +0,0 @@ -# CFN Tracker - -```mdx-code-block -

- -
-

-``` - -[CFN Tracker](https://github.com/williamsjokvist/cfn-tracker) - Track any Street -Fighter 6 or V CFN profile's live matches. Check -[the website](https://cfn.williamsjokvist.se/) to get started. - -## Features - -- Real-time match tracking -- Storing match logs and statistics -- Support for displaying live stats to OBS via Browser Source -- Support for both SF6 and SFV -- Ability for users to create their own OBS Browser themes with CSS - -### Major tech used alongside Wails - -- [Task](https://github.com/go-task/task) - wrapping the Wails CLI to make - common commands easy to use -- [React](https://github.com/facebook/react) - chosen for its rich ecosystem - (radix, framer-motion) -- [Bun](https://github.com/oven-sh/bun) - used for its fast dependency - resolution and build-time -- [Rod](https://github.com/go-rod/rod) - headless browser automation for - authentication and polling changes -- [SQLite](https://github.com/mattn/go-sqlite3) - used for storing matches, - sessions and profiles -- [Server-sent events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events) - - a http stream to send tracking updates to OBS browser sources -- [i18next](https://github.com/i18next/) - with backend connector to serve - localization objects from the Go layer -- [xstate](https://github.com/statelyai/xstate) - state machines for auth - process and tracking diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/emailit.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/emailit.mdx deleted file mode 100644 index c1817b70f..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/emailit.mdx +++ /dev/null @@ -1,10 +0,0 @@ -# EmailIt - -```mdx-code-block -

- -
-

-``` - -[EmailIt](https://github.com/raguay/EmailIt/) is a Wails 2 program that is a markdown based email sender only with nine notepads, scripts to manipulate the text, and templates. It also has a scripts terminal to run scripts in EmailIt on files in your system. The scripts and templates can be used from the commandline itself or with the Alfred, Keyboard Maestro, Dropzone, or PopClip extensions. It also supports scripts and themes downloaded form GitHub. Documentation is not complete, but the programs works. It’s built using Wails2 and Svelte, and the download is a universal macOS application. diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/encrypteasy.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/encrypteasy.mdx deleted file mode 100644 index 7504950ea..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/encrypteasy.mdx +++ /dev/null @@ -1,12 +0,0 @@ -# EncryptEasy - -```mdx-code-block -

- -
-

-``` - -**[EncryptEasy](https://www.encrypteasy.app) is a simple and easy to use PGP encryption tool, managing all your and your contacts keys. Encryption should be simple. Developed with Wails.** - -Encrypting messages using PGP is the industry standard. Everyone has a private and a public key. Your private key, well, needs to be kept private so only you can read messages. Your public key is distributed to anyone who wants to send you secret, encrypted messages. Managing keys, encrypting messages and decrypting messages should be a smooth experience. EncryptEasy is all about making it easy. diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/filehound.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/filehound.mdx deleted file mode 100644 index 8c541f482..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/filehound.mdx +++ /dev/null @@ -1,24 +0,0 @@ -# FileHound Export Utility - -```mdx-code-block -

- -
-

-``` - -[FileHound Export Utility](https://www.filehound.co.uk/) FileHound is a cloud document management platform made for secure file retention, business process automation and SmartCapture capabilities. - -The FileHound Export Utility allows FileHound Administrators the ability to run a secure document and data extraction tasks for alternative back-up and recovery purposes. This application will download all documents and/or meta data saved in FileHound based on the filters you choose. The metadata will be exported in both JSON and XML formats. - -Backend built with: -Go 1.15 -Wails 1.11.0 -go-sqlite3 1.14.6 -go-linq 3.2 - -Frontend with: -Vue 2.6.11 -Vuex 3.4.0 -TypeScript -Tailwind 1.9.6 diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/hiposter.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/hiposter.mdx deleted file mode 100644 index c0f9052c3..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/hiposter.mdx +++ /dev/null @@ -1,10 +0,0 @@ -# hiposter - -```mdx-code-block -

- -
-

-``` - -[hiposter](https://github.com/obity/hiposter) is a simple and efficient http API testing client tool. Based on Wails, Go and sveltejs. \ No newline at end of file diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/minecraftupdater.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/minecraftupdater.mdx deleted file mode 100644 index 2f6c7c72b..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/minecraftupdater.mdx +++ /dev/null @@ -1,14 +0,0 @@ -# Minecraft Updater - -```mdx-code-block -

- -
-

-``` - -[Minecraft Updater](https://github.com/Gurkengewuerz/MinecraftModUpdater) is a utility tool to update and synchronize Minecraft mods for your userbase. It’s built using Wails2 and React with [antd](https://ant.design/) as frontend framework. diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/modalfilemanager.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/modalfilemanager.mdx deleted file mode 100644 index bcd212396..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/modalfilemanager.mdx +++ /dev/null @@ -1,14 +0,0 @@ -# Modal File Manager - -```mdx-code-block -

- -
-

-``` - -[Modal File Manager](https://github.com/raguay/ModalFileManager) is a dual pane file manager using web technologies. My original design was based on NW.js and can be found [here](https://github.com/raguay/ModalFileManager-NWjs). This version uses the same Svelte based frontend code (but it has be greatly modified since the departure from NW.js), but the backend is a [Wails 2](https://wails.io/) implementation. By using this implementation, I no longer use command line `rm`, `cp`, etc. commands, but a git install has to be on the system to download themes and extensions. It is fully coded using Go and runs much faster than the previous versions. - -This file manager is designed around the same principle as Vim: a state controlled keyboard actions. The number of states isn't fixed, but very programmable. Therefore, an infinite number of keyboard configurations can be created and used. This is the main difference from other file managers. There are themes and extensions available to download from GitHub. diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/mollywallet.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/mollywallet.mdx deleted file mode 100644 index 5d846d06d..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/mollywallet.mdx +++ /dev/null @@ -1,10 +0,0 @@ -# Molley Wallet - -```mdx-code-block -

- -
-

-``` - -[Molly Wallet](https://github.com/grvlle/constellation_wallet/) the official $DAG wallet of the Constellation Network. It'll let users interact with the Hypergraph Network in various ways, not limited to producing $DAG transactions. diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/october.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/october.mdx deleted file mode 100644 index 66d634dc5..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/october.mdx +++ /dev/null @@ -1,14 +0,0 @@ -# October - -```mdx-code-block -

- -
-

-``` - -[October](https://october.utf9k.net) is a small Wails application that makes it really easy to extract highlights from [Kobo eReaders](https://en.wikipedia.org/wiki/Kobo_eReader) and then forward them to [Readwise](https://readwise.io). - -It has a relatively small scope with all platform versions weighing in under 10MB, and that's without enabling [UPX compression](https://upx.github.io/)! - -In contrast, the author's previous attempts with Electron quickly bloated to several hundred megabytes. diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/optimus.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/optimus.mdx deleted file mode 100644 index 4f87479d6..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/optimus.mdx +++ /dev/null @@ -1,10 +0,0 @@ -# Optimus - -```mdx-code-block -

- -
-

-``` - -[Optimus](https://github.com/splode/optimus) is a desktop image optimization application. It supports conversion and compression between WebP, JPEG, and PNG image formats. diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/portfall.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/portfall.mdx deleted file mode 100644 index 03e740f4c..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/portfall.mdx +++ /dev/null @@ -1,10 +0,0 @@ -# Portfall - -```mdx-code-block -

- -
-

-``` - -[Portfall](https://github.com/rekon-oss/portfall) - A desktop k8s port-forwarding portal for easy access to all your cluster UIs diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/restic-browser.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/restic-browser.mdx deleted file mode 100644 index 3646384ec..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/restic-browser.mdx +++ /dev/null @@ -1,12 +0,0 @@ -# Restic Browser - -```mdx-code-block -

- -
-

-``` - -[Restic-Browser](https://github.com/emuell/restic-browser) - A simple, cross-platform [restic](https://github.com/restic/restic) backup GUI for browsing and restoring restic repositories. diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/riftshare.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/riftshare.mdx deleted file mode 100644 index 9928b4785..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/riftshare.mdx +++ /dev/null @@ -1,21 +0,0 @@ -# RiftShare - -```mdx-code-block -

- -
-

-``` - -Easy, Secure, and Free file sharing for everyone. Learn more at [Riftshare.app](https://riftshare.app) - -## Features - -- Easy secure file sharing between computers both in the local network and through the internet -- Supports sending files or directories securely through the [magic wormhole protocol](https://magic-wormhole.readthedocs.io/en/latest/) -- Compatible with all other apps using magic wormhole (magic-wormhole or wormhole-william CLI, wormhole-gui, etc.) -- Automatic zipping of multiple selected files to send at once -- Full animations, progress bar, and cancellation support for sending and receiving -- Native OS File Selection -- Open files in one click once received -- Auto Update - don't worry about having the latest release! diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/scriptbar.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/scriptbar.mdx deleted file mode 100644 index 3e41eb32a..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/scriptbar.mdx +++ /dev/null @@ -1,10 +0,0 @@ -# ScriptBar - -```mdx-code-block -

- -
-

-``` - -[ScriptBar](https://GitHub.com/raguay/ScriptBarApp) is a program to show the output of scripts or [Node-Red](https://nodered.org) server. It runs scripts defined in EmailIt program and shows the output. Scripts from xBar or TextBar can be used, but currently on the TextBar scripts work well. It also displays the output of scripts on your system. ScriptBar doesn't put them in the menubar, but has them all in a convient window for easy viewing. You can have multiple tabs to have many different things show. You can also keep the links to your most visited web sites. diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/snippetexpander.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/snippetexpander.mdx deleted file mode 100644 index 1f9fb6157..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/snippetexpander.mdx +++ /dev/null @@ -1,27 +0,0 @@ -# Snippet Expander - -```mdx-code-block -

- -
- Screenshot of Snippet Expander's Select Snippet window -

-

- -
- Screenshot of Snippet Expander's Add Snippet screen -

-

- -
- Screenshot of Snippet Expander's Search & Paste window -

-``` - -[Snippet Expander](https://snippetexpander.org) is "Your little expandable text snippets helper", for Linux. - -Snippet Expander comprises of a GUI application built with Wails for managing snippets and settings, with a Search & Paste window mode for quickly selecting and pasting a snippet. - -The Wails based GUI, go-lang CLI and vala-lang auto expander daemon all communicate with a go-lang daemon via D-Bus. The daemon does the majority of the work, managing the database of snippets and common settings, and providing services for expanding and pasting snippets etc. - -Check out the [source code](https://git.sr.ht/~ianmjones/snippetexpander/tree/trunk/item/cmd/snippetexpandergui/app.go#L38) to see how the Wails app sends messages from the UI to the backend that are then sent to the daemon, and subscribes to a D-Bus event to monitor changes to snippets via another instance of the app or CLI and show them instantly in the UI via a Wails event. diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/surge.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/surge.mdx deleted file mode 100644 index c3b3fb4c0..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/surge.mdx +++ /dev/null @@ -1,10 +0,0 @@ -# Surge - -```mdx-code-block -

- -
-

-``` - -[Surge](https://getsurge.io/) is a p2p filesharing app designed to utilize blockchain technologies to enable 100% anonymous file transfers. Surge is end-to-end encrypted, decentralized and open source. diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/tinyrdm.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/tinyrdm.mdx deleted file mode 100644 index e3124bab7..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/tinyrdm.mdx +++ /dev/null @@ -1,11 +0,0 @@ -# Tiny RDM - -```mdx-code-block -

- - -
-

-``` - -The [Tiny RDM](https://redis.tinycraft.cc/) application is an open-source, modern lightweight Redis GUI. It has a beautful UI, intuitive Redis database management, and compatible with Windows, Mac, and Linux. It provides visual key-value data operations, supports various data decoding and viewing options, built-in console for executing commands, slow log queries and more. diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/wally.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/wally.mdx deleted file mode 100644 index 7408aa585..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/wally.mdx +++ /dev/null @@ -1,10 +0,0 @@ -# Wally - -```mdx-code-block -

- -
-

-``` - -[Wally](https://ergodox-ez.com/pages/wally) is the official firmware flasher for [Ergodox](https://ergodox-ez.com/) keyboards. It looks great and is a fantastic example of what you can achieve with Wails: the ability to combine the power of Go and the rich graphical tools of the web development world. diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/warmine.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/warmine.mdx deleted file mode 100644 index 46b10b5b1..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/warmine.mdx +++ /dev/null @@ -1,19 +0,0 @@ -# Minecraft launcher for WarMine - -```mdx-code-block -

- - -
-

-``` - -[Minecraft launcher for WarMine](https://warmine.ru/) is a Wails application, that allows you to easily join modded game servers and manage your game accounts. - -The Launcher downloads the game files, checks their integrity and launches the game with a wide range of customization options for the launch arguments from the backend. - -Frontend is written in Svelte, whole launcher fits in 9MB and supports Windows 7-11. diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/wombat.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/wombat.mdx deleted file mode 100644 index f100c55e2..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/wombat.mdx +++ /dev/null @@ -1,10 +0,0 @@ -# Wombat - -```mdx-code-block -

- -
-

-``` - -[Wombat](https://github.com/rogchap/wombat) is a cross platform gRPC client. diff --git a/website/versioned_docs/version-v2.7.0/community/showcase/ytd.mdx b/website/versioned_docs/version-v2.7.0/community/showcase/ytd.mdx deleted file mode 100644 index 5db428f72..000000000 --- a/website/versioned_docs/version-v2.7.0/community/showcase/ytd.mdx +++ /dev/null @@ -1,10 +0,0 @@ -# Ytd - -```mdx-code-block -

- -
-

-``` - -[Ytd](https://github.com/marcio199226/ytd/tree/v2-wails) is an app for downloading tracks from youtube, creating offline playlists and share them with your friends, your friends will be able to playback your playlists or download them for offline listening, has an built-in player. diff --git a/website/versioned_docs/version-v2.7.0/community/templates.mdx b/website/versioned_docs/version-v2.7.0/community/templates.mdx deleted file mode 100644 index d8a82a01e..000000000 --- a/website/versioned_docs/version-v2.7.0/community/templates.mdx +++ /dev/null @@ -1,72 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Templates - -This page serves as a list for community supported templates. Please submit a PR (click `Edit this page` at the bottom) -to include your templates. To build your own template, please see the [Templates](../guides/templates.mdx) guide. - -To use these templates, run `wails init -n "Your Project Name" -t [the link below[@version]]` - -If there is no version suffix, the main branch code template is used by default. If there is a version suffix, the code template corresponding to the tag of this version is used. - -Example: `wails init -n "Your Project Name" -t https://github.com/misitebao/wails-template-vue` - -:::warning Attention - -**The Wails project does not maintain, is not responsible nor liable for 3rd party templates!** - -If you are unsure about a template, inspect `package.json` and `wails.json` for what scripts are run and what packages are installed. - -::: - -## Vue - -- [wails-template-vue](https://github.com/misitebao/wails-template-vue) - Wails template based on Vue ecology (Integrated TypeScript, Dark theme, Internationalization, Single page routing, TailwindCSS) -- [wails-vite-vue-ts](https://github.com/codydbentley/wails-vite-vue-ts) - Vue 3 TypeScript with Vite (and instructions to add features) -- [wails-vite-vue-the-works](https://github.com/codydbentley/wails-vite-vue-the-works) - Vue 3 TypeScript with Vite, Vuex, Vue Router, Sass, and ESLint + Prettier -- [wails-template-quasar-js](https://github.com/sgosiaco/wails-template-quasar-js) - A template using JavaScript + Quasar V2 (Vue 3, Vite, Sass, Pinia, ESLint, Prettier) -- [wails-template-quasar-ts](https://github.com/sgosiaco/wails-template-quasar-ts) - A template using TypeScript + Quasar V2 (Vue 3, Vite, Sass, Pinia, ESLint, Prettier, Composition API with <script setup>) -- [wails-template-naive](https://github.com/tk103331/wails-template-naive) - Wails template based on Naive UI (A Vue 3 Component Library) - -## Angular - -- [wails-template-angular](https://github.com/mateothegreat/wails-template-angular) - Angular 15+ action packed & ready to roll to production. -- [wails-angular-template](https://github.com/TAINCER/wails-angular-template) - Angular with TypeScript, Sass, Hot-Reload, Code-Splitting and i18n -- [wails-template-angular-latest](https://github.com/mJehanno/wails-template-angular-latest) - An Angular template that will try to support latest version - -## React - -- [wails-react-template](https://github.com/AlienRecall/wails-react-template) - A template using reactjs -- [wails-react-template](https://github.com/flin7/wails-react-template) - A minimal template for React that supports live development -- [wails-template-nextjs](https://github.com/LGiki/wails-template-nextjs) - A template using Next.js and TypeScript -- [wails-template-nextjs-app-router](https://github.com/thisisvk-in/wails-template-nextjs-app-router) - A template using Next.js and TypeScript with App router -- [wails-vite-react-ts-tailwind-template](https://github.com/hotafrika/wails-vite-react-ts-tailwind-template) - A template for React + TypeScript + Vite + TailwindCSS -- [wails-vite-react-ts-tailwind-shadcnui-template](https://github.com/Mahcks/wails-vite-react-tailwind-shadcnui-ts) - A template with Vite, React, TypeScript, TailwindCSS, and shadcn/ui - -## Svelte - -- [wails-svelte-template](https://github.com/raitonoberu/wails-svelte-template) - A template using Svelte -- [wails-vite-svelte-template](https://github.com/BillBuilt/wails-vite-svelte-template) - A template using Svelte and Vite -- [wails-vite-svelte-tailwind-template](https://github.com/BillBuilt/wails-vite-svelte-tailwind-template) - A template using Svelte and Vite with TailwindCSS v3 -- [wails-svelte-tailwind-vite-template](https://github.com/PylotLight/wails-vite-svelte-tailwind-template/tree/master) - An updated template using Svelte v4.2.0 and Vite with TailwindCSS v3.3.3 -- [wails-sveltekit-template](https://github.com/h8gi/wails-sveltekit-template) - A template using SvelteKit - -## Solid - -- [wails-template-vite-solid-ts](https://github.com/xijaja/wails-template-solid-ts) - A template using Solid + Ts + Vite -- [wails-template-vite-solid-js](https://github.com/xijaja/wails-template-solid-js) - A template using Solid + Js + Vite - -## Elm - -- [wails-elm-template](https://github.com/benjamin-thomas/wails-elm-template) - Develop your GUI app with functional programming and a **snappy** hot-reload setup :tada: :rocket: -- [wails-template-elm-tailwind](https://github.com/rnice01/wails-template-elm-tailwind) - Combine the powers :muscle: of Elm + Tailwind CSS + Wails! Hot reloading supported. - -## HTMX - -- [wails-htmx-templ-chi-tailwind](https://github.com/PylotLight/wails-hmtx-templ-template) - Use a unique combination of pure htmx for interactivity plus templ for creating components and forms - -## Pure JavaScript (Vanilla) - -- [wails-pure-js-template](https://github.com/KiddoV/wails-pure-js-template) - A template with nothing but just basic JavaScript, HTML, and CSS diff --git a/website/versioned_docs/version-v2.7.0/gettingstarted/_category_.json b/website/versioned_docs/version-v2.7.0/gettingstarted/_category_.json deleted file mode 100644 index 597b920df..000000000 --- a/website/versioned_docs/version-v2.7.0/gettingstarted/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Getting Started", - "position": 10 -} diff --git a/website/versioned_docs/version-v2.7.0/gettingstarted/building.mdx b/website/versioned_docs/version-v2.7.0/gettingstarted/building.mdx deleted file mode 100644 index 2668b19da..000000000 --- a/website/versioned_docs/version-v2.7.0/gettingstarted/building.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -sidebar_position: 6 ---- - -# Compiling your Project - -From the project directory, run `wails build`. -This will compile your project and save the production-ready binary in the `build/bin` directory. - -If you run the binary, you should see the default application: - -```mdx-code-block -
- -
-
-``` - -For more details on compilation options, please refer to the [CLI Reference](../reference/cli.mdx#build). diff --git a/website/versioned_docs/version-v2.7.0/gettingstarted/development.mdx b/website/versioned_docs/version-v2.7.0/gettingstarted/development.mdx deleted file mode 100644 index 034be31d6..000000000 --- a/website/versioned_docs/version-v2.7.0/gettingstarted/development.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -sidebar_position: 5 ---- - -# Developing your Application - -You can run your application in development mode by running `wails dev` from your project directory. This will do the following things: - -- Build your application and run it -- Bind your Go code to the frontend so it can be called from JavaScript -- Using the power of [Vite](https://vitejs.dev/), will watch for modifications in your Go files and rebuild/re-run on change -- Sets up a [webserver](http://localhost:34115) that will serve your application over a browser. This allows you to use your favourite browser extensions. You can even call your Go code from the console - -To get started, run `wails dev` in the project directory. More information on this can be found [here](../reference/cli.mdx#dev). - -Coming soon: Tutorial diff --git a/website/versioned_docs/version-v2.7.0/gettingstarted/firstproject.mdx b/website/versioned_docs/version-v2.7.0/gettingstarted/firstproject.mdx deleted file mode 100644 index e8880660d..000000000 --- a/website/versioned_docs/version-v2.7.0/gettingstarted/firstproject.mdx +++ /dev/null @@ -1,132 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Creating a Project - -## Project Generation - -Now that the CLI is installed, you can generate a new project by using the `wails init` command. - -Pick your favourite framework: - -```mdx-code-block -import Tabs from "@theme/Tabs"; -import TabItem from "@theme/TabItem"; - - - - Generate a Svelte project using JavaScript with:

- - wails init -n myproject -t svelte - -If you would rather use TypeScript:
- - wails init -n myproject -t svelte-ts - -
- - Generate a React project using JavaScript with:

- - wails init -n myproject -t react - -If you would rather use TypeScript:
- - wails init -n myproject -t react-ts - -
- - Generate a Vue project using JavaScript with:

- - wails init -n myproject -t vue - -If you would rather use TypeScript:
- - wails init -n myproject -t vue-ts - -
- - Generate a Preact project using JavaScript with:

- - wails init -n myproject -t preact - -If you would rather use TypeScript:
- - wails init -n myproject -t preact-ts - -
- - Generate a Lit project using JavaScript with:

- - wails init -n myproject -t lit - -If you would rather use TypeScript:
- - wails init -n myproject -t lit-ts - -
- - Generate a Vanilla project using JavaScript with:

- - wails init -n myproject -t vanilla - -If you would rather use TypeScript:
- - wails init -n myproject -t vanilla-ts - -
-
-``` - -
- -There are also [community templates](../community/templates.mdx) available that offer different capabilities and frameworks. - -To see the other options available, you can run `wails init -help`. -More details can be found in the [CLI Reference](../reference/cli.mdx#init). - -## Project Layout - -Wails projects have the following layout: - -``` -. -├── build/ -│ ├── appicon.png -│ ├── darwin/ -│ └── windows/ -├── frontend/ -├── go.mod -├── go.sum -├── main.go -└── wails.json -``` - -### Project structure rundown - -- `/main.go` - The main application -- `/frontend/` - Frontend project files -- `/build/` - Project build directory -- `/build/appicon.png` - The application icon -- `/build/darwin/` - Mac specific project files -- `/build/windows/` - Windows specific project files -- `/wails.json` - The project configuration -- `/go.mod` - Go module file -- `/go.sum` - Go module checksum file - -The `frontend` directory has nothing specific to Wails and can be any frontend project of your choosing. - -The `build` directory is used during the build process. These files may be updated to customise your builds. If -files are removed from the build directory, default versions will be regenerated. - -The default module name in `go.mod` is "changeme". You should change this to something more appropriate. diff --git a/website/versioned_docs/version-v2.7.0/gettingstarted/installation.mdx b/website/versioned_docs/version-v2.7.0/gettingstarted/installation.mdx deleted file mode 100644 index 331ca5062..000000000 --- a/website/versioned_docs/version-v2.7.0/gettingstarted/installation.mdx +++ /dev/null @@ -1,93 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Installation - -## Supported Platforms - -- Windows 10/11 AMD64/ARM64 -- MacOS 10.13+ AMD64 -- MacOS 11.0+ ARM64 -- Linux AMD64/ARM64 - -## Dependencies - -Wails has a number of common dependencies that are required before installation: - -- Go 1.18+ -- NPM (Node 15+) - -### Go - -Download Go from the [Go Downloads Page](https://go.dev/dl/). - -Ensure that you follow the official [Go installation instructions](https://go.dev/doc/install). You will also need to ensure that your `PATH` environment variable also includes the path to your `~/go/bin` directory. Restart your terminal and do the following checks: - -- Check Go is installed correctly: `go version` -- Check "~/go/bin" is in your PATH variable: `echo $PATH | grep go/bin` - -### NPM - -Download NPM from the [Node Downloads Page](https://nodejs.org/en/download/). It is best to use the latest release as that is what we generally test against. - -Run `npm --version` to verify. - -## Platform Specific Dependencies - -You will also need to install platform specific dependencies: - -```mdx-code-block -import Tabs from "@theme/Tabs"; -import TabItem from "@theme/TabItem"; - - - - Wails requires that the xcode command line tools are installed. This can be - done by running xcode-select --install. - - - Wails requires that the WebView2 runtime is installed. Some Windows installations will already have this installed. You can check using the wails doctor command. - - - Linux requires the standard gcc build tools plus libgtk3 and libwebkit. Rather than list a ton of commands for different distros, Wails can try to determine what the installation commands are for your specific distribution. Run wails doctor after installation to be shown how to install the dependencies. If your distro/package manager is not supported, please consult the Add Linux Distro guide. - - -``` - -## Optional Dependencies - -- [UPX](https://upx.github.io/) for compressing your applications. -- [NSIS](https://wails.io/docs/guides/windows-installer/) for generating Windows installers. - -## Installing Wails - -Run `go install github.com/wailsapp/wails/v2/cmd/wails@latest` to install the Wails CLI. - -Note: If you get an error similar to this: - -```shell -....\Go\pkg\mod\github.com\wailsapp\wails\v2@v2.1.0\pkg\templates\templates.go:28:12: pattern all:ides/*: no matching files found -``` -please check you have Go 1.18+ installed: -```shell -go version -``` - -## System Check - -Running `wails doctor` will check if you have the correct dependencies installed. If not, it will advise on what is missing and help on how to rectify any problems. - -## The `wails` command appears to be missing? - -If your system is reporting that the `wails` command is missing, make sure you have followed the Go installation guide -correctly. Normally, it means that the `go/bin` directory in your User's home directory is not in the `PATH` environment -variable. You will also normally need to close and reopen any open command prompts so that changes to the environment -made by the installer are reflected at the command prompt. diff --git a/website/versioned_docs/version-v2.7.0/guides/_category_.json b/website/versioned_docs/version-v2.7.0/guides/_category_.json deleted file mode 100644 index 5935dad93..000000000 --- a/website/versioned_docs/version-v2.7.0/guides/_category_.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "label": "Guides", - "position": 50 -} diff --git a/website/versioned_docs/version-v2.7.0/guides/angular.mdx b/website/versioned_docs/version-v2.7.0/guides/angular.mdx deleted file mode 100644 index 92eec68d5..000000000 --- a/website/versioned_docs/version-v2.7.0/guides/angular.mdx +++ /dev/null @@ -1,14 +0,0 @@ -# Angular - -Whilst Wails does not have an Angular template, it is possible to use Angular with Wails. - -## Dev Mode - -To get dev mode working with Angular, you need to add the following to your `wails.json`: - -```json - "frontend:build": "npx ng build", - "frontend:install": "npm install", - "frontend:dev:watcher": "npx ng serve", - "frontend:dev:serverUrl": "http://localhost:4200", -``` \ No newline at end of file diff --git a/website/versioned_docs/version-v2.7.0/guides/application-development.mdx b/website/versioned_docs/version-v2.7.0/guides/application-development.mdx deleted file mode 100644 index 78a6df3bc..000000000 --- a/website/versioned_docs/version-v2.7.0/guides/application-development.mdx +++ /dev/null @@ -1,312 +0,0 @@ -# Application Development - -There are no hard and fast rules for developing applications with Wails, but there are some basic guidelines. - -## Application Setup - -The pattern used by the default templates are that `main.go` is used for configuring and running the application, whilst -`app.go` is used for defining the application logic. - -The `app.go` file will define a struct that has 2 methods which act as hooks into the main application: - -```go title="app.go" -type App struct { - ctx context.Context -} - -func NewApp() *App { - return &App{} -} - -func (a *App) startup(ctx context.Context) { - a.ctx = ctx -} - -func (a *App) shutdown(ctx context.Context) { -} -``` - -- The startup method is called as soon as Wails allocates the resources it needs and is a good place for creating resources, - setting up event listeners and anything else the application needs at startup. - It is given a `context.Context` which is usually saved in a struct field. This context is needed for calling the - [runtime](../reference/runtime/intro.mdx). If this method returns an error, the application will terminate. - In dev mode, the error will be output to the console. - -- The shutdown method will be called by Wails right at the end of the shutdown process. This is a good place to deallocate - memory and perform any shutdown tasks. - -The `main.go` file generally consists of a single call to `wails.Run()`, which accepts the application configuration. -The pattern used by the templates is that before the call to `wails.Run()`, an instance of the struct we defined in -`app.go` is created and saved in a variable called `app`. This configuration is where we add our callbacks: - -```go {3,9,10} title="main.go" -func main() { - - app := NewApp() - - err := wails.Run(&options.App{ - Title: "My App", - Width: 800, - Height: 600, - OnStartup: app.startup, - OnShutdown: app.shutdown, - }) - if err != nil { - log.Fatal(err) - } -} - -``` - -More information on application lifecycle hooks can be found [here](../howdoesitwork.mdx#application-lifecycle-callbacks). - -## Binding Methods - -It is likely that you will want to call Go methods from the frontend. This is normally done by adding public methods to -the already defined struct in `app.go`: - -```go {16-18} title="app.go" -type App struct { - ctx context.Context -} - -func NewApp() *App { - return &App{} -} - -func (a *App) startup(ctx context.Context) { - a.ctx = ctx -} - -func (a *App) shutdown(ctx context.Context) { -} - -func (a *App) Greet(name string) string { - return fmt.Sprintf("Hello %s!", name) -} -``` - -In the main application configuration, the `Bind` key is where we can tell Wails what we want to bind: - -```go {11-13} title="main.go" -func main() { - - app := NewApp() - - err := wails.Run(&options.App{ - Title: "My App", - Width: 800, - Height: 600, - OnStartup: app.startup, - OnShutdown: app.shutdown, - Bind: []interface{}{ - app, - }, - }) - if err != nil { - log.Fatal(err) - } -} - -``` - -This will bind all public methods in our `App` struct (it will never bind the startup and shutdown methods). - -### Dealing with context when binding multiple structs - -If you want to bind methods for multiple structs but want each struct to keep a reference to the context so that you -can use the runtime functions, a good pattern is to pass the context from the `OnStartup` method to your struct instances -: - -```go -func main() { - - app := NewApp() - otherStruct := NewOtherStruct() - - err := wails.Run(&options.App{ - Title: "My App", - Width: 800, - Height: 600, - OnStartup: func(ctx context.Context){ - app.SetContext(ctx) - otherStruct.SetContext(ctx) - }, - OnShutdown: app.shutdown, - Bind: []interface{}{ - app, - otherStruct - }, - }) - if err != nil { - log.Fatal(err) - } -} -``` - -Also you might want to use Enums in your structs and have models for them on frontend. -In that case you should create array that will contain all possible enum values, instrument enum type and bind it to the app: - -```go {16-18} title="app.go" -type Weekday string - -const ( - Sunday Weekday = "Sunday" - Monday Weekday = "Monday" - Tuesday Weekday = "Tuesday" - Wednesday Weekday = "Wednesday" - Thursday Weekday = "Thursday" - Friday Weekday = "Friday" - Saturday Weekday = "Saturday" -) - -var AllWeekdays = []struct { - Value Weekday - TSName string -}{ - {Sunday, "SUNDAY"}, - {Monday, "MONDAY"}, - {Tuesday, "TUESDAY"}, - {Wednesday, "WEDNESDAY"}, - {Thursday, "THURSDAY"}, - {Friday, "FRIDAY"}, - {Saturday, "SATURDAY"}, -} -``` - -In the main application configuration, the `EnumBind` key is where we can tell Wails what we want to bind enums as well: - -```go {11-13} title="main.go" -func main() { - - app := NewApp() - - err := wails.Run(&options.App{ - Title: "My App", - Width: 800, - Height: 600, - OnStartup: app.startup, - OnShutdown: app.shutdown, - Bind: []interface{}{ - app, - }, - EnumBind: []interface{}{ - AllWeekdays, - }, - }) - if err != nil { - log.Fatal(err) - } -} - -``` - -This will add missing enums to your `model.ts` file. - -More information on Binding can be found [here](../howdoesitwork.mdx#method-binding). - -## Application Menu - -Wails supports adding a menu to your application. This is done by passing a [Menu](../reference/menus.mdx#menu) struct -to application config. It's common to use a method that returns a Menu, and even more common for that to be a method on -the `App` struct used for the lifecycle hooks. - -```go {11} title="main.go" -func main() { - - app := NewApp() - - err := wails.Run(&options.App{ - Title: "My App", - Width: 800, - Height: 600, - OnStartup: app.startup, - OnShutdown: app.shutdown, - Menu: app.menu(), - Bind: []interface{}{ - app, - }, - }) - if err != nil { - log.Fatal(err) - } -} - -``` - -## Assets - -The great thing about the way Wails v2 handles assets is that it doesn't! The only thing you need to give Wails is an -`embed.FS`. How you get to that is entirely up to you. You can use vanilla html/css/js files like the vanilla template. -You could have some complicated build system, it doesn't matter. - -When `wails build` is run, it will check the `wails.json` project file at the project root. There are 2 keys in the -project file that are read: - -- "frontend:install" -- "frontend:build" - -The first, if given, will be executed in the `frontend` directory to install the node modules. -The second, if given, will be executed in the `frontend` directory to build the frontend project. - -If these 2 keys aren't given, then Wails does absolutely nothing with the frontend. It is only expecting that `embed.FS`. - -### AssetsHandler - -A Wails v2 app can optionally define a `http.Handler` in the `options.App`, which allows hooking into the AssetServer to -create files on the fly or process POST/PUT requests. -GET requests are always first handled by the `assets` FS. If the FS doesn't find the requested file the request will be -forwarded to the `http.Handler` for serving. Any requests other than GET will be directly processed by the `AssetsHandler` -if specified. -It's also possible to only use the `AssetsHandler` by specifiy `nil` as the `Assets` option. - -## Built in Dev Server - -Running `wails dev` will start the built in dev server which will start a file watcher in your project directory. By -default, if any file changes, wails checks if it was an application file (default: `.go`, configurable with `-e` flag). -If it was, then it will rebuild your application and relaunch it. If the changed file was in the assets, -it will issue a reload after a short amount of time. - -The dev server uses a technique called "debouncing" which means it doesn't reload straight away, -as there may be multiple files changed in a short amount of time. When a trigger occurs, it waits for a set amount of time -before issuing a reload. If another trigger happens, it resets to the wait time again. By default this value is `100ms`. -If this value doesn't work for your project, it can be configured using the `-debounce` flag. If used, this value will -be saved to your project config and become the default. - -## External Dev Server - -Some frameworks come with their own live-reloading server, however they will not be able to take advantage of the Wails -Go bindings. In this scenario, it is best to run a watcher script that rebuilds the project into the build directory, which -Wails will be watching. For an example, see the default svelte template that uses [rollup](https://rollupjs.org/guide/en/). - -### Create React App - -The process for a Create-React-App project is slightly more complicated. In order to support live frontend reloading the following configuration -needs to be added to your `wails.json`: - -```json - "frontend:dev:watcher": "yarn start", - "frontend:dev:serverUrl": "http://localhost:3000", -``` - -The `frontend:dev:watcher` command will start the Create-React-App development server (hosted on port `3000` typically). The `frontend:dev:serverUrl` command then -instructs Wails to serve assets from the development server when loading the frontend rather than from the build folder. In addition to the above, the -`index.html` needs to be updated with the following: - -```html - - - - - -``` - -This is required as the watcher command that rebuilds the frontend prevents Wails from injecting the required scripts. This circumvents that issue by ensuring -the scripts are always injected. With this configuration, `wails dev` can be run which will appropriately build the frontend and backend with hot-reloading enabled. -Additionally, when accessing the application from a browser the React developer tools can now be used on a non-minified version of the application for straightforward -debugging. Finally, for faster builds, `wails dev -s` can be run to skip the default building of the frontend by Wails as this is an unnecessary step. - -## Go Module - -The default Wails templates generate a `go.mod` file that contains the module name "changeme". You should change this -to something more appropriate after project generation. diff --git a/website/versioned_docs/version-v2.7.0/guides/crossplatform-build.mdx b/website/versioned_docs/version-v2.7.0/guides/crossplatform-build.mdx deleted file mode 100644 index a9afc6161..000000000 --- a/website/versioned_docs/version-v2.7.0/guides/crossplatform-build.mdx +++ /dev/null @@ -1,65 +0,0 @@ -# Crossplatform build with Github Actions - -To build a Wails project for all the available platforms, you need to create an application build for each operating system. One effective method to achieve this is by utilizing GitHub Actions. - -An action that facilitates building a Wails app is available at: -https://github.com/dAppServer/wails-build-action - -In case the existing action doesn't fulfill your requirements, you can select only the necessary steps from the source: -https://github.com/dAppServer/wails-build-action/blob/main/action.yml - -Below is a comprehensive example that demonstrates building an app upon the creation of a new Git tag and subsequently uploading it to the Actions artifacts: - -```yaml -name: Wails build - -on: - push: - tags: - # Match any new tag - - '*' - -env: - # Necessary for most environments as build failure can occur due to OOM issues - NODE_OPTIONS: "--max-old-space-size=4096" - -jobs: - build: - strategy: - # Failure in one platform build won't impact the others - fail-fast: false - matrix: - build: - - name: 'App' - platform: 'linux/amd64' - os: 'ubuntu-latest' - - name: 'App' - platform: 'windows/amd64' - os: 'windows-latest' - - name: 'App' - platform: 'darwin/universal' - os: 'macos-latest' - - runs-on: ${{ matrix.build.os }} - steps: - - name: Checkout - uses: actions/checkout@v2 - with: - submodules: recursive - - - name: Build wails - uses: dAppServer/wails-build-action@v2.2 - id: build - with: - build-name: ${{ matrix.build.name }} - build-platform: ${{ matrix.build.platform }} - package: false - go-version: '1.20' -``` - -This example offers opportunities for various enhancements, including: -- Caching dependencies -- Code signing -- Uploading to platforms like S3, Supbase, etc. -- Injecting secrets as environment variables -- Utilizing environment variables as build variables (such as version variable extracted from the current Git tag) diff --git a/website/versioned_docs/version-v2.7.0/guides/custom-protocol-schemes.mdx b/website/versioned_docs/version-v2.7.0/guides/custom-protocol-schemes.mdx deleted file mode 100644 index c56634f0e..000000000 --- a/website/versioned_docs/version-v2.7.0/guides/custom-protocol-schemes.mdx +++ /dev/null @@ -1,189 +0,0 @@ -# Custom Protocol Scheme association - -Custom Protocols feature allows you to associate specific custom protocol with your app so that when users open links with this protocol, -your app is launched to handle them. This can be particularly useful to connect your desktop app with your web app. -In this guide, we'll walk through the steps to implement custom protocols in Wails app. - - -## Set Up Custom Protocol Schemes Association: -To set up custom protocol, you need to modify your application's wails.json file. -In "info" section add a "protocols" section specifying the protocols your app should be associated with. - -For example: -```json -{ - "info": { - "protocols": [ - { - "scheme": "myapp", - "description": "My App Protocol", - "role": "Editor" - } - ] - } -} -``` - -| Property | Description | -|:------------|:--------------------------------------------------------------------------------------| -| scheme | Custom Protocol scheme. e.g. myapp | -| description | Windows-only. The description. | -| role | macOS-only. The app’s role with respect to the type. Corresponds to CFBundleTypeRole. | - -## Platform Specifics: - -### macOS -When you open custom protocol with your app, the system will launch your app and call the `OnUrlOpen` function in your Wails app. Example: -```go title="main.go" -func main() { - // Create application with options - err := wails.Run(&options.App{ - Title: "wails-open-file", - Width: 1024, - Height: 768, - AssetServer: &assetserver.Options{ - Assets: assets, - }, - BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1}, - Mac: &mac.Options{ - OnUrlOpen: func(url string) { println(url) }, - }, - Bind: []interface{}{ - app, - }, - }) - - if err != nil { - println("Error:", err.Error()) - } -} -``` - - -### Windows -On Windows Custom Protocol Schemes is supported only with NSIS installer. During installation, the installer will create a -registry entry for your schemes. When you open url with your app, new instance of app is launched and url is passed -as argument to your app. To handle this you should parse command line arguments in your app. Example: -```go title="main.go" -func main() { - argsWithoutProg := os.Args[1:] - - if len(argsWithoutProg) != 0 { - println("launchArgs", argsWithoutProg) - } -} -``` - -You also can enable single instance lock for your app. In this case, when you open url with your app, new instance of app is not launched -and arguments are passed to already running instance. Check single instance lock guide for details. Example: -```go title="main.go" -func main() { - // Create application with options - err := wails.Run(&options.App{ - Title: "wails-open-file", - Width: 1024, - Height: 768, - AssetServer: &assetserver.Options{ - Assets: assets, - }, - BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1}, - SingleInstanceLock: &options.SingleInstanceLock{ - UniqueId: "e3984e08-28dc-4e3d-b70a-45e961589cdc", - OnSecondInstanceLaunch: app.onSecondInstanceLaunch, - }, - Bind: []interface{}{ - app, - }, - }) -} -``` - -### Linux -Currently, Wails doesn't support bundling for Linux. So, you need to create file associations manually. -For example if you distribute your app as a .deb package, you can create file associations by adding required files in you bundle. -You can use [nfpm](https://nfpm.goreleaser.com/) to create .deb package for your app. - -1. Create a .desktop file for your app and specify file associations there (note that `%u` is important in Exec). Example: -```ini -[Desktop Entry] -Categories=Office -Exec=/usr/bin/wails-open-file %u -Icon=wails-open-file.png -Name=wails-open-file -Terminal=false -Type=Application -MimeType=x-scheme-handler/myapp; -``` - -2. Prepare postInstall/postRemove scripts for your package. Example: -```sh -# reload desktop database to load app in list of available -update-desktop-database /usr/share/applications -``` -3. Configure nfpm to use your scripts and files. Example: -```yaml -name: "wails-open-file" -arch: "arm64" -platform: "linux" -version: "1.0.0" -section: "default" -priority: "extra" -maintainer: "FooBarCorp " -description: "Sample Package" -vendor: "FooBarCorp" -homepage: "http://example.com" -license: "MIT" -contents: -- src: ../bin/wails-open-file - dst: /usr/bin/wails-open-file -- src: ./main.desktop - dst: /usr/share/applications/wails-open-file.desktop -- src: ../appicon.svg - dst: /usr/share/icons/hicolor/scalable/apps/wails-open-file.svg -# copy icons to Yaru theme as well. For some reason Ubuntu didn't pick up fileicons from hicolor theme -- src: ../appicon.svg - dst: /usr/share/icons/Yaru/scalable/apps/wails-open-file.svg -scripts: - postinstall: ./postInstall.sh - postremove: ./postRemove.sh -``` -6. Build your .deb package using nfpm: -```sh -nfpm pkg --packager deb --target . -``` -7. Now when your package is installed, your app will be associated with custom protocol scheme. When you open url with your app, -new instance of app is launched and file path is passed as argument to your app. -To handle this you should parse command line arguments in your app. Example: -```go title="main.go" -func main() { - argsWithoutProg := os.Args[1:] - - if len(argsWithoutProg) != 0 { - println("launchArgs", argsWithoutProg) - } -} -``` - -You also can enable single instance lock for your app. In this case, when you open url with your app, new instance of app is not launched -and arguments are passed to already running instance. Check single instance lock guide for details. Example: -```go title="main.go" -func main() { - // Create application with options - err := wails.Run(&options.App{ - Title: "wails-open-file", - Width: 1024, - Height: 768, - AssetServer: &assetserver.Options{ - Assets: assets, - }, - BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1}, - SingleInstanceLock: &options.SingleInstanceLock{ - UniqueId: "e3984e08-28dc-4e3d-b70a-45e961589cdc", - OnSecondInstanceLaunch: app.onSecondInstanceLaunch, - }, - Bind: []interface{}{ - app, - }, - }) -} -``` diff --git a/website/versioned_docs/version-v2.7.0/guides/dynamic-assets.mdx b/website/versioned_docs/version-v2.7.0/guides/dynamic-assets.mdx deleted file mode 100644 index 0516fb729..000000000 --- a/website/versioned_docs/version-v2.7.0/guides/dynamic-assets.mdx +++ /dev/null @@ -1,144 +0,0 @@ -# Dynamic Assets - -If you want to load or generate assets for your frontend dynamically, you can achieve that using the -[AssetsHandler](../reference/options#assetshandler) option. The AssetsHandler is a generic `http.Handler` which will -be called for any non GET request on the assets server and for GET requests which can not be served from the -bundled assets because the file is not found. - -By installing a custom AssetsHandler, you can serve your own assets using a custom asset server. - -## Example - -In our example project, we will create a simple assets handler which will load files off disk: - -```go title=main.go {17-36,49} -package main - -import ( - "embed" - "fmt" - "github.com/wailsapp/wails/v2" - "github.com/wailsapp/wails/v2/pkg/options" - "github.com/wailsapp/wails/v2/pkg/options/assetserver" - "net/http" - "os" - "strings" -) - -//go:embed all:frontend/dist -var assets embed.FS - -type FileLoader struct { - http.Handler -} - -func NewFileLoader() *FileLoader { - return &FileLoader{} -} - -func (h *FileLoader) ServeHTTP(res http.ResponseWriter, req *http.Request) { - var err error - requestedFilename := strings.TrimPrefix(req.URL.Path, "/") - println("Requesting file:", requestedFilename) - fileData, err := os.ReadFile(requestedFilename) - if err != nil { - res.WriteHeader(http.StatusBadRequest) - res.Write([]byte(fmt.Sprintf("Could not load file %s", requestedFilename))) - } - - res.Write(fileData) -} - -func main() { - // Create an instance of the app structure - app := NewApp() - - // Create application with options - err := wails.Run(&options.App{ - Title: "helloworld", - Width: 1024, - Height: 768, - AssetServer: &assetserver.Options{ - Assets: assets, - Handler: NewFileLoader(), - }, - BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 255}, - OnStartup: app.startup, - Bind: []interface{}{ - app, - }, - }) - - if err != nil { - println("Error:", err) - } -} -``` - -When we run the application in dev mode using `wails dev`, we will see the following output: - -``` -DEB | [ExternalAssetHandler] Loading 'http://localhost:3001/favicon.ico' -DEB | [ExternalAssetHandler] Loading 'http://localhost:3001/favicon.ico' failed, using AssetHandler -Requesting file: favicon.ico -``` - -As you can see, the assets handler is called when the default assets server is unable to serve -the `favicon.ico` file. - -If you right click the main application and select "inspect" to bring up the devtools, you can test -this feature out by typing the following into the console: - -``` -let response = await fetch('does-not-exist.txt'); -``` - -This will generate an error in the devtools. We can see that the error is what we expect, returned by -our custom assets handler: - -```mdx-code-block -

- -

-``` - -However, if we request `go.mod`, we will see the following output: - -```mdx-code-block -

- -

-``` - -This technique can be used to load images directly into the page. If we updated our default vanilla template and -replaced the logo image: - -```html - -``` - -with: - -```html - -``` - -Then we would see the following: - -```mdx-code-block -

- -

-``` - -:::warning - -Exposing your filesystem in this way is a security risk. It is recommended that you properly manage access -to your filesystem. - -::: diff --git a/website/versioned_docs/version-v2.7.0/guides/file-association.mdx b/website/versioned_docs/version-v2.7.0/guides/file-association.mdx deleted file mode 100644 index 71bbff37e..000000000 --- a/website/versioned_docs/version-v2.7.0/guides/file-association.mdx +++ /dev/null @@ -1,228 +0,0 @@ -# File Association - -File association feature allows you to associate specific file types with your app so that when users open those files, -your app is launched to handle them. This can be particularly useful for text editors, image viewers, or any application -that works with specific file formats. In this guide, we'll walk through the steps to implement file association in Wails app. - - -## Set Up File Association: -To set up file association, you need to modify your application's wails.json file. -In "info" section add a "fileAssociations" section specifying the file types your app should be associated with. - -For example: -```json -{ - "info": { - "fileAssociations": [ - { - "ext": "wails", - "name": "Wails", - "description": "Wails Application File", - "iconName": "wailsFileIcon", - "role": "Editor" - }, - { - "ext": "jpg", - "name": "JPEG", - "description": "Image File", - "iconName": "jpegFileIcon", - "role": "Editor" - } - ] - } -} -``` - -| Property | Description | -|:------------|:---------------------------------------------------------------------------------------------------------------------------------------------------| -| ext | The extension (minus the leading period). e.g. png | -| name | The name. e.g. PNG File | -| iconName | The icon name without extension. Icons should be located in build folder. Proper icons will be generated from .png file for both macOS and Windows | -| description | Windows-only. The description. It is displayed on the `Type` column on Windows Explorer. | -| role | macOS-only. The app’s role with respect to the type. Corresponds to CFBundleTypeRole. | - -## Platform Specifics: - -### macOS -When you open file (or files) with your app, the system will launch your app and call the `OnFileOpen` function in your Wails app. Example: -```go title="main.go" -func main() { - // Create application with options - err := wails.Run(&options.App{ - Title: "wails-open-file", - Width: 1024, - Height: 768, - AssetServer: &assetserver.Options{ - Assets: assets, - }, - BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1}, - Mac: &mac.Options{ - OnFileOpen: func(filePaths []string) { println(filestring) }, - }, - Bind: []interface{}{ - app, - }, - }) - - if err != nil { - println("Error:", err.Error()) - } -} -``` - - -### Windows -On Windows file association is supported only with NSIS installer. During installation, the installer will create a -registry entry for your file associations. When you open file with your app, new instance of app is launched and file path is passed -as argument to your app. To handle this you should parse command line arguments in your app. Example: -```go title="main.go" -func main() { - argsWithoutProg := os.Args[1:] - - if len(argsWithoutProg) != 0 { - println("launchArgs", argsWithoutProg) - } -} -``` - -You also can enable single instance lock for your app. In this case, when you open file with your app, new instance of app is not launched -and arguments are passed to already running instance. Check single instance lock guide for details. Example: -```go title="main.go" -func main() { - // Create application with options - err := wails.Run(&options.App{ - Title: "wails-open-file", - Width: 1024, - Height: 768, - AssetServer: &assetserver.Options{ - Assets: assets, - }, - BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1}, - SingleInstanceLock: &options.SingleInstanceLock{ - UniqueId: "e3984e08-28dc-4e3d-b70a-45e961589cdc", - OnSecondInstanceLaunch: app.onSecondInstanceLaunch, - }, - Bind: []interface{}{ - app, - }, - }) -} -``` - -### Linux -Currently, Wails doesn't support bundling for Linux. So, you need to create file associations manually. -For example if you distribute your app as a .deb package, you can create file associations by adding required files in you bundle. -You can use [nfpm](https://nfpm.goreleaser.com/) to create .deb package for your app. - -1. Create a .desktop file for your app and specify file associations there. Example: -```ini -[Desktop Entry] -Categories=Office -Exec=/usr/bin/wails-open-file %u -Icon=wails-open-file.png -Name=wails-open-file -Terminal=false -Type=Application -MimeType=application/x-wails;application/x-test -``` - -2. Create mime types file. Example: -```xml - - - - Wails Application File - - - -``` - -3. Create icons for your file types. SVG icons are recommended. -4. Prepare postInstall/postRemove scripts for your package. Example: -```sh -# reload mime types to register file associations -update-mime-database /usr/share/mime -# reload desktop database to load app in list of available -update-desktop-database /usr/share/applications -# update icons -update-icon-caches /usr/share/icons/* -``` -5. Configure nfpm to use your scripts and files. Example: -```yaml -name: "wails-open-file" -arch: "arm64" -platform: "linux" -version: "1.0.0" -section: "default" -priority: "extra" -maintainer: "FooBarCorp " -description: "Sample Package" -vendor: "FooBarCorp" -homepage: "http://example.com" -license: "MIT" -contents: -- src: ../bin/wails-open-file - dst: /usr/bin/wails-open-file -- src: ./main.desktop - dst: /usr/share/applications/wails-open-file.desktop -- src: ./application-wails-mime.xml - dst: /usr/share/mime/packages/application-x-wails.xml -- src: ./application-test-mime.xml - dst: /usr/share/mime/packages/application-x-test.xml -- src: ../appicon.svg - dst: /usr/share/icons/hicolor/scalable/apps/wails-open-file.svg -- src: ../wailsFileIcon.svg - dst: /usr/share/icons/hicolor/scalable/mimetypes/application-x-wails.svg -- src: ../testFileIcon.svg - dst: /usr/share/icons/hicolor/scalable/mimetypes/application-x-test.svg -# copy icons to Yaru theme as well. For some reason Ubuntu didn't pick up fileicons from hicolor theme -- src: ../appicon.svg - dst: /usr/share/icons/Yaru/scalable/apps/wails-open-file.svg -- src: ../wailsFileIcon.svg - dst: /usr/share/icons/Yaru/scalable/mimetypes/application-x-wails.svg -- src: ../testFileIcon.svg - dst: /usr/share/icons/Yaru/scalable/mimetypes/application-x-test.svg -scripts: - postinstall: ./postInstall.sh - postremove: ./postRemove.sh -``` -6. Build your .deb package using nfpm: -```sh -nfpm pkg --packager deb --target . -``` -7. Now when your package is installed, your app will be associated with specified file types. When you open file with your app, -new instance of app is launched and file path is passed as argument to your app. -To handle this you should parse command line arguments in your app. Example: -```go title="main.go" -func main() { - argsWithoutProg := os.Args[1:] - - if len(argsWithoutProg) != 0 { - println("launchArgs", argsWithoutProg) - } -} -``` - -You also can enable single instance lock for your app. In this case, when you open file with your app, new instance of app is not launched -and arguments are passed to already running instance. Check single instance lock guide for details. Example: -```go title="main.go" -func main() { - // Create application with options - err := wails.Run(&options.App{ - Title: "wails-open-file", - Width: 1024, - Height: 768, - AssetServer: &assetserver.Options{ - Assets: assets, - }, - BackgroundColour: &options.RGBA{R: 27, G: 38, B: 54, A: 1}, - SingleInstanceLock: &options.SingleInstanceLock{ - UniqueId: "e3984e08-28dc-4e3d-b70a-45e961589cdc", - OnSecondInstanceLaunch: app.onSecondInstanceLaunch, - }, - Bind: []interface{}{ - app, - }, - }) -} -``` diff --git a/website/versioned_docs/version-v2.7.0/guides/frameless.mdx b/website/versioned_docs/version-v2.7.0/guides/frameless.mdx deleted file mode 100644 index 07d8d2d25..000000000 --- a/website/versioned_docs/version-v2.7.0/guides/frameless.mdx +++ /dev/null @@ -1,92 +0,0 @@ -# Frameless Applications - -Wails supports application that have no frames. This can be achieved by using the [frameless](../reference/options.mdx#frameless) -field in [Application Options](../reference/options.mdx#application-options). - -Wails offers a simple solution for dragging the window: Any HTML element that has the CSS style `--wails-draggable:drag` will -act as a "drag handle". This property applies to all child elements. If you need to indicate that a nested element -should not drag, then use the attribute '--wails-draggable:no-drag' on that element. - -```html - - - - - - - -
- - -
-
- - - - -``` - -For some projects, using a CSS variable may not be possible due to dynamic styling. In this case, you can use the -`CSSDragProperty` and `CSSDragValue` application options to define a property and value that will be used to indicate -draggable regions: - -```go title=main.go -package main - -import ( - "embed" - - "github.com/wailsapp/wails/v2" - "github.com/wailsapp/wails/v2/pkg/options" - "github.com/wailsapp/wails/v2/pkg/options/assetserver" -) - -//go:embed all:frontend/dist -var assets embed.FS - -func main() { - // Create an instance of the app structure - app := NewApp() - - // Create application with options - err := wails.Run(&options.App{ - Title: "alwaysontop", - Width: 1024, - Height: 768, - AssetServer: &assetserver.Options{ - Assets: assets, - }, - Frameless: true, - CSSDragProperty: "widows", - CSSDragValue: "1", - Bind: []interface{}{ - app, - }, - }) - - if err != nil { - println("Error:", err) - } -} -``` - -```html title=index.html - - - - - - alwaysontop - - -
- - - -``` - -:::info Fullscreen - -If you allow your application to go fullscreen, this drag functionality will be disabled. - -::: diff --git a/website/versioned_docs/version-v2.7.0/guides/frontend.mdx b/website/versioned_docs/version-v2.7.0/guides/frontend.mdx deleted file mode 100644 index 1384087da..000000000 --- a/website/versioned_docs/version-v2.7.0/guides/frontend.mdx +++ /dev/null @@ -1,73 +0,0 @@ -# Frontend - -## Script Injection - -When Wails serves your `index.html`, by default, it will inject 2 script entries into the `` tag to load `/wails/ipc.js` -and `/wails/runtime.js`. These files install the bindings and runtime respectively. - -The code below shows where these are injected by default: - -```html - - - injection example - - - - - - - -
Please enter your name below 👇
-
- - -
- - - - -``` - -### Overriding Default Script Injection - -To provide more flexibility to developers, there is a meta tag that may be used to customise this behaviour: - -```html - -``` - -The options are as follows: - -| Value | Description | -| ------------------- | ------------------------------------------------ | -| noautoinjectruntime | Disable the autoinjection of `/wails/runtime.js` | -| noautoinjectipc | Disable the autoinjection of `/wails/ipc.js` | -| noautoinject | Disable all autoinjection of scripts | - -Multiple options may be used provided they are comma seperated. - -This code is perfectly valid and operates the same as the autoinjection version: - -```html - - - injection example - - - - - - -
Please enter your name below 👇
-
- - -
- - - - - - -``` diff --git a/website/versioned_docs/version-v2.7.0/guides/ides.mdx b/website/versioned_docs/version-v2.7.0/guides/ides.mdx deleted file mode 100644 index f22aefe9e..000000000 --- a/website/versioned_docs/version-v2.7.0/guides/ides.mdx +++ /dev/null @@ -1,131 +0,0 @@ -# IDEs - -Wails aims to provide a great development experience. To that aim, we now support generating IDE specific configuration -to provide smoother project setup. - -Currently, we support [Visual Studio Code](https://code.visualstudio.com/) but aim to support other IDEs such as Goland. - -## Visual Studio Code - -```mdx-code-block -

- -

-``` - -When generating a project using the `-ide vscode` flags, IDE files will be created alongside the other project files. -These files are placed into the `.vscode` directory and provide the correct configuration for debugging your application. - -The 2 files generated are `tasks.json` and `launch.json`. Below are the files generated for the default vanilla project: - -```json title="tasks.json" -{ - "version": "2.0.0", - "tasks": [ - { - "label": "build", - "type": "shell", - "options": { - "cwd": "${workspaceFolder}" - }, - "command": "go", - "args": [ - "build", - "-tags", - "dev", - "-gcflags", - "all=-N -l", - "-o", - "build/bin/myproject.exe" - ] - } - ] -} -``` - -```json title="launch.json" -{ - "version": "0.2.0", - "configurations": [ - { - "name": "Wails: Debug myproject", - "type": "go", - "request": "launch", - "mode": "exec", - "program": "${workspaceFolder}/build/bin/myproject.exe", - "preLaunchTask": "build", - "cwd": "${workspaceFolder}", - "env": {} - } - ] -} -``` - -### Configuring the install and build steps - -The `tasks.json` file is simple for the default project as there is no `npm install` or `npm run build` step needed. -For projects that have a frontend build step, such as the svelte template, we would need to edit `tasks.json` to -add the install and build steps: - -```json title="tasks.json" -{ - "version": "2.0.0", - "tasks": [ - { - "label": "npm install", - "type": "npm", - "script": "install", - "options": { - "cwd": "${workspaceFolder}/frontend" - }, - "presentation": { - "clear": true, - "panel": "shared", - "showReuseMessage": false - }, - "problemMatcher": [] - }, - { - "label": "npm run build", - "type": "npm", - "script": "build", - "options": { - "cwd": "${workspaceFolder}/frontend" - }, - "presentation": { - "clear": true, - "panel": "shared", - "showReuseMessage": false - }, - "problemMatcher": [] - }, - { - "label": "build", - "type": "shell", - "options": { - "cwd": "${workspaceFolder}" - }, - "command": "go", - "args": [ - "build", - "-tags", - "dev", - "-gcflags", - "all=-N -l", - "-o", - "build/bin/vscode.exe" - ], - "dependsOn": ["npm install", "npm run build"] - } - ] -} -``` - -:::info Future Enhancement - -In the future, we hope to generate a `tasks.json` that includes the install and build steps automatically. - -::: diff --git a/website/versioned_docs/version-v2.7.0/guides/linux-distro-support.mdx b/website/versioned_docs/version-v2.7.0/guides/linux-distro-support.mdx deleted file mode 100644 index b64ed0c03..000000000 --- a/website/versioned_docs/version-v2.7.0/guides/linux-distro-support.mdx +++ /dev/null @@ -1,110 +0,0 @@ -# Linux Distro Support - -## Overview - -Wails offers Linux support but providing installation instructions for all available distributions is an impossible task. -Instead, Wails tries to determine if the packages you need to develop applications are available via your system's package -manager. Currently, we support the following package managers: - -- apt -- dnf -- emerge -- eopkg -- nixpkgs -- pacman -- zypper - -## Adding package names - -There may be circumstances where your distro uses one of the supported package managers but the package name -is different. For example, you may use an Ubuntu derivative, but the package name for gtk may be different. Wails -attempts to find the correct package by iterating through a list of package names. -The list of packages are stored in the packagemanager specific file in the `v2/internal/system/packagemanager` -directory. In our example, this would be `v2/internal/system/packagemanager/apt.go`. - -In this file, the list of packages are defined by the `Packages()` method: - -```go -func (a *Apt) Packages() packagemap { - return packagemap{ - "libgtk-3": []*Package{ - {Name: "libgtk-3-dev", SystemPackage: true, Library: true}, - }, - "libwebkit": []*Package{ - {Name: "libwebkit2gtk-4.0-dev", SystemPackage: true, Library: true}, - }, - "gcc": []*Package{ - {Name: "build-essential", SystemPackage: true}, - }, - "pkg-config": []*Package{ - {Name: "pkg-config", SystemPackage: true}, - }, - "npm": []*Package{ - {Name: "npm", SystemPackage: true}, - }, - "docker": []*Package{ - {Name: "docker.io", SystemPackage: true, Optional: true}, - }, - } -} -``` - -Let's assume that in our linux distro, `libgtk-3` is packaged under the name `lib-gtk3-dev`. -We could add support for this by adding the following line: - -```go {5} -func (a *Apt) Packages() packagemap { - return packagemap{ - "libgtk-3": []*Package{ - {Name: "libgtk-3-dev", SystemPackage: true, Library: true}, - {Name: "lib-gtk3-dev", SystemPackage: true, Library: true}, - }, - "libwebkit": []*Package{ - {Name: "libwebkit2gtk-4.0-dev", SystemPackage: true, Library: true}, - }, - "gcc": []*Package{ - {Name: "build-essential", SystemPackage: true}, - }, - "pkg-config": []*Package{ - {Name: "pkg-config", SystemPackage: true}, - }, - "npm": []*Package{ - {Name: "npm", SystemPackage: true}, - }, - "docker": []*Package{ - {Name: "docker.io", SystemPackage: true, Optional: true}, - }, - } -} -``` - -## Adding new package managers - -To add a new package manager, perform the following steps: - -- Create a new file in `v2/internal/system/packagemanager` called `.go`, where `` is the name of the package manager. -- Define a struct that conforms to the package manager interface defined in `pm.go`: - -```go -type PackageManager interface { - Name() string - Packages() packagemap - PackageInstalled(*Package) (bool, error) - PackageAvailable(*Package) (bool, error) - InstallCommand(*Package) string -} -``` - -- `Name()` should return the name of the package manager -- `Packages()` should return a `packagemap`, that provides candidate filenames for dependencies -- `PackageInstalled()` should return `true` if the given package is installed -- `PackageAvailable()` should return `true` if the given package is not installed but available for installation -- `InstallCommand()` should return the exact command to install the given package name - -Take a look at the other package managers code to get an idea how this works. - -:::info Remember - -If you add support for a new package manager, don't forget to also update this page! - -::: diff --git a/website/versioned_docs/version-v2.7.0/guides/linux.mdx b/website/versioned_docs/version-v2.7.0/guides/linux.mdx deleted file mode 100644 index 1b55297b5..000000000 --- a/website/versioned_docs/version-v2.7.0/guides/linux.mdx +++ /dev/null @@ -1,72 +0,0 @@ -# Linux - -This page has miscellaneous guides related to developing Wails applications for Linux. - -## Video tag doesn't fire "ended" event - -When using a video tag, the "ended" event is not fired when the video is finished playing. This is a bug -in WebkitGTK, however you can use the following workaround to fix it: - -```js -videoTag.addEventListener("timeupdate", (event) => { - if (event.target.duration - event.target.currentTime < 0.2) { - let ended = new Event("ended"); - event.target.dispatchEvent(ended); - } -}); -``` - -Source: [Lyimmi](https://github.com/Lyimmi) on the -[discussions board](https://github.com/wailsapp/wails/issues/1729#issuecomment-1212291275) - -## GStreamer error when using Audio or Video elements - -If you are seeing the following error when including `