Score:2

How to disable Middle Mouse Paste on Ubuntu automatically on startup

us flag

I'm trying to make a script run on startup, so that I don't have to do it manually every time, with a terminal window being open constantly.

This is the script: anti-midmouse-paste.sh

#!/bin/bash

while(true)
do
    echo -n | xsel -n -i
    sleep 0.5
done

It is a script I found online that clears the selected copied text. It works flawlessly when I run it regularly with: sh anti-midmouse-paste.sh

However, when I've inputted the script in /etc/systemd/system using nano, it doesn't seem to work on startup (despite enabling it with sudo systemctl enable anti-midmouse-paste), nor when i start the script using sudo systemctl start anti-midmouse-paste. I have done chmod +x on both the .service and the .sh file.

Here is the .service content:

[Unit]
Description=Stops middlemouse paste from working

[Service]
ExecStart=/usr/local/bin/anti-midmouse-paste.sh  #in this line specify the path to the script.
Type=simple
Restart=on-failure
Restartsec=10
KillMode=process

[Install]
WantedBy=multi-user.target

And when I check sudo systemctl status anti-midmouse-paste.service:

● anti-midmouse-paste.service - Stops middlemouse paste from working
         Loaded: loaded (/etc/systemd/system/anti-midmouse-paste.service; enabled; vendor preset: enabled)
         Active: active (running) since Fri 2021-10-15 19:59:44 CEST; 27min ago
       Main PID: 889 (anti-midmouse-p)
          Tasks: 2 (limit: 19018)
         Memory: 2.4M
         CGroup: /system.slice/anti-midmouse-paste.service
                 ├─  889 /bin/bash /usr/local/bin/anti-midmouse-paste.sh #in this line specify the path to the script.
                 └─18219 sleep 0.5
    
    Oct 15 20:27:01 User anti-midmouse-paste.sh[18202]: xsel: Can't open display: (null)
    Oct 15 20:27:01 User anti-midmouse-paste.sh[18202]: : Inappropriate ioctl for device
    Oct 15 20:27:01 User anti-midmouse-paste.sh[18206]: xsel: Can't open display: (null)
    Oct 15 20:27:01 User anti-midmouse-paste.sh[18206]: : Inappropriate ioctl for device
    Oct 15 20:27:02 User anti-midmouse-paste.sh[18210]: xsel: Can't open display: (null)
    Oct 15 20:27:02 User anti-midmouse-paste.sh[18210]: : Inappropriate ioctl for device
    Oct 15 20:27:02 User anti-midmouse-paste.sh[18214]: xsel: Can't open display: (null)
    Oct 15 20:27:02 User anti-midmouse-paste.sh[18214]: : Inappropriate ioctl for device
    Oct 15 20:27:03 User anti-midmouse-paste.sh[18218]: xsel: Can't open display: (null)
    Oct 15 20:27:03 User anti-midmouse-paste.sh[18218]: : Inappropriate ioctl for device

As you can see, it says the script loaded and that it is running. But the logs show something that I do not understand and have not managed to find anywhere. Apparently it has something to do with me using xsel.

Hopefully someone can make sense of this and help. Thanks in advance.

vanadium avatar
cn flag
Please start the script only after you have logged in. Before that, there is no clipboard, so xsel can't do anything.
hr flag
Yeah this sounds like something that would be more appropriate as a Startup Application - see for example [How do I start applications automatically on login?](https://askubuntu.com/questions/48321/how-do-i-start-applications-automatically-on-login)
us flag
Wow. Thank you both. I spent hours yesterday trying to do it as above, but making a .desktop file in ~/config/startup/ took minutes and works amazingly. In case someone finds this post in the future wanting to do the same thing, I'll edit my post with how I did.
Will avatar
id flag
@WhiteApe could you edit your question and put most of it as an answer along with the startup solution? This would be useful to other people as an answer.
us flag
@Will Absolutely, I have done so. I tried to make the guide as simple as possible so that even I could understand it.
Will avatar
id flag
@WhiteApe - sorry, I was meaning to put it as an answer rather than leave it as a question - I think you’ve answered it nicely! What you’ve written it’s great, it’s just all in the question rather than an answer so anyone searching this won’t realise there is an answer at first glance - it looks like an unanswered question. Hope that makes sense!
us flag
@Will Ah yes you're right. Have reverted the post to what it first was, and posted an answer instead. I will mark my answer as "Accepted" as soon as possible.
Score:2
us flag

This is a guide on how to disable Middle Mouse Paste on Ubuntu automatically on startup. It was previously a post asking for help, but now that I have learned how to do it, I will share how I did it.

This uses a script I found in another post that clears the clipboard for your middle-mouse button, so that it doesn't get pasted when you click the scroll wheel. Found here: https://askubuntu.com/a/4644/1481518. Credit goes to him.

Step 0: Install xsel (Tool for manipulation of the X selection): sudo apt-get install xsel. Once you have installed xsel, you can continue.

Step 1: Create the script - Open up your text editor of choice, and type in the following code:

#!/bin/bash

while(true)
do
    echo -n | xsel -n -i
    sleep 0.5
done

Save the file as anti-midmouse-paste.sh (the name can be something else but make sure to add the .sh).

Also make the script file executable: chmod +x /path/to/file/anti-midmouse-paste.sh

Step 2: Now that we have created the script, it's time to make it run whenever we boot up our computer.

Open up another window of your text editor, and paste in the following:

[Desktop Entry]
Type=Application
Name=Anti Midmouse Paste
Exec="/path/to/the/script/anti-midmouse-paste.sh" "--no-window"
X-GNOME-Autostart-enabled=true

Make sure you enter the correct path for the Exec=.

And save this file in ~/.config/autostart/ as anti-midmouse-paste.desktop (again, the name doesn't matter but make sure it ends with .desktop)

If you can't find .config it is because it's a "hidden" directory. To make it show, press Ctrl + H and all hidden directories and files will show.

Step 4: You're done.

Now whenever you boot up your computer, the script should run and you will no longer paste selected text with your middle-mouse button.

BONUS TIP:

The script clears your selection of text for apps such as Text Editor and Terminal.

What you can do to delay the deletion for selection of text (if you want to copy or erase text), is to change sleep 0.5 in your .sh file to a higher value. The number is in seconds.

mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.