<?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: OffCorner Developer</title>
    <description>The latest articles on DEV Community by OffCorner Developer (@offcorner).</description>
    <link>https://dev.to/offcorner</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%2F293866%2F5b7c8b0e-0d2f-4878-953d-a149215f52be.jpg</url>
      <title>DEV Community: OffCorner Developer</title>
      <link>https://dev.to/offcorner</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/offcorner"/>
    <language>en</language>
    <item>
      <title>creating a faster Synology quickconnect.to</title>
      <dc:creator>OffCorner Developer</dc:creator>
      <pubDate>Sun, 13 Mar 2022 21:52:06 +0000</pubDate>
      <link>https://dev.to/offcorner/creating-a-faster-synology-quickconnectto-2ha2</link>
      <guid>https://dev.to/offcorner/creating-a-faster-synology-quickconnectto-2ha2</guid>
      <description>&lt;p&gt;After setting up my third Synology Server (rip DS415+ C2000 CPU error) I set up my external access using the QuickConnect service provided by Synology. It checks if the server is in your local network and depending on that redirects you to a https protected website linking to your server (either internal network IP or through a proxy provided by Synology).&lt;br&gt;
There was one annoyance though: &lt;br&gt;
going to the address &lt;code&gt;[QUICKCONNECT_USERNAME].quickconnect.to&lt;/code&gt; when I was in my local network took quite long.&lt;/p&gt;
&lt;h2&gt;
  
  
  Official way: setup a custom domain
&lt;/h2&gt;

&lt;p&gt;There is the possibility of using a custom domain and setting up a DNS server to route local access to the Synology directly without going outside of the home network. I have done this with my previous Synology Nas devices but the convenience of quickconnect.to made me stick with it this time. &lt;/p&gt;
&lt;h3&gt;
  
  
  caveats
&lt;/h3&gt;

&lt;p&gt;The issue with setting up a local DNS Server is that browsers like Chrome can (and as far as I am aware of nowadays do by default) use other DNS servers or DNS over https, thus ignoring your local DNS server. If your router doesn't support redirecting requests to a domain that points to your external IP then you might end up having to look for other alternatives. &lt;/p&gt;

&lt;p&gt;So today we will be using a simple, but for the most part very effective trick to check if the Nas is in our local network or not and redirect quicker than the quickconnect.to service.&lt;/p&gt;
&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;This trick simply tries accessing the Nas using the local address first and, if it doesn't respond within a certain threshold, redirects to the outbound quickconnect.to address.&lt;/p&gt;
&lt;h2&gt;
  
  
  Script
&lt;/h2&gt;

&lt;p&gt;Here's the script making it work:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;internal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://[INTERNAL_SYNOLOGY_IP].[QUICKCONNECT_USERNAME].direct.quickconnect.to:5001/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;external&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://[QUICKCONNECT_USERNAME].quickconnect.to/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;internal&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;internal&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nx"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;external&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;})();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;replace &lt;code&gt;[INTERNAL_SYNOLOGY_IP]&lt;/code&gt; with the internal IP Address of your Synology and [QUICKCONNECT_USERNAME] with your quickconnect id.&lt;br&gt;
We have turned it into a self executing anonymous function so that we don't have issues with variables being already declared. Our threshold right now is 1000ms but you can increase it in case your internal network is slow and the nas doesn't respond in time.&lt;/p&gt;

&lt;p&gt;The fetch request fails because of CORS issues, that is fine though as we are looking for &lt;em&gt;any&lt;/em&gt; response from a server at that IP address. If that takes longer than 1 second, we redirect to the official quickconnect.to address.&lt;/p&gt;
&lt;h3&gt;
  
  
  Make it even faster
&lt;/h3&gt;

&lt;p&gt;If you want to be risky and make the external address faster, you can hardcode the country code of the Synology CDN by replacing the &lt;code&gt;external&lt;/code&gt; variable with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;external&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://[QUICKCONNECT_USERNAME].[COUNTRY_CODE].quickconnect.to/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In order to find it, simply connect to your synology via [QUICKCONNECT_USERNAME].quickconnect.to while outside your home network and read the country code from the url. In my case it's &lt;code&gt;de7&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bookmarklet
&lt;/h2&gt;

&lt;p&gt;Ever since finding out that bookmarklets exist I have been a very avid user of them. My bookmarks Bar is filled with Bookmarklets for all the various different things (including a dark mode, webpage translator, bookmarks manager, web scraper… you name it!).&lt;br&gt;
Essentially, bookmarks starting with &lt;code&gt;javascript:&lt;/code&gt; instead of &lt;code&gt;https://&lt;/code&gt; will execute any following JavaScript code you throw at it. &lt;br&gt;
So here's our bookmarklet:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;javascript&lt;/span&gt;&lt;span class="p"&gt;:(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;internal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://[INTERNAL_SYNOLOGY_IP].[QUICKCONNECT_USERNAME].direct.quickconnect.to:5001/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;external&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://[QUICKCONNECT_USERNAME].quickconnect.to/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;internal&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;internal&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nx"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;external&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;})();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  HTML Bookmark
&lt;/h2&gt;

&lt;p&gt;First I wanted to spin up a vercel, netlify or glitch site for this but then I realised: I can just save the file as an HTML file locally on my computer and create a bookmark for that. So just copy the code below into a text editor, save it as an HTML file (like synology.html) and drag it into your browsers bookmarks bar. Works just as great.&lt;/p&gt;

&lt;p&gt;With a tiny bit of styling (note: we are inlining everything because it's small enough to understand and would just add overhead):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;QuickConnect&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;internal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
          &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://[INTERNAL_SYNOLOGY_IP].[QUICKCONNECT_USERNAME].direct.quickconnect.to:5001/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;external&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://[QUICKCONNECT_USERNAME].quickconnect.to/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;internal&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;internal&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
        &lt;span class="nx"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;location&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;external&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="p"&gt;})();&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;html&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
      &lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;flex&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;justify-content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;align-items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ui-sans-serif&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;system-ui&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;-apple-system&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;BlinkMacSystemFont&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="s1"&gt;"Helvetica Neue"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Arial&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#042069&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#fff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2rem&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    connecting to synology
  &lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There you have it!&lt;br&gt;
I hope this helps somebody. Maybe you are using quickconnect and have also been annoyed or you just learned about bookmarklets and want to create your own :)&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>bookmarklet</category>
      <category>html</category>
      <category>beginners</category>
    </item>
    <item>
      <title>spice up your omnibox with deepl and more!</title>
      <dc:creator>OffCorner Developer</dc:creator>
      <pubDate>Thu, 04 Feb 2021 16:39:11 +0000</pubDate>
      <link>https://dev.to/offcorner/spice-up-your-omnibox-with-deepl-1405</link>
      <guid>https://dev.to/offcorner/spice-up-your-omnibox-with-deepl-1405</guid>
      <description>&lt;p&gt;Do you find yourself translating sentences quite often or are you just a fan of &lt;a href="https://www.deepl.com/translator"&gt;deepl.com&lt;/a&gt;?&lt;br&gt;
Today we are going to use the custom Search Engine functionality built into most browsers to trigger a translation right from the omnibox!&lt;br&gt;
Translating in Deepl results in the original text being added to the current url, like so:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--g40RrWLP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/08t9kso7iq24fxez45jw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--g40RrWLP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/08t9kso7iq24fxez45jw.png" alt="Deepl Url"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can create a new Search Engine in the Chrome Settings, and set it up like so:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9-Wf1ZeP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/99l1g6ywe6ifelcdom4i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9-Wf1ZeP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/99l1g6ywe6ifelcdom4i.png" alt="Google Chrome custom Search Engine"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is the URL String you will have to enter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://deepl.com/translator#en/de/%s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The %s is a placeholder for any text you would like to add later on.&lt;/p&gt;

&lt;p&gt;Now, whenever we type "en-de" in the omnibox and press tab, we can enter the english text that we'd like to have translated by deepl. Pressing enter brings us right to the deepl page with the translation!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kNhcBAQz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/t2bwjsre15tlc4bk8fh5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kNhcBAQz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/t2bwjsre15tlc4bk8fh5.jpg" alt="Omnibox Deepl Search"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also use this as a note-taking shortcut:&lt;/p&gt;

&lt;pre&gt;
&lt;code&gt;
data:text/html, 
&amp;lt;html contenteditable&amp;gt;&amp;lt;body&amp;gt;%s&amp;lt;/body&amp;gt;
&amp;lt;style&amp;gt;
    html {
        font-family: system-ui; 
        background: %23f5f3f0;
        padding: 1em;
    }
    body {
        margin: 2em auto;
        max-width: 40em; 
        background: %23fff;
        padding: 1em;box-shadow: 5px 5px 0 rgb(0 0 0 / 10%);
    }
&amp;lt;/style&amp;gt;
&amp;lt;script&amp;gt;window.onbeforeunload = function(){  return 'Are you sure you want to leave?';};&amp;lt;/script&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;
&lt;/pre&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aciEnBYM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qh0i6959ud5p6th8gfft.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aciEnBYM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qh0i6959ud5p6th8gfft.png" alt="Note Taking omnibox shortcode"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, all you have to do is type "note", press tab and write anything down!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uZjGzRNY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/d01znu0vdk03l0z5lck0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uZjGzRNY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/d01znu0vdk03l0z5lck0.png" alt="Test Note"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>beginners</category>
      <category>html</category>
    </item>
  </channel>
</rss>
