<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: fxxk</title>
    <description>The latest articles on DEV Community by fxxk (@fkcode).</description>
    <link>https://dev.to/fkcode</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F782277%2F756e7ed3-3672-4c64-9288-f1cdacde8b6e.jpeg</url>
      <title>DEV Community: fxxk</title>
      <link>https://dev.to/fkcode</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fkcode"/>
    <language>en</language>
    <item>
      <title>ohy - A Lightweight, Privacy-First CLI for Packaging Web into Desktop Apps</title>
      <dc:creator>fxxk</dc:creator>
      <pubDate>Mon, 03 Feb 2025 08:52:58 +0000</pubDate>
      <link>https://dev.to/fkcode/ohy-a-lightweight-privacy-first-cli-for-packaging-web-into-desktop-apps-58fk</link>
      <guid>https://dev.to/fkcode/ohy-a-lightweight-privacy-first-cli-for-packaging-web-into-desktop-apps-58fk</guid>
      <description>&lt;h2&gt;
  
  
  Convert web apps into desktop applications effortlessly.
&lt;/h2&gt;

&lt;p&gt;ohy is a lightweight command-line tool built in Rust that transforms web applications into desktop applications. With features like data privacy isolation, multiple concurrent instances, and easy deployment, it simplifies the transition while keeping resource usage efficient and user data secure across platforms.&lt;a href="https://github.com/ohyfun/ohy/" rel="noopener noreferrer"&gt;ohy project github&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Small single executable: Less than 5MB.&lt;/li&gt;
&lt;li&gt;Data privacy isolation: Isolates based on the connection address and application name.&lt;/li&gt;
&lt;li&gt;Multiple instances: Applications can be run concurrently with isolated session data by default.&lt;/li&gt;
&lt;li&gt;Easy deployment: Simply copy the binary file for use; no need for sudo privileges.&lt;/li&gt;
&lt;li&gt;Automatic icon retrieval: Automatically fetches the application icon.&lt;/li&gt;
&lt;li&gt;Centralized caching: Local cache data is stored in a fixed directory, avoiding scattered data writes that could clutter system directories.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Usage: ohy &lt;span class="nt"&gt;--url&lt;/span&gt; &amp;lt;url&amp;gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;-n&lt;/span&gt; &amp;lt;name&amp;gt;] &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;-w&lt;/span&gt; &amp;lt;width&amp;gt;] &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;-h&lt;/span&gt; &amp;lt;height&amp;gt;] &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;-a&lt;/span&gt; &amp;lt;user-agent&amp;gt;]

Options:
  &lt;span class="nt"&gt;--url&lt;/span&gt;             url example https://www.github.com
  &lt;span class="nt"&gt;-n&lt;/span&gt;, &lt;span class="nt"&gt;--name&lt;/span&gt;        name
  &lt;span class="nt"&gt;-w&lt;/span&gt;, &lt;span class="nt"&gt;--width&lt;/span&gt;       width default 1200
  &lt;span class="nt"&gt;-h&lt;/span&gt;, &lt;span class="nt"&gt;--height&lt;/span&gt;      height default 780
  &lt;span class="nt"&gt;-a&lt;/span&gt;, &lt;span class="nt"&gt;--user-agent&lt;/span&gt;  user agent
  &lt;span class="nt"&gt;--help&lt;/span&gt;, &lt;span class="nb"&gt;help      &lt;/span&gt;display usage information
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;To create a desktop application for qwen chat:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ohy &lt;span class="nt"&gt;--url&lt;/span&gt; https://chat.qwenlm.ai &lt;span class="nt"&gt;-n&lt;/span&gt; qwen
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Install the application using Cargo
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;cargo &lt;span class="nb"&gt;install &lt;/span&gt;ohy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Benefits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Lightweight and efficient resource usage&lt;/li&gt;
&lt;li&gt;Enhanced privacy through session isolation&lt;/li&gt;
&lt;li&gt;Simple and straightforward configuration&lt;/li&gt;
&lt;li&gt;Cross-platform compatibility&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  screenshot
&lt;/h1&gt;

&lt;h3&gt;
  
  
  linux
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdan1lbqfwi4cx2ucrtpb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdan1lbqfwi4cx2ucrtpb.png" alt="qwen" width="800" height="546"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc4v16de54y47k5ob5fxv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc4v16de54y47k5ob5fxv.png" alt="qwen-dark" width="800" height="546"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fri5rc6bmljmdkx3ftl06.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fri5rc6bmljmdkx3ftl06.png" alt="ohy-icon" width="800" height="553"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;linux app cache data directory &lt;code&gt;$HOME/.config/ohy/*&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fph8pl6gabkpsi1nb1fm7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fph8pl6gabkpsi1nb1fm7.png" alt="app-context-dir" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  windows
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0firsgkohvm6o2grlafg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0firsgkohvm6o2grlafg.png" alt="app1" width="800" height="543"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4x5n67n30lstnk52gpok.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4x5n67n30lstnk52gpok.png" alt="app2" width="800" height="536"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flslpqihbzp9ke05rfrhh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flslpqihbzp9ke05rfrhh.png" alt="app3" width="800" height="550"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fexfvu1fsuu9i6i8i6uvx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fexfvu1fsuu9i6i8i6uvx.png" alt="dark-mode" width="800" height="545"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3iw5a9ikcl66lpc47tbw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3iw5a9ikcl66lpc47tbw.png" alt="icon" width="800" height="1004"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;windows app cache data directory &lt;code&gt;C:\Users\$USER_NAME\AppData\Roaming\ohy\*&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fms1s84f8xgoa1konmbrl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fms1s84f8xgoa1konmbrl.png" alt="web-content" width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>linux</category>
      <category>web</category>
      <category>privacy</category>
    </item>
  </channel>
</rss>
