{"id":3819,"date":"2023-06-12T16:07:44","date_gmt":"2023-06-12T15:07:44","guid":{"rendered":"https:\/\/pmortensen.eu\/world2\/?p=3819"},"modified":"2026-06-10T16:31:30","modified_gmt":"2026-06-10T15:31:30","slug":"via-a-mechanical-qmk-keyboard-configuration-works-just-fine-without-google-chrome","status":"publish","type":"post","link":"https:\/\/pmortensen.eu\/world2\/2023\/06\/12\/via-a-mechanical-qmk-keyboard-configuration-works-just-fine-without-google-chrome\/","title":{"rendered":"Via (a configuration tool for mechanical keyboards with QMK) works just fine ***without*** Google Chrome!"},"content":{"rendered":"<p><!-- T H E   B E G I N N I N G . . .   Marker for editing in WordPress: qqqq --><\/p>\n<p>The <a href=\"https:\/\/caniusevia.com\">Via<\/a> tool does <strong><em>not<\/em><\/strong> need Google Chrome. There are <a href=\"https:\/\/github.com\/the-via\/releases\/releases\">standalone executables<\/a> (though they do need an Internet connection to work), but this is not advertised at all at the Via web site. It appears as if the only way is essentially to have to install Google Chrome (a kind of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Spyware\">spyware<\/a> you can never get rid of, because the background updater still runs in the background). But that is not the case. The error message is: <\/p>\n<p><em>&#8220;USB Detection Error. Looks [sic] like there was a problem getting USB detection working. Right now, we only support <a href=\"https:\/\/caniuse.com\/?search=webhid\">browsers that have WebHID enabled<\/a>, so make sure yours is compatible before trying again.&#8221;<\/em><\/p>\n<p>While this is technically not a lie, they completely fail to inform that there is an alternative: Executables for <a href=\"https:\/\/github.com\/the-via\/releases\/releases\">Linux, Windows, and Mac<\/a> (based on <a href=\"https:\/\/en.wikipedia.org\/wiki\/Electron_(software_framework)\">Electron<\/a>, like <a href=\"https:\/\/en.wikipedia.org\/wiki\/Visual_Studio_Code\">Visual Studio Code<\/a>)<\/p>\n<h2>Installation on Linux<\/h2>\n<h3>As an <a href=\"https:\/\/en.wikipedia.org\/wiki\/AppImage\">AppImage<\/a><\/h3>\n<p>This should work on most Linux systems.<\/p>\n<p><a href=\"https:\/\/github.com\/the-via\/releases\/releases\/download\/v3.0.0\/via-3.0.0-linux.AppImage\">Download it<\/a>.<\/p>\n<p>From the command line, enable execute permissions, e.g.,<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\ncd \/home\/embo\/temp2\/2023-06-03\r\nchmod u+x via-3.0.0-linux.AppImage\r\n<\/pre>\n<p><!--\ncd \/home\/embo\/temp2\/2026-06-05\nchmod u+x via-3.0.0-linux.AppImage\n\/home\/embo\/temp2\/2026-06-05\/via-3.0.0-linux.AppImage\n--><\/p>\n<p>From the command or Run dialog (often <em>Alt <\/em>+ <em>F2<\/em>, unless <a href=\"https:\/\/pmortensen.eu\/world2\/2020\/03\/29\/using-geany\/\">using Geany as a replacement for UltraEdit<\/a>), launch it by:<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\n\/home\/embo\/temp2\/2026-06-05\/via-3.0.0-linux.AppImage\r\n<\/pre>\n<p>It is possible to integrate it into the GUI, so it isn&#8217;t necessary to start it from the command line or entering the name \/ full path every time. Though on some systems, like <a href=\"https:\/\/en.wikipedia.org\/wiki\/Cinnamon_(desktop_environment)\">Cinnamon<\/a> (e.g., <a href=\"https:\/\/en.wikipedia.org\/wiki\/Linux_Mint#LMDE\">LMDE<\/a> and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Linux_Mint\">Linux Mint<\/a>), at least the first launch is remembered, and it is menu item <em>&#8220;via-3.0.0-linux.AppImage&#8221;<\/em>, e.g., in <em><a href=\"https:\/\/en.wikipedia.org\/wiki\/Windows_key\">Win<\/a><\/em> + &#8220;via&#8221;. <\/p>\n<h3>As an Debian package<\/h3>\n<p>For a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Debian\">Debian<\/a>-like system, like LMDE, Linux Mint, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Ubuntu_%28operating_system%29\">Ubuntu<\/a>, Debian itself, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Lubuntu\">Lubuntu<\/a>, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Kubuntu\">Kubuntu<\/a>, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Xubuntu\">Xubuntu<\/a>, <a href=\"https:\/\/en.wikipedia.org\/wiki\/CrunchBang_Linux#BunsenLabs\">BunsenLabs<\/a>, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Linux_Lite\">Linux Lite<\/a>, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Windows_Subsystem_for_Linux\">WSL<\/a>, etc..<\/p>\n<p><a href=\"https:\/\/github.com\/the-via\/releases\/releases\/download\/v3.0.0\/via-3.0.0-linux.deb\">Download the .deb file<\/a>, for example, to <em>\/home\/embo\/temp2\/2026-06-05\/via-3.0.0-linux.deb<\/em>.<\/p>\n<p><!-- <https:\/\/www.wikihow.com\/Install-DEB-Files> --><\/p>\n<p>In the file manager (for example, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Nemo_%28file_manager%29\">Nemo<\/a>), open the <em>via-3.0.0-linux.deb<\/em> file. It will open a dialog with button &#8220;Install Package&#8221;. Activate it (<em>Enter<\/em> is sufficient; the mouse is not required). Enter the password. <\/p>\n<p>Alternatively, from the command line:<\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\nsudo apt install \/home\/embo\/temp2\/2026-06-05\/via-3.0.0-linux.deb\r\n<\/pre>\n<p>After the installation, Via is now part of the GUI. Launch it, for example, by <em><a href=\"https:\/\/en.wikipedia.org\/wiki\/Windows_key\">Win<\/a><\/em> + &#8220;via&#8221; and select &#8220;VIA&#8221;. <\/p>\n<h3>udev rules<\/h3>\n<p>However it is installed and launched, the first time (unless the <a href=\"https:\/\/docs.qmk.fm\/#\/faq_general?id=what-is-qmk\">QMK<\/a> environment has been installed first), a dialog comes up: <\/p>\n<p><em>&#8220;Allow VIA Access. In order to communicate with your keyboard, we need to add a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Udev\">udev<\/a> rule, which requires root permissions. Continue?&#8221;<\/em>. <\/p>\n<p>Activate the <strong><em>Continue<\/em><\/strong> button, either by <em>Tab<\/em> + <em>Enter<\/em> or click it. Enter the password.<\/p>\n<h2>What is &#8220;Via&#8221;?<\/h2>\n<p>Via can change the behaviour (configure) a <a href=\"https:\/\/docs.qmk.fm\/#\/faq_general?id=what-is-qmk\">QMK<\/a>-based keyboard without having to reflash the QMK firmware. Key mappings can be changed, macros recorded, macro timings changed, and macros assigned to keys. Changes take place <em>immediately<\/em> and thus the turnaround time is very low compared to the normal edit, compile, flash, and test cycle for QMK. There are also drawbacks and limitations (for example, only 16 macros can be defined), but it enables a very quick turnaround in quickly trying out new things in QMK. <\/p>\n<p>Example: Assigning a key on the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Numeric_keypad\">numeric keypad<\/a> as mouse right click. In this example, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Num_Lock\">Num Lock<\/a> is assigned (this may seem to cripple the number functionality, but that is not the case if an extra keyboard with Num Lock is also attached, say a wireless (Bluetooth) separate external numeric keypad).<\/p>\n<p><!--  \nVia (a configuration tool for mechanical keyboards with QMK) works just fine ***without*** Google Chrome!\n--><\/p>\n<h2>Hidden page with executables for Linux, Windows, and Mac<\/h2>\n<p>The existence of the executables is very well hidden. The first hint I got was on <a href=\"https:\/\/docs.keeb.io\/via-technical\">this external page<\/a>:<\/p>\n<p><em>&#8220;desktop app &#8230; a wrapper for the web app&#8221;<\/em><\/p>\n<p>Though it is also misleading as it seems to suggest Google Chrome is still needed. But that is not the case.<\/p>\n<p><a href=\"https:\/\/docs.keeb.io\/via\">Another page<\/a> on that external site has the essential information (and the link to the download page for the standalone versions):<\/p>\n<p><em>&#8220;The VIA app now comes in two flavors: Desktop application &#8230; Web application&#8221;<\/em><\/p>\n<p>The link is &#8220;<a href=\"https:\/\/www.github.com\/the-via\/releases\/releases\/latest\">VIA Releases<\/a>&#8221; (is on GitHub).<\/p>\n<p><!-- \nScreenshot of Via\n--><\/p>\n<h2>Background information<\/h2>\n<p>The information used and changed by Via is stored in <a href=\"https:\/\/en.wikipedia.org\/wiki\/EEPROM\">EEPROM<\/a> memory (either actual physical EEPROM memory or &#8220;virtual&#8221; EEPROM memory). <\/p>\n<p>Note: An example of &#8220;virtual&#8221; EEPROM memory is on the <a href=\"https:\/\/pmortensen.eu\/world2\/2023\/06\/19\/keychron-v5-a-reasonably-priced-fully-macro-capable-qmk-based-mechanical-keyboard\/\">Keychron V5<\/a> (and probably many other ARM microcontroller-based keyboards), <strong><em>EEPROM is set up to be emulated<\/em><\/strong> by using the free <a href=\"https:\/\/en.wikipedia.org\/wiki\/Flash_memory\">flash memory<\/a> (the remaining not used by the firmware). This is a general feature of the QMK software. The default on the Keychron V5 is 2 KB &#8220;virtual&#8221; EEPROM memory, but it can be increased to overcome the macro size limit of about 150 key actions total in Via by changing the line <\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\n#define WEAR_LEVELING_LOGICAL_SIZE 2048\r\n<\/pre>\n<p>to, for example, <\/p>\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\r\n#define WEAR_LEVELING_LOGICAL_SIZE 20480\r\n<\/pre>\n<p>in file <a href=\"https:\/\/github.com\/qmk\/qmk_firmware\/blob\/master\/keyboards\/keychron\/v5\/config.h\">config.h<\/a>. For this value, this will enable about 2,300 key actions in total.<\/p>\n<p>Thus it may be cleared (Via configuration wiped out) when the keyboard gets its firmware updated. But it can be saved in Via to a file before the flashing of the firmware and be loaded after the flashing to restore the configuration.  <\/p>\n<p>Via communicates with the keyboard over USB using a particular protocol in order to read and write Via configuration settings. For this to work, the QMK firmware must have enabled Via support at compile time, for instance, in file <em><a href=\"https:\/\/github.com\/qmk\/qmk_firmware\/blob\/master\/keyboards\/keychron\/v5\/iso_encoder\/keymaps\/via\/rules.mk\">rules.mk<\/a><\/em> (at the &#8220;\/keymaps&#8221; level, a specific key map), &#8220;<strong><em>VIA_ENABLE = yes<\/em><\/strong>&#8220;.<\/p>\n<p><!-- \nE.g., without recompiling\n--><\/p>\n<p><!-- What is the actual size of the EEPROM on Keychron V5? \nBut it also has a lot of limitations. The space is limited as everything is stored in EEPROM. For example, in the XXX used in the [Keychron V5](https:\/\/www.keychron.com\/products\/keychron-v5-qmk-custom-mechanical-keyboard-iso-layout-collection) of which there is only 1 KB on -\n--><\/p>\n<h2>References<\/h2>\n<ul>\n<li><em><a href=\"https:\/\/www.overclockersclub.com\/reviews\/cmk_qmk_via\/4.htm\">Using and Building QMK and VIA, VIA part<\/a><\/em> (2020-10-01). Most descriptions of Via are way too terse (incl. the official documentation), but this one is very thorough. It describes Via in detail and how to use it, incl. screenshots.<\/li>\n<li><a href=\"https:\/\/www.reddit.com\/r\/MechanicalKeyboards\/comments\/vvvvpr\/via_is_now_on_the_web\/\">Via is now on the web<\/a>. Commenters have concerns about, for example, security. For example, <a href=\"https:\/\/www.reddit.com\/r\/MechanicalKeyboards\/comments\/vvvvpr\/comment\/ifnkddg\/\">this one<\/a>. Mozilla <a href=\"https:\/\/www.reddit.com\/r\/firefox\/comments\/10jig39\/comment\/j5kku1l\/\">has stated<\/a> it is unsafe (for item <em>&#8220;WebUSB API&#8221;<\/em>). The WebHID is <a href=\"https:\/\/www.reddit.com\/r\/MechanicalKeyboards\/comments\/vvvvpr\/comment\/ifm6o0f\/\">apparently dependent<\/a> on web browsers based on the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Blink_(browser_engine)\">Blink<\/a> engine, e.g., <a href=\"https:\/\/en.wikipedia.org\/wiki\/Google_Chrome\">Chrome<\/a>, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Microsoft_Edge\">Edge<\/a>, and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Opera_%28web_browser%29\">Opera<\/a>.\n<li><a href=\"https:\/\/github.com\/the-via\/app\">Source code for Via<\/a><\/li>\n<\/ul>\n<p><!-- Read state: \"The Layers group holds the different commands for activating layers, but is not as complete a list as the QMK Configurator provides.\"\n--><\/p>\n<p><!-- \nReddit thread: <https:\/\/www.reddit.com\/r\/olkb\/comments\/141ypnj\/vial_assistance_needed\/>\n--><\/p>\n<p><!-- T H E   E N D . . .   Marker for editing in WordPress: pppp --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Via tool does not need Google Chrome. There are standalone executables (though they do need an Internet connection to work), but this is not advertised at all at the Via web site. It appears as if the only way &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"more-link\" href=\"https:\/\/pmortensen.eu\/world2\/2023\/06\/12\/via-a-mechanical-qmk-keyboard-configuration-works-just-fine-without-google-chrome\/\"> <span class=\"screen-reader-text\">Via (a configuration tool for mechanical keyboards with QMK) works just fine ***without*** Google Chrome!<\/span> Read More &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[28,26,35,38],"tags":[],"_links":{"self":[{"href":"https:\/\/pmortensen.eu\/world2\/wp-json\/wp\/v2\/posts\/3819"}],"collection":[{"href":"https:\/\/pmortensen.eu\/world2\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pmortensen.eu\/world2\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pmortensen.eu\/world2\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pmortensen.eu\/world2\/wp-json\/wp\/v2\/comments?post=3819"}],"version-history":[{"count":76,"href":"https:\/\/pmortensen.eu\/world2\/wp-json\/wp\/v2\/posts\/3819\/revisions"}],"predecessor-version":[{"id":6367,"href":"https:\/\/pmortensen.eu\/world2\/wp-json\/wp\/v2\/posts\/3819\/revisions\/6367"}],"wp:attachment":[{"href":"https:\/\/pmortensen.eu\/world2\/wp-json\/wp\/v2\/media?parent=3819"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pmortensen.eu\/world2\/wp-json\/wp\/v2\/categories?post=3819"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pmortensen.eu\/world2\/wp-json\/wp\/v2\/tags?post=3819"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}