Skip to content

drop-in <script> that adds seamless NIP-46 support to apps that rely on window.nostr

Notifications You must be signed in to change notification settings

fiatjaf/window.nostr.js

Repository files navigation

window.nostr.js

a small <script> you can drop in any page that already uses NIP-07 and make it also work with NIP-46 automatically when the user doesn't have an extension installed.

It adds a small floating button on the side of the window that users can use to create Nostr accuonts or connect to their NIP-46 bunkers.

How to use it

Include <script src="https://unpkg.com/window.nostr.js/dist/window.nostr.js"></script> in your HTML and proceed to use window.nostr normally.

Customization

The script supports some optional configurations to personalize the design:

<script>
  window.wnjParams = {
    position: 'bottom',
    // The only accepted value is 'bottom', default is top
    accent: 'green',
    // Supported values: cyan (default), green, purple, red, orange, neutral, stone
    startHidden: true,
    // If the host page has a button that call `getPublicKey` to start a
    // login procedure, the minimized widget can be hidden until connected
    compactMode: true,
    // Show the minimized widget in a compact form
    disableOverflowFix: true,
    // If the host page on mobile has an horizontal scrolling, the floating
    // element/modal are pushed to the extreme right/bottom and exit the
    // viewport. A style is injected in the html/body elements fix this.
    // This option permit to disable this default behavior
  }
</script>
<script src="https://unpkg.com/window.nostr.js/dist/window.nostr.js"></script>

Bookmarklet

If a website has opted to not include this, but you like it, you can still use it on the website. Just add this to your browser bookmarks and click on it to load the widget on any website:

javascript:void((function(){var%20e=document.createElement('script');e.setAttribute('src','https://unpkg.com/window.nostr.js/dist/window.nostr.js');document.body.appendChild(e)})())

Demo videos

ef9d1de166731e45a542405d2f721d802f063ea32946e2c955b3182625994900.mp4
2b5ad2df2a40b1f4315f7ae8a141ae6424058eb30a4cc92362c0a3d3dd13731d.mp4