For developers who want to prepare their project for the latest Python releases, here’s how to install Python 3.12 in all current Ubuntu releases.

Python 3.12 finally goes stable. It features more flexible f-string parsing, Per-Interpreter GIL, new type annotation syntax for generic classes, support for the Linux perf profiler, and many performance improvements, but removed the distutils package and wstr from Unicode. See more about Python 3.12.

How to Install Python 3.12

Python is easy to install in Ubuntu by either using the popular Deadsnakes PPA or building from the source. Choose either one that you prefer.

Option 1: Install Python 3.12 from PPA

For Ubuntu 22.04, Ubuntu 20.04, and their derivatives such as Linux Mint 21, the Deadsnakes PPA has made the packages for all supported CPU architecture types: amd64, arm64/armhf, ppc64el, and s390x.

1. First, press Ctrl+Alt+T on keyboard to open terminal. Then paste the command below and hit run to add PPA:

sudo add-apt-repository ppa:deadsnakes/ppa

Type user password (no asterisk feedback) when it asks and hit Enter to continue.

2. Ubuntu 20.04+ automatically refresh package cache while adding PPA. However, Linux Mint user may need to do this job manually by running command:

sudo apt update

3. Finally, run command to install Python 3.12:

sudo apt install python3.12

Option 2: Compile and install Python 3.12 from source

Don’t trust third-party repositories or you’re running Ubuntu 23.04 or Ubuntu 18.04? It’s easy to build Python from the source tarball.

1. First download the source tarball from its ftp download page:

2. Then open ‘Downloads’ folder, extract the source tarball, finally right-click on source folder and select “Open in Terminal”.

3. When terminal opens, run the commands below one by one to configure and build Python:

./configure --enable-optimizations
sudo make -j4 && sudo make altinstall

NOTE: You have to first install all build dependency libraries before running last 2 commands. See this tutorial for details.

Verify:

Once installed Python 3.12, verify by running command:

python3.12 --version && pip3.12 --version

Set Python 3.12 as default

It’s NOT recommended to set non-preinstalled Python package as default for Python3, since it will break some core applications.

However, you may try to set python3.12 as python by running the commands below one by one:

  • First, run command to find out where Python 3.12 executable is installed to:
    whereis python3.12

    It’s either /usr/bin/python3.12 or /usr/local/bin/python3.12.

  • Then, add Python 3.12 as an alternative link to python (replace /usr/local/bin/python3.12 according last command output).
    sudo update-alternatives --install /usr/bin/python python /usr/local/bin/python3.12 1
  • Finally, run command to set default for /usr/bin/python executable if more then one available:
    sudo update-alternatives --config python

Uninstall Python 3.12:

If you installed Python 3.12 using the PPA repository, simply open terminal and run command to remove it:

sudo apt remove --autoremove python3.12

For the PPA, run command to remove it:

sudo add-apt-repository --remove ppa:deadsnakes/ppa

If you built the Python 3.12 from source tarball, then there’s no uninstaller script to automate the job.

However, you may manually remove the installed files by running commands:

cd /usr/local/bin && sudo rm python3.12* pip3.12 idle3.12 pydoc3.12 2to3-3.12
cd /usr/local/lib && sudo rm -R python3.12 pkgconfig libpython3.12.a

RedHat announced the release of Podman Desktop 1.0 general availability (GA) on Tuesday. Here’s how to install it in all current Ubuntu releases.

Podman Desktop is a container management tool.  It provides a simple and user friendly user interface to easily create, manage, and deploy Podman, Docker, Lima, Openshift Local, Kind, etc containers and complex container configurations all in one place.

The app provides out-of-the-box Kubernetes environment based on Kind, allowing to create a multi-node Kubernetes cluster on local machine, and test applications without having to install and configure Kubernetes manually.

Other features include:

  • Install and run in Windows, macOS, and Linux
  • Keep Podman and other dependencies up to date
  • Manage multiple container engines at the same time.
  • Compatabile with Docker Compose
  • VPN and proxies configuration
  • And more and more, see release note for details.

How to Install Podman Desktop 1.0 in Ubuntu:

The application is available to install in most Linux using Flatpak package. Fedora 38 & Linux Mint 21 can simply search for and install it from either Gnome Software or Software Manager.

For all current Ubuntu users, follow the steps below one by one to get it.

1. First, open terminal either by searching from ‘Activities’ overview or by pressing Ctrl+Alt+T on keyboard.

2. Then, run command to enable flatpak support.

sudo apt install flatpak

Ubuntu 18.04 user need to run the 2 sudo commands to add the Flatpak PPA first.

3. Finally, install Podman Desktop by running command:

flatpak install https://dl.flathub.org/repo/appstream/io.podman_desktop.PodmanDesktop.flatpakref

NOTE: Besides the software package itself, there may be other run-time libraries to install automatically.

Once installed, search for and launch it from ‘Activities’ overview and enjoy!

NOTE: first time installing a flatpak app may needs a log out and back in to make app icon visible.

Uninstall Podman Desktop

To remove the software package, also press Ctrl+Alt+T on keyboard to open terminal and run command:

flatpak uninstall io.podman_desktop.PodmanDesktop

Also run flatpak uninstall --unused to remove useless runtime libraries.

The ‘Tab’ key bash auto-completion does not work for you? Here’s how to re-enable this feature in Ubuntu.

When typing in terminal/command console, user can press ‘Tab’ key to auto-complete command, options, file path & name. This feature is quite useful and available out-of-the-box for every user with home directory.

If you broke something done and the feature does no longer work, then this tutorial could help.

Step 1: Install bash-completion package

For Debian, Ubuntu, and most other Linux, this feature is implemented by bash-completion package files. So the first step is to make sure that package is installed on your system.

To do so, open terminal/command console and run command:

sudo apt install bash-completion

Step 2: Enable Bash Completion

For each user, there’s a .bashrc file in user home directory. The file runs automatically on every login, and it contains the rule to enable bash completion.

1. First, run command to edit the file:

nano ~/.bashrc

2. When the file opens, add the following lines or make sure the lines below exist:

if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

To save file, press Ctrl+X, type y and hit Enter.

You can alternatively edit the system wide config file:

sudo nano /etc/bash.bashrc

Then enable the corresponding lines (remove # at the beginning for each line), so it applies to all users at login.

After saving the change, it should work immediately in new terminal window or command console.

In addition

The default configuration files for bash completion is located in “/usr/share/bash-completion”. However, some Linux Distro or may be 3rd party program may add rules by creating files under “/etc/bash_completion.d/”.

So, if the feature does not work for a specific command, go check the config file under “/etc/bash_completion.d/”.

For Ubuntu 23.04, Fedora 38 and other Linux with Python 3.11 as default, Pithos 1.6.1 was released today to fix the plugin support!

Pithos is a simple free open-source GTK client for Pandora music & podcasts, writing in Python programming language.

The previous versions lack plugin support for the latest Linux Distributions due to Python 3.11. When you try to open the ‘Plugins’ tab in Preferences, it just shows a blank page.

If you start it from command line, it will output something look like:

Traceback (most recent call last):
  File "/usr/share/pithos/pithos/plugin.py", line 147, in on_got_bus
    plugin = plugins[name] = load_plugin(name, window, bus)
                             
  File "/usr/share/pithos/pithos/plugin.py", line 101, in load_plugin
    module = __import__('pithos.plugins.' + name)
             
  File "/usr/share/pithos/pithos/plugins/mpris.py", line 66, in 
    class PithosMprisService(DBusServiceObject):
  File "/usr/share/pithos/pithos/plugins/mpris.py", line 647, in PithosMprisService
    @dbus_method(MEDIA_PLAYER2_IFACE)
     
  File "/usr/share/pithos/pithos/plugins/dbus_util/DBusServiceObject.py", line 138, in decorator
    in_args = _create_arginfo_list(func, in_signature)
              
  File "/usr/share/pithos/pithos/plugins/dbus_util/DBusServiceObject.py", line 123, in _create_arginfo_list
    arg_names = inspect.getargspec(func).args

To fix the issue, the new 1.6.1 was released. Which, also fixed the issue that very short songs are being labeled as advertisements.

Nothing else!

How to Install Pithos 1.6.1 in Ubuntu via PPA

For all current Ubuntu releases, including Ubuntu 18.04, Ubuntu 20.04, Ubuntu 22.04, Ubuntu 22.10, Ubuntu 23.04, and their based systems, I’ve uploaded the app package into this PPA repository.

To add the PPA and install Pithos package, do:

  1. First, press Ctrl+Alt+T key combination on keyboard to open terminal. When it opens, run the command below to add the PPA:
    sudo add-apt-repository ppa:ubuntuhandbook1/apps

    Type user password when it asks (no asterisk feedback) and hit Enter to continue.

  2. Then, run command to fresh the package cache for old Ubuntu 18.04 and Linux Mint:
    sudo apt update
  3. Finally, install or update the lightweight Pandora Radio client to listen online music:
    sudo apt install pithos

As the application does not update frequently, you may also download & install the .deb package directly from this page.

For most Linux, Pithos is also available to install as Flatpak package runs in sandbox.

Uninstall Pithos

To remove the Ubuntu PPA, open terminal and run command:

sudo add-apt-repository --remove ppa:ubuntuhandbook1/apps

Or, open ‘Software & Updates’ utility and remove the source line under ‘Other Software’ tab.

To remove Pithos, use command:

sudo apt remove --autoremove pithos

Ubuntu now provides expanded security maintenance (esm) updates for the packages in main/universe repositories through “Ubuntu Pro” service.

With it, you can get 5 years more (total of 10 years) security updates support for Ubuntu LTS. Meaning Ubuntu 22.04 support until 2032, Ubuntu 20.04 support until 2030, and Ubuntu 18.04 support until 2028.

For Ubuntu Server or Desktop users that use apt upgrade to install updates, you’ll get following prompt in the output:

Get more security updates through Ubuntu Pro with ‘esm-apps’ enabled: …

In this tutorial, I’m going to show you how to get rid of this “esm-apps” prompt by:

  • either enable Ubuntu Pro security updates.
  • or skip the esm-apps updates and disable the command line prompt.

Option 1: Enable Ubuntu Pro Security Updates

For each user, Ubuntu Pro is free for up to 5 machines for personal use! Here’s how to enable it in both graphical and command line ways!

For Ubuntu Desktop

1. For Desktop users, first search for and launch “Software & Updates” tool from ‘Activities’ overview.

2. When it opens, navigate to “Ubuntu Pro” tab, and click on “Enable Ubuntu Pro” button. In the pop-up dialog will show you a short code.

For Ubuntu 18.04, run sudo apt update && sudo apt full-upgrade command first if you don’t see the ‘Ubuntu Pro’ tab.

3. Next, in your web browser go to https://ubuntu.com/pro/attach. Login with your account (create for free if you don’t have one). Finally, enter the code you got in the last step, and then click “Submit”.

4. Finally, go back “Software & Updates” and click “Confirm” (see screenshot in step 2). When done, you’ll see the “Ubuntu Pro support is enabled” text in green. And, you can toggle the options to enable/disable ESM Infra, ESM apps, Kernel Livepatch as you want.

For Ubuntu Server (command line way)

For Server and those who prefer Linux command, this can be done by running a single command in console.

First, in web browser go to https://ubuntu.com/pro/dashboard. Log in with your account (create if you don’t have one), then copy or write down the key token.

Then, in terminal or command console, run:

sudo pro attach KEY_TOKEN_HERE

When done, it outputs the enabled and disabled services in terminal output. You can then run command to enable/disable your desired services:

  • Enable an Ubuntu Pro service.
    sudo pro enable SERVICE_NAME
  • Disable access an Ubuntu Pro service.
    sudo pro disable SERVICE_NAME

In the commands, replace SERVICE_NAME with one of esm-apps, esm-infra, livepatch, realtime-kernel.

To disable Ubuntu Pro, as well as all enabled services, run command:

sudo pro detach

Get Rid of “esm-apps” command line prompt without enabling Ubuntu Pro

UPDATE: if this step does NOT work, try to disable the Ubuntu Pro software sources instead!

If you don’t want to install the expanded security updates, you can also disable the command line prompt by removing the config file.

It’s handled by the “20apt-esm-hook.conf” config file under “/etc/apt/apt.conf.d/” directory.

First, press Ctrl+Alt+T on keyboard to open terminal. When it opens, run command to navigate to that directory:

cd /etc/apt/apt.conf.d/

Then, create a backup folder to store the config file as backup. So, you can restore the change at any time by moving the file back.

sudo mkdir -p /etc/apt/backup

Finally, moving the config file to backup folder you just created:

sudo mv 20apt-esm-hook.conf /etc/apt/backup/

To apply change, also run sudo apt update.

To restore, run command to move the file back:

sudo mv /etc/apt/backup/20apt-esm-hook.conf /etc/apt/apt.conf.d/ && sudo apt update

That’s all. Enjoy!

The KeePassXC password manager application released version 2.7.5 today! Here are the new features and how to install guide for Ubuntu / Linux Mint users.

KeePassXC 2.7.5 add a new “Allow Screen Capture” option under “View” menu, though it seems to be for Microsoft Windows only. By enabling this option, allows to temporarily take screenshot of the app window.

Allow screenshot option for Windows.

For Linux, the release added a new rule “SingleMainWindow=true” and “X-GNOME-SingleWindow=true” in the .desktop app shortcut file. So, there will be no longer “New Window” option when right-clicking the KeePassXC shortcut icon.

Other change in KeePassXC 2.7.5 include:

  • Add support for compiling with Botan 3
  • New shortcut “Ctrl + ,” to open Settings.
  • Greatly improved performance when having large amount of entries.
  • Increase max TOTP step to 24 hours
  • Improve HTML export layout
  • Turn search reset off by default
  • Various stability and other fixes.

How to Install KeePassXC 2.7.5 via PPA in Ubuntu/Linux Mint

For all current Ubuntu releases, including Ubuntu 18.04, Ubuntu 20.04, Ubuntu 22.04, Ubuntu 22.10, Ubuntu 23.10, and Linux Mint 20/21, and their based systems, KeePassXC 2.7.5 is available to install via its Official PPA repository.

1. First, press Ctrl+Alt+T on keyboard to open terminal and run command to add the PPA:

sudo add-apt-repository ppa:phoerious/keepassxc

Type user password when it asks (no asterisk feedback) and hit Enter to continue.

2. If you have an old version of KeePassXC installed as .deb package, simply launch “Software Updater” or Update Manager to update it to the latest.

Or, run the apt command below in terminal to install the password manager:

sudo apt install keepassxc

NOTE: Linux Mint has to run sudo apt update first to update cache.

After installation, search for and open the tool either from ‘Activities’ overview or system start menu depends on your desktop environment.

Uninstall KeePassXC

To uninstall the password manager installed as native .deb package, either use Ubuntu Software app or open terminal and run command:

sudo apt remove --autoremove keepassxc

And remove the PPA repository either via ‘Software & Updates‘ tool under ‘Other Software‘ tab,

or command below in terminal:

sudo add-apt-repository --remove ppa:phoerious/keepassxc

That’s all. Enjoy!

 

I have an external disk mounted in my Ubuntu 22.04 with read and write permission. It however ran into issue recently. When I tried to boot Virtual Machine from that disk, it return error “NS_ERROR_FAILURE (0X80004005)“. And, when to save VM settings it output “Runtime error opening ‘/path/to/vm-machine.vbox-tmp’ for overwriting: -113 (Write protect error.).

I was thinking that’s an configuration error in /etc/fstab for auto-mounting disk partition. Until touch command returned “Read-only file system” while ls -al and file ‘Properties’ dialog did say I have both read and write permissions.

After digging around, I found that’s something to do with Microsoft Windows. I have Ubuntu dual boot with Microsoft Windows 10. Both systems are able to access that external disk. And the issue occurs sometime after making changes to that disk from Windows 10. And, the solution is just disable “Fast Startup” in Windows.

Disable Fast Startup in Windows 10

The configuration page varies a bit in different Windows editions. Here’s how to disable the feature in Windows 10.

1. First open “Settings” from start menu. When it opens, click “System” to go power settings page.

2. In next page, navigate to “Power & sleep” in the left pane. Then, click on “Additional power settings”.

3. Then, click the “Choose what the power button do” link in the left in next pop-up dialog.

4. Finally, click “Change settings are currently unavailable” link to unlock settings option, un-check “Turn on fast startup”, and finally save changes.

This tutorial shows how to automatically mount external disk partitions on startup of Ubuntu, Fedora, Debian, and most other Linux.

I bought a new SSD recently. Now, I have 2 solid-state drives (SSDs) connected on my computer. Ubuntu 22.04 is installed on one SSD drive, while another one contains VirtualBox Virtual Machine files.

As result, I have to click open the external SSD partition in file manager every time on startup to mount it. So the files on that SSD are accessible via mount point (usually “/media/username/xxx“). Or, all virtual machines in VirtualBox will be marked as “Inaccessible”.

To make life easier, it’s possible to auto-mount the external file partition. So user doesn’t have to make one more mouse click in file manager every time on startup. And, here’s what I did in Ubuntu 22.04.

 

UPDATE: For most desktop Linux, there’s an easier way to auto-mount disk driver or partitions on startup. See this tutorial for details.

 

Step 1: Get Device Name or ID of External Disk Partition

First, search for and open the “Disks” tool from system app launcher.

Launch Disk

When it opens, select the disk in left pane, and highlight the desired file partition in right. There, copy or write down the Device name (usually /dev/xxx), and UUID.

In my case, I need to get the info about:

  • UUID: 428E68968EE68846F
  • Device name: /dev/nvme0n1p2
  • file system type: NTFS (optional)

In case, your Linux Distro does not have “Disks” utility or you’re running a Linux server. Open terminal and run command:

df -h

Then find out the disk partition name you want to auto-mount on startup. (NOTE: You need to mount the external disk first).

Step 2: Get the user/group ID for current user

To auto-mount the external partition by using current user ownership, you also need to get the user ID and group ID.

For the default user that created while installing Linux, the ID is usually 1000. Just in case, open terminal and run command to get it:

id

get user id

Step 3: Enable Auto-Mount Disk Partition via /etc/fstab

Now, you can edit the “/etc/fstab” file to do the auto-mount configuration that works in most Linux!

To do so, open terminal and run command:

sudo gedit /etc/fstab

For Ubuntu 22.10+ and Fedora workstation, replace gedit with gnome-text-editor. For other Linux, either use your system text editor or nano that works in most Linux.

When the file opens, add the new line in the bottom:

UUID_or_Device_Name  Mount_Point  File_system_type  Options  0  0

In my case, I can use:

/dev/nvme0n1p2 /media/ji/sandisk  ntfs  defaults,uid=1000,gid=1000,umask=022  0  0

There are 6 parts in the new line separated with spaces. They are:

  • Part 1: the device name or UUID. See yours via Step 1.
  • Part 2: the mount point to access the external disk files. If you’ve associated your apps with the external disk files, it’s better to use the previous mount point (See screenshot in Step1).
  • Part 3: the file system type of disk partition (e.g., ext4, fat, ntfs). Get it in step 1, or use “auto” to auto-detect.
  • Part 4: mount options separated with commas but NO space between them. Here I use:
    • defaults – means rw (read & write), auto (auto mount), exec, dev, etc. Run man mount to see more about it.
    • uid – specify the owner.
    • gid – specify the group
    • umask – specify the permissions. The first 0 means read, write and execute permission for user, and the two number 2 mean read and execute permission for group/others.
  • Part 5: Either to backup. Set 0 to not backup.
  • Part 6: Either to check and repair file system. 0 for No.

When done, save the file. For nano text editor, press Ctrl+X, type y and hit Enter to save it. And, the change will apply in next boot.

In addition

The uid=1000,gid=1000,umask=022 section specify the ownership and permissions, but it only works for non-Linux file systems, such as NTFS, FAT, etc, disk partitions.

If you’re going to auto-mount external partition with Linux file-system, such as Ext2/3/4, XFS, JFS, try to change the ownership manually after mount.

 

Looking for an alternative on-screen keyboard for Ubuntu, Fedora or other Linux with GNOME? Try GJS OSK.

The built-in on-screen keyboard in Ubuntu and other Linux with GNOME is not so good. It lacks some keys, and does not raise up in most cases in Ubuntu 22.04.

In this tutorial, I’m going to introduce a new OSK application. It’s GJS OSK written in GNOME JavaScript. The application features on-screen keyboard with even more keys, such as F1 ~ F12, number 0,1,2,…9, Arrows, Ctrl buttons, and PrintScreen.

And, without sticking to the screen bottom, user can move the keyboard anywhere around the screen. Just click on quadruple arrow icon (see screenshot below) in the OSK, then you can drag moving it just like normal applications.

GJS OSK, allows to move around the screen

Also, it has an indicator applet on panel allows to one mouse click to show or hide the keyboard.

Click show/hide the on-screen keyboard

Other features of GJS OSK include:

  • Both Wayland and X11 support.
  • Support changing landscape and portrait size, font size, but sadly can NOT change the keyboard size.
  • Allow changing keyboard color.
  • Support QWERTY, QWERTZ, AZERTY, Dvorak layout.

GJS OSK with different background color

How to Install GJS OSK

NOTE: GJS OSK is a stand-alone on-screen keyboard. You need to disable system built-in on-screen keyboard first from Settings to avoid conflict.

1. First, go to link below to download the source from Github release page:

For GNOME 45+, meaning Ubuntu 24.04/23.10, Fedora 39/40, Arch/Manjaro etc, select download the main.zip under ‘Assets’ section. While GNOME 44 and earlier, meaning Ubuntu 22.04, Debian 12, etc, can choose the pre-45.zip.

2. After downloaded the .zip package, you do NOT have to extract it. Just open up a terminal window (for Ubuntu, press Ctrl+Alt+T) and run command to install it:

gnome-extensions install /path/to/zip

Instead of typing /path/to/zip, you can just drag’n’drop it into terminal instead.

3. log out and back in. Then, launch either “GNOME Extensions” or “Extension Manager” app (both available in Ubuntu Software, App Center (filter via Debian Package), Gnome Software). Turn on the new “GJS OSK” extension, and click its gear icon to configure its layout.

Finally, click on  the top-right corner keyboard indicator applet to show/hide the new on-screen keyboard.

Uninstall GJS OSK

To remove the extension, also launch “Gnome Extensions” or “Extension Manager”, click the “⋮” or arrow icon beside the toggle switch to expand, and select “Remove” the extension.

Annotator, image annotation tool for Elementary OS, released version 1.2.0 today. Here are the new features and how to install guide for Ubuntu users.

Annotator is a free open-source image annotation tool designed for Elementary OS, but also works in other Linux. By releasing version 1.2.0, it now also supports for taking screenshot for full-screen, current window, and selection area.

User can choose to either use UI button or run command line option to take screenshot, though it so far only works on Xorg session. Meaning Ubuntu, Fedora workstation with default GNOME Wayland session need to switch back Xorg from login screen for this feature to work.

Annotator take screenshot option

When adding and adjusting shapes and arrows on images, user can now right-click on them to ‘Set as Custom’. After that, your custom shapes/arrows will be available in the drop-down menus for quick use.

The release also added a emoji picker when inserting text. Also, right-click on the text insert area to get the option.

Other features in Annotator 1.2.0 include:

  • Support for showing and hiding an item’s outline.
  • Support for reading an image to annotate from standard input on the command-line.
  • Enhance export UI and adding export options for PNG and JPEG types.
  • Remove support for elementary OS contracts
  • Several UI improvements and various bug-fixes.

How to Install Annotator 1.2.0 in Ubuntu

Annotator has a built-in installer script in the source code. Elementary OS can directly search for and install it from app store.

For Ubuntu 20.04, Ubuntu 22.04, Ubuntu 23.10, Ubuntu 24.04 and their based systems, the software packages are also available to install via this Ubuntu PPA for both X86 PC/laptop and arm64/armhf mobile devices.

1. Add the PPA

Press Ctrl+Alt+T on keyboard to open terminal. When it opens, run commands to add the PPA:

sudo add-apt-repository ppa:ubuntuhandbook1/annotator

Type user password (no asterisk feedback) when it asks and hit Enter to continue.

2. Update package cache

Ubuntu 20.04 and higher refresh system package cache automatically while adding PPA, but some Ubuntu based systems may not. To do it manually, run command:

sudo apt update

3. Install Annotator:

Finally, install the app using command:

sudo apt install com.github.phase1geo.annotator

Once installed, search for and open it from start menu (activities overview) and enjoy!

Remove Annotator & Ubuntu PPA:

To remove the Ubuntu PPA, use command:

sudo add-apt-repository --remove ppa:ubuntuhandbook1/annotator

And remove the annotation tool via:

sudo apt remove --autoremove com.github.phase1geo.annotator