# What external tools do you use for Ignition development, and why?

**URL:** <https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759>\
**Category:** Ignition\
**Created:** [July 25, 2024, 5:07pm UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759 "2024-07-25T17:07:22Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![tyler.bennett](https://avatars.discourse-cdn.com/v4/letter/t/f04885/32.png) [@tyler.bennett](https://forum.inductiveautomation.com/u/tyler.bennett)\
**Post date:** [July 25, 2024, 5:07pm UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759/1 "2024-07-25T17:07:22Z")

</div>

What external tools/software do you use for Ignition development, and why?  
Please link to any relevant product pages.

This was inspired by @pturmel's mention of [jq](https://jqlang.github.io/jq/) which I have no familiarity with. I figure there must be a lot of things I am not familiar with that could be quality of life improvements.

> [@Changing Perspective component properties with scripting](https://forum.inductiveautomation.com/t/changing-perspective-component-properties-with-scripting/93754/2):
>
> You may be able to automate what you want with ~~`jquery`~~ `jq` _(whoops..)_ outside Ignition

For example

* * *

**WHAT:** External text editor, specifically I've been using [Notepad++](https://notepad-plus-plus.org/).

**WHY:**

- I will often copy scripts, JSON etc. out of designer to an external text editor modify it then paste it back in. I consider this one of the biggest strengths of Ignition, that _most_ configuration can be exported/imported or copy/pasted as text, allowing for external modification of that text.
- I've got some basic expectations from a text editor that are not included in Ignitions script editor.
  - [Regular Expression](https://npp-user-manual.org/docs/searching/#regular-expressions) based search and replace (love it, need it)
  - [Column-mode select and edit](https://npp-user-manual.org/docs/editing/) ![](https://us1.discourse-cdn.com/inductiveautomation/original/3X/6/f/6feb201e5253df5cf7ff1ca9ef274c9c264df3d2.gif)

- White space formatting (I prefer a less intense formatting for whitespace characters so I can leave display of whitespace characters enabled and notice/use it when I need to. I almost always turn whitespace display off in designer's script editor as I find it distracting (but I appreciate its it's tab lines).
- It used to be that designer's script editor would universally mess up indentation when I copied and pasted lines, haven't noticed that for a bit so perhaps it has improved in recent versions (or I have adapted).

---

<div class="post-metadata">

**Author:** ![lrose](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lrose/32/62724_2.png) [@lrose](https://forum.inductiveautomation.com/u/lrose)\
**Post date:** [July 25, 2024, 5:11pm UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759/2 "2024-07-25T17:11:08Z")

</div>

> [@tyler.bennett](#):
>
> specifically I've been using [Notepad++](https://notepad-plus-plus.org/).

I used Notepad++ for a long time, but in the last year have actually converted over to [NeoVim](https://neovim.io/). May not be for everyone but, not having to move my hands away from the keyboard (unless I need to move over to the designer), makes my work flow much more efficient.

Definitely takes some time to adjust to Vim Motions, but once I did my work flow sped up significantly.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [July 25, 2024, 5:25pm UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759/3 "2024-07-25T17:25:24Z")

</div>

The KDE desktop in Linux.

The ability to open both local and remote (sftp:// URLs) resources in the desktop's **native** file manager is an extreme time-saver. It also helps that the unified environment means I can open remote files directly from those file manager windows, and any app that integrates with Linux desktops will get the real URL, allowing efficient remote editing. (KDE's notepad++ equivalent, **kate** , does this utterly seamlessly.) Any non-integrated apps will be pointed at a quick copy in `/tmp`.

All of the above properly use any SSH keys currently present in my ring, avoiding any prompts on the systems I normally access. Windows has **no** support for native use of SFTP in its file manager, nor any **unified** ssh-agent implementation. (putty/winscp/pageant are useful, but **not** integrated with anything else.)

(Kate has all of the functionality you highlight in notepad++, and a lot more.)

Linux's other popular desktops have similar capabilities, but I find KDE plasma the most friendly to power users.

---

<div class="post-metadata">

**Author:** ![msteele](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/msteele/32/77889_2.png) [@msteele](https://forum.inductiveautomation.com/u/msteele)\
**Post date:** [July 25, 2024, 5:44pm UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759/4 "2024-07-25T17:44:57Z")

</div>

The main tools we use are:

- Figma, for user interface design (components, styles, etc translate cleanly to their Perspective counterparts)
- Excel, for site deployment templates that create an entire plant's data model and inject document tag values, custom props, etc via @pturmel's Spreadsheet Import Tool.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [July 25, 2024, 5:57pm UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759/5 "2024-07-25T17:57:27Z")

</div>

I should add that my password manager is [KeePassXC](https://keepassxc.org/), for multiple reasons:

- Doesn't store my passwords in anyone's cloud. (Though you can.)
- Cross platform.
- Has a great browser plugin, supporting all the major browsers.
- Include ssh-agent support in Linux, adding and removing my primary SSH keys whenever the password database is opened/locked.

---

<div class="post-metadata">

**Author:** ![Noah\_Casey](https://avatars.discourse-cdn.com/v4/letter/n/e480ec/32.png) [@Noah\_Casey](https://forum.inductiveautomation.com/u/Noah_Casey)\
**Post date:** [July 25, 2024, 6:36pm UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759/6 "2024-07-25T18:36:42Z")

</div>

One tool that I've been using a lot more is:

[Postman](https://www.postman.com/)

Postman is an API platform that helps developers build and use APIs. It comes in handy when using the WebDev module to create endpoints.

I do a lot of my testing in Postman then build the script equivalent inside of Ignition.

Along with postman when working with APIs I use the following for better data readability:

[JSONFormatter](https://jsonformatter.org/) - Paste in JSON to view it in pretty print  
[XMLFormatter](https://jsonformatter.org/xml-formatter) - Paste in XML to view it in pretty print

Another tool I use a lot is not a program but a feature built in Windows that many people don't know about if you press WINDOWS KEY + V. You have clipboard history I get asked all the time in meetings what program I use and its built in Windows.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [July 25, 2024, 6:36pm UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759/7 "2024-07-25T18:36:44Z")

</div>

Am I allowed to plug [Kindling](https://forum.inductiveautomation.com/t/kindling-a-collection-of-tools-to-help-with-ignition/54689) here? 😄

---

<div class="post-metadata">

**Author:** ![josborn](https://avatars.discourse-cdn.com/v4/letter/j/4bbf92/32.png) [@josborn](https://forum.inductiveautomation.com/u/josborn)\
**Post date:** [July 25, 2024, 8:30pm UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759/8 "2024-07-25T20:30:58Z")

</div>

> [@Noah\_Casey](#):
>
> WINDOWS KEY + V

How did i not know this?! I am going to use this all the time, thank you!

---

<div class="post-metadata">

**Author:** ![msteele](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/msteele/32/77889_2.png) [@msteele](https://forum.inductiveautomation.com/u/msteele)\
**Post date:** [July 25, 2024, 8:46pm UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759/9 "2024-07-25T20:46:37Z")

</div>

Was just discussing with a colleague how we need macropads with a key to insert the string `view.params.tagPath`. Now that would be an efficiency boost.

---

<div class="post-metadata">

**Author:** ![lrose](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lrose/32/62724_2.png) [@lrose](https://forum.inductiveautomation.com/u/lrose)\
**Post date:** [July 26, 2024, 3:58am UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759/10 "2024-07-26T03:58:55Z")

</div>

In NeoVim you can setup macros to do things exactly like this.

---

<div class="post-metadata">

**Author:** ![Alejandro\_Alaco](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/alejandro_alaco/32/59849_2.png) [@Alejandro\_Alaco](https://forum.inductiveautomation.com/u/Alejandro_Alaco)\
**Post date:** [July 26, 2024, 8:58am UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759/11 "2024-07-26T08:58:03Z")

</div>

Lightsot screenshot a lot for my questions in this forum

---

<div class="post-metadata">

**Author:** ![rdgerken](https://avatars.discourse-cdn.com/v4/letter/r/53a042/32.png) [@rdgerken](https://forum.inductiveautomation.com/u/rdgerken)\
**Post date:** [July 26, 2024, 11:39am UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759/12 "2024-07-26T11:39:58Z")

</div>

Can you guys explain what you are editing outside of the designer directly? I get that you "copy" from the designer, into something like Notepad++, make your edits, and then "paste" back into the designer... but reading Phil's message about kate seems to imply that he is opening project files directly from the linux file manager and modifying... but it isn't clear to me if you then can save the file there in the external tool, or if you have to somehow copy it back into the designer. For example, let's say I navigate to a code.py file for a gateway script - if I open that in an external editor, make a modification, then save the file - it seems that it would bypass updating the resource.json (is that "safe" to do? or does Ignition watch for these edits outside of the designer?). I clearly don't know what I'm talking about - but I'm just curious what kind of edits you can safely make to project files without pasting the edits back in through the designer. Thanks!

---

<div class="post-metadata">

**Author:** ![victordcq](https://avatars.discourse-cdn.com/v4/letter/v/f6c823/32.png) [@victordcq](https://forum.inductiveautomation.com/u/victordcq)\
**Post date:** [July 26, 2024, 12:02pm UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759/13 "2024-07-26T12:02:04Z")

</div>

I've edited some project files directly and the updates do sometimes take a few minutes to apply (or after a gateway restart)

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [July 26, 2024, 12:04pm UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759/14 "2024-07-26T12:04:53Z")

</div>

I could edit Ignition project resource files remotely, at least the ones in text form, but I generally don't. Ignition notices such edits on a configurable schedule, normally five minutes. A running designer will not get the changes unless it deliberates updates.

When using a tool like kate to edit remote files, saving the file within kate saves to the remote location. I typically use these conveniences to manipulate `ignition.conf` or to open the text-based `wrapper.log` (way easier to read than the gateway logs page). For VMs that I have set up as dev environments for my various clients, I create folders of shortcuts with quick access (sftp:// URLs in KDE's file manager) to the Ignition `data/` and `data/logs/` folders. I'm always only a couple clicks away from access to those resources.

---

<div class="post-metadata">

**Author:** ![lrose](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lrose/32/62724_2.png) [@lrose](https://forum.inductiveautomation.com/u/lrose)\
**Post date:** [July 26, 2024, 1:01pm UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759/15 "2024-07-26T13:01:51Z")

</div>

Scripts mostly, but also SVG markup, JSON from various places, `ignition.conf`. I also use it for easy viewing and searching of the `wrapper.log` files.

I try to stay away from editing project resource files directly, I wouldn't exactly call that "safe" to edit.

---

<div class="post-metadata">

**Author:** ![amarks](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/amarks/32/45610_2.png) [@amarks](https://forum.inductiveautomation.com/u/amarks)\
**Post date:** [July 26, 2024, 1:25pm UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759/16 "2024-07-26T13:25:58Z")

</div>

SVG Libraries:

> **[Noun Project: Free Icons & Stock Photos for Everything](https://thenounproject.com/)**
>
> Noun Project has the most diverse collection of free icons and stock photos. Download SVG and PNG. Over 5 million art-quality icons and free photos.

> **[20000 svg free clipart - 1 | Public domain vectors](https://publicdomainvectors.org/en/tag/svg/date/svg/360/1)**
>
> svg | Download vector files and SVG graphics free of copyright. Use our images for unlimited commercial purpose without asking permission. - 1 - 1

> **[SVG Repo - Free SVG Vectors and Icons](https://www.svgrepo.com/)**
>
> Free Vectors and Icons in SVG format. ✅ Download free mono or multi color vectors for commercial use. Search in 500.000+ Free SVG Vectors and Icons.

Online SVG Code Editor:  
[https://editsvgcode.com/](https://editsvgcode.com/)

Online SVG Graphical Editor:

> **[Boxy SVG](https://boxy-svg.com/app)**
>
> Create and edit Scalable Vector Graphics (SVG) files online

Monochrome Color Palette Generator:

> **[Monochrome Color Palette Generator | Toptal®](https://www.toptal.com/designers/colourcode/monochrome-color-builder)**
>
> Browse and discover beautiful monochrome color combinations and color palettes for your designs with Colourcode.

Gradient Generator:

> **[Gradient Generator - colordesigner.io](https://colordesigner.io/gradient-generator)**
>
> The tool itself is used to generate a gradual change in the color gradient from one color to another, essentially leaving the user with a result of many different in-between colors of the blend.

---

<div class="post-metadata">

**Author:** ![lrose](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lrose/32/62724_2.png) [@lrose](https://forum.inductiveautomation.com/u/lrose)\
**Post date:** [July 26, 2024, 1:37pm UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759/17 "2024-07-26T13:37:39Z")

</div>

I'll add these:

> **[Pocket Guide to Writing SVG](https://svgpocketguide.com/)**
>
> A quick but thorough “pocket” sized reference to get started writing Scalable Vector Graphics by Joni Trythall

> **[SVG: Scalable Vector Graphics | MDN](https://developer.mozilla.org/en-US/docs/Web/SVG)**
>
> Scalable Vector Graphics (SVG) is an XML-based markup language for describing two-dimensional based vector graphics.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [July 26, 2024, 2:10pm UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759/18 "2024-07-26T14:10:37Z")

</div>

Keith Gamble has a VSCode plugin, Flint, that's exactly geared towards "direct editing of scripts outside of the Designer":  
[https://forum.inductiveautomation.com/t/flint-a-vscode-extension-to-help-with-ignition/88319?u=pgriffith](https://forum.inductiveautomation.com/t/flint-a-vscode-extension-to-help-with-ignition/88319)

---

<div class="post-metadata">

**Author:** ![Ryan\_Deardorff](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryan_deardorff/32/63815_2.png) [@Ryan\_Deardorff](https://forum.inductiveautomation.com/u/Ryan_Deardorff)\
**Post date:** [July 26, 2024, 2:12pm UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759/19 "2024-07-26T14:12:15Z")

</div>

> **[HeidiSQL - MariaDB/MySQL, MSSQL, PostgreSQL, SQLite and Interbase/Firebird...](https://www.heidisql.com/)**
>
> HeidiSQL is a free and powerful client for MariaDB, MySQL, Microsoft SQL Server, PostgreSQL, SQLite and Interbase/Firebird

And yes, Notepad++ is a must.

---

<div class="post-metadata">

**Author:** ![pascal.fragnoud](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pascal.fragnoud/32/24728_2.png) [@pascal.fragnoud](https://forum.inductiveautomation.com/u/pascal.fragnoud)\
**Post date:** [July 26, 2024, 2:12pm UTC](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759/20 "2024-07-26T14:12:53Z")

</div>

That link points to a lounge thread, most people won't be able to see that

[Next page](https://forum.inductiveautomation.com/t/what-external-tools-do-you-use-for-ignition-development-and-why/93759.md?page=2)
