that it's been sync-ed to an NTP server manually within 500 ms or better.
NTP is much better, +- 5ms is not even ambitious. So,
systemd-timesyncd will do wonders!
You'll want to edit
/etc/systemd/timesyncd.conf to set
PollIntervalMaxSec= to something reasonable (I'd recommend not going below 120 s). Then, you can activate the service using
systemctl enable --now systemd-timesyncd and it will keep your system clock within a few milliseconds of UTC.
(some distros use
chronyd instead, same general idea applies, but different config file, and the service is called
chronyd instead of
But, to come back to your original question:
Assume I have a wrist watch that looses 1 second a month
That's a 0.39 ppm wrist watch. You don't have a 0.39 ppm wrist watch; for such applications, 15 ppm oscillators are more the order in which one moves.
< 1 ppm is oven-controlled oscillator domain, not wristwatch domain, for power reasons. Technically, when you need such precision for a compute/communication system, and it's not underground or to be deployed above 10 km, or in a war zone where that might be disabled, you'd go for a GPS receiver instead. These are commonly available with a Pulse-Per-Second output, and you can read the time at the last pulse from the NMEA strings read from the serial port of the receiver.
Now, you might find yourself in a submarine without access to the sky (but to FT-8? OK!) and need a good clock and time source. Then you'd use a good oven-controlled oscillator to generate e.g. a 2²⁰ Hz clock, or even an atomic clock. You count the seconds according to that clock, and whenever someone whose clock you trust comes by (i.e., someone with a GPS with an OCXO in holdover, your wristwatch's 15ppm paired with the natural 1s resolution is so bad that you stand a fair chance to make things worse, not better), you use a (very slow) control loop to adjust your clock. That way, you train it to be as true as it can long-term be to "real" time.
Is there a program for Linux that allows one to manually sync the computer time to a watch ?
You could write your own few python lines of Python or C or C++ code with OpenCV2 to extract the digits from a picture of your digital wristwatch, and set the time according to that; OpenCV can instead of reading a picture file simply use a webcam, as well.
On a less automated notion, what's wrong with looking at your watch, noticing it's 13:25:03, typing
timedatectl set-time "2022-05-24 13:26:00" and hitting enter exactly when that time actually happens? That's terrible in terms of accuracy, but low-effort.