Long term connection between Arduino and computer
I think the easiest option may be to keep the USB (ACM) link, so you
don't have to do anything special on the Arduino, and try to figure out
a way to identify the correct device on the computer side.

On Linux, providing consistent device names for specific peripherals is
normally the job of udev. You could add your own udev rule to create a
symbolic link for your Arduino every time you plug it in. Then, your
custom software would always open /dev/neopixel-monitor, which would
be a symlink to the proper /dev/ttyACMx device.

Actually, you may not need write your own rule. I took a look at the
udev rules installed by default on my Ubuntu 16.04 and found a file
named /lib/udev/rules.d/60-serial.rules meant to populate the
/dev/serial/by-path/ and /dev/serial/by-id/ directories. Then I
plugged in my Arduino Uno R3 and saw the symlink
/dev/serial/by-id/usb-Arduino__www.arduino.cc__0043_93140364233351E00101-if00
automatically created, which right now points to ../../ttyACM0. In
this name, 0043 is the USB device ID of the Uno, and the following
alphanumeric sequence looks like a serial number. The if00 looks like
an interface number, and may vary (it won't, se Majenko's comment).
The link name should
be a good way to uniquely identify that particular Arduino.