A good barcode scanner is the Motorola LS2208 (affiliate link!). It is heavily used by profesional bookstores. It reads difficult barcodes, small and red, it is shipped with its support and it has a contunuous-reading mode. It costs around 100€. It doesn't read barcodes on screens.
Another good one is the Inateck BCST-53 2D USB. It is a tad slower than the Motoral, but reads difficult barcodes equally well. Its advantages is that it reads codes on your computer screen or smartphone and it reads QR codes. It is half cheaper, but isn't shipped with its support, which you will find here.
Note: double-check that the USB cable is included in your command.
We officially support the EPSON TM-20 thermal USB printer.
It was tested under GNU/Linux (Ubuntu 18.04, LinuxMint 19).