User Tools

Site Tools


config:nemo-performance

Nemo Tips

executable Text Files

By default, Nemo asks whether to display or run executable text files. As all files on Windows Samba shares are executable, this can become annoying very quickly. To change this:
Edit → Preferences → Behaviour → Executable Text Files → View executable text files when they are opened

Nemo keyboard shortcuts

By default, there is no keyboard shortcut to move files/directories from one pane to another (when working with multiple panes by pressing F3). A lot of other functions don't have keyboard shortcuts either.

The shortcuts are stored in ~/.gnome2/accels/nemo

Create the folder and edit this file:

mkdir -p ~/.gnome2/accels
vi ~/.gnome2/accels/nemo

or search for “Move to next pane” when the file exists (or any other function you require. Remove the preceding semicolon and define the shortcut key. In this example, the shortcut will be set to CTRL+j;

(gtk_accel_path "<Actions>/DirViewActions/Move to next pane" "<Primary>j")

Quit nemo from the command line using:

nemo -q

NOTE: Ensure not to use a shortcut already defined for something else!

Nemo Context Menus

Nemo supports custom context menus by simply creating a file in an 'actions' folder. Nemo does not need to be restarted to pick up any new or changed actions.

Global action scripts need to be placed in /usr/share/nemo/actions and user actions can be placed in ~/.local/share/nemo/actions/. File extension has to be .nemo_action.

cd ~/.local/share/nemo/actions/

A full description of the syntax is available in the sample file /usr/share/nemo/actions/sample.nemo_action

More examples can be found at https://wiki.archlinux.org/index.php/Nemo
The sample file is also here:

https://github.com/linuxmint/nemo/blob/master/files/usr/share/nemo/actions/sample.nemo_action

Mass renaming

sudo apt-get install gprename
bulk-rename.nemo_action
[Nemo Action]
Name=Bulk Rename
Comment=Multiple Rename with GPRename.  The action gets executed for the marked or the higher level directory.
Exec=gprename %F
Selection=m
Extensions=any;
EscapeSpaces=true
Dependencies=gprename;

Image convert / rotate

sudo apt-get install nemo-image-converter

Then restart nemo to activate the plugin. Right-click context menu entries for images will be available.

MP3 Tagging example scripts

mp3-lyrics.nemo_action
[Nemo Action]
Name=Add Lyrics to MP3s
Comment=Add Lyrics to MP3s
Exec=gnome-terminal -x sh -c "/home/wuff/getlyric/get_mp3_lyrics.py --sites genius.com --in_dir '%F' --write2tag"
Icon-Name=gtk-cdrom
Selection=s
Extensions=dir;
Quote=double
EscapeSpaces=true
mp3-lyrics-2.nemo_action
[Nemo Action]
Name=Add Lyrics to MP3s
Comment=Add Lyrics to MP3s
Exec=gnome-terminal -x sh -c "/home/wuff/getlyric/get_mp3_lyrics.py --sites genius.com --in_dir '%P' --write2tag"
Icon-Name=gtk-cdrom
Selection=none
Extensions=dir;
Quote=double
EscapeSpaces=true
beets_import_album.nemo_action
[Nemo Action]
Name=Import Album to Beets
Comment=Import Album to Beets
Exec=<beets_import_album.sh %F>
Icon-Name=gtk-cdrom
Selection=notnone
Extensions=dir;
#Quote=double
EscapeSpaces=true
Terminal=true
beets_import_album.sh
for var in "$@"
do
    folder=$(basename "$var")
    echo "Importing '$folder' into beets..."
    beet im "$var"
done
sleep 10
chmod 755 .local/share/nemo/actions/beets_import_album.sh

Copy Full Path to clipboard

~/.local/share/nemo/actions/copy_full_filepath.nemo_action
[Nemo Action]
Name=Copy Full Filepath
Comment=Full Path: %F
Exec=sh -c "readlink -f %F | xclip -selection clipboard"
Icon-Name=gtk-copy
Selection=notnone
Extensions=dir;nodirs
Separator=,
Dependencies=readlink;xclip;

Nemo Performance

If opening folders with lots of images takes a long time, changes are a plugin is causing this:

disable the plugin “ChangeColorFolder+NemoPython” and restart nemo (nemo -q on command line) and start it again by opening any folder.

If opening folders with videos takes a long time, the thunbnailer for videos can be replaced with ffmpegthumbnailer which is faster (note that on updates of totem the config probably will be replaced):

sudo apt-get install ffmpegthumbnailer
cd /usr/share/thumbnailers/
sudo cp totem.thumbnailer totem.thumbnailer.original
sudo vi totem.thumbnailer

#replace line 2-3 with:
TryExec=/usr/bin/ffmpegthumbnailer
Exec=/usr/bin/ffmpegthumbnailer -s %s -i %i -o %o -c png -f

#exit nemo
nemo -q

Save/Restore session

Execute nemo_save.sh to save list of opened nemo windows in ~/.config/nemo/nemo.openwindows.

Launch nemo_restore.sh to reopen saved list of windows.

Restrictions : the script cannot save opened tabs, and won't save a folder whose name is too long. For special folders like Trash, you can replace the window title name in nemo_save.sh if you know the full path. Also, only the currently active pane in two-pane mode is being saved.

Original source: https://github.com/x-hgg-x/Utils/tree/master/Nemo%20save%20and%20restore%20session

~/.local/bin/nemo_save.sh
#!/bin/bash
declare -x DISPLAY=":0.0"
sleep 5
PATHS=$(wmctrl -lx | grep nemo.Nemo | sed -e "s#$hostname Home# - $HOME#" | awk -F' - /' '{print "/"$2}')
if [ "$PATHS" == "" ];
then
    echo "" > ~/.config/nemo/nemo.openwindows
else
    echo "$PATHS" > ~/.config/nemo/nemo.openwindows
fi
~/.local/bin/nemo_restore.sh
#!/bin/bash
sleep 2
IFS=$'\n'; read -d '' -r -a dirs < ~/.config/nemo/nemo.openwindows

for dir in "${dirs[@]}"; do
    nemo "$dir" &
    sleep 0.5
done
chmod 755 ~/.local/bin/nemo_save.sh ~/.local/bin/nemo_restore.sh
#Add to current user's crontab
(crontab -l ; echo "*/5 * * * * /home/$USER/.local/bin/nemo_save.sh") | crontab -

Auto-save on Cinnamon shutdown:

echo "session-cleanup-script = /home/$USER/.local/bin/nemo_save.sh" | sudo tee -a /etc/lightdm/lightdm.conf.d/70-linuxmint.conf

Restore session on Cinnamon start:

/usr/bin/cat > ~/.config/autostart/nemo_restore.desktop << EOD
[Desktop Entry]
Version=1.0
Type=Application
Encoding=UTF-8
Name=Restore Nemo Session
Exec=/home/$USER/.local/bin/nemo_restore.sh
Terminal=false
StartupNotify=false
Categories=Application;
X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Delay=10
EOD

Action Scripts

https://github.com/smurphos/nemo_actions_and_cinnamon_scripts

Attach file to email Thunderbird:

/usr/bin/cat > ~/.local/share/nemo/actions/attach_to_email_tbird.nemo_action << "EOD"
[Nemo Action]
Name=_Attach to email
Comment=Attach %F to email in Thunderbird
Exec=thunderbird -compose to=,attachment=%F
Icon-Name=mail-attachment-symbolic
Selection=notnone
Extensions=nodirs
Separator=,
Dependencies=thunderbird;
EOD

Attach file to email general:

/usr/bin/cat > ~/.local/share/nemo/actions/attach_to_email_xdg-email.nemo_action << "EOD"
[Nemo Action]
Name=_Attach to email
Comment=Attach %F to email in default mail application
Exec=<action_scripts/attach_to_email_xdg-email.sh %F>
Icon-Name=mail-attachment-symbolic
Selection=notnone
Extensions=nodirs
Quote=double
Dependencies=xdg-email;
EOD

mkdir -p ~/.local/share/nemo/actions/action_scripts

/usr/bin/cat > ~/.local/share/nemo/actions/action_scripts/attach_to_email_xdg-email.sh << "EOD"
#!/bin/bash
COMMAND="xdg-email"
for file in "$@"
do
  COMMAND="$COMMAND --attach '$file'"
done
sh -c "$COMMAND"
EOD

Edit with xed as superuser:

/usr/bin/cat > ~/.local/share/nemo/actions/xed_sudoedit.nemo_action << "EOD"
[Nemo Action]

Name=_Xed (Sudoedit)
Comment=Open %F with xed opening as different user when needed via sudoedit.
Exec=<action_scripts/xed_sudoedit_check.sh %F>
Icon-Name=text-editor-symbolic
#Stock-Id=
Selection=s
#Extensions=
Mimetypes=text/plain;text/css;text/english;text/html;text/x-apt-sources-list;text/x-c;text/x-c++;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-diff;text/x-dsrc;text/x-java;text/x-makefile;text/x-moc;text/x-pascal;text/x-perl;text/x-python;text/x-sql;text/x-tcl;text/x-tex;
#Separator= 
#Quote=
Dependencies=sudoedit;xed;
#Conditions=
EscapeSpaces=true
Terminal=false
EOD

mkdir -p ~/.local/share/nemo/actions/action_scripts

/usr/bin/cat > ~/.local/share/nemo/actions/action_scripts/xed_sudoedit_check.sh << "EOD"
#!/bin/bash
FILEOWNER=$(stat -c %U "$1")
if [ "$FILEOWNER" = "$USER" ]; then
  xed "$1"
else
  export SUDO_EDITOR="xed -w"
  export SUDO_ASKPASS="$HOME/.local/share/nemo/actions/action_scripts/zenity_askpass.sh"  
  sudoedit -A -u "$FILEOWNER" "$1"
fi
EOD

sudo apt-get install zenity

/usr/bin/cat > ~/.local/share/nemo/actions/action_scripts/zenity_askpass.sh << "EOD"
#!/bin/bash
zenity --password --title="Authenticate"
EOD

Edit with vi as superuser:

/usr/bin/cat > ~/.local/share/nemo/actions/vi_sudoedit.nemo_action << "EOD"
[Nemo Action]

Name=_vi (Sudoedit)
Comment=Open %F with vi opening as different user when needed via sudoedit.
Exec=<action_scripts/vi_sudoedit_check.sh %F>
Icon-Name=text-editor-symbolic
#Stock-Id=
Selection=s
#Extensions=
Mimetypes=text/plain;text/css;text/english;text/html;text/x-apt-sources-list;text/x-c;text/x-c++;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-diff;text/x-dsrc;text/x-java;text/x-makefile;text/x-moc;text/x-pascal;text/x-perl;text/x-python;text/x-sql;text/x-tcl;text/x-tex;
#Separator= 
#Quote=
Dependencies=sudoedit;vi;
#Conditions=
EscapeSpaces=true
Terminal=false
EOD

mkdir -p ~/.local/share/nemo/actions/action_scripts

/usr/bin/cat > ~/.local/share/nemo/actions/action_scripts/vi_sudoedit_check.sh << "EOD"
#!/bin/bash
FILEOWNER=$(stat -c %U "$1")
if [ "$FILEOWNER" = "$USER" ]; then
  vi "$1"
else
  export SUDO_EDITOR="vi"
  sudoedit -A -u "$FILEOWNER" "$1"
fi
EOD

Show dpkg package of file or folder:

/usr/bin/cat > ~/.local/share/nemo/actions/show_parent_package.nemo_action << "EOD"
[Nemo Action]
Name=Show _Parent Package
Comment=Display a dialogue that shows which package %F is from
Exec=<action_scripts/show_parent_package.sh %F>
Icon-Name=package-x-generic-symbolic
Selection=s
Extensions=any;
EscapeSpaces=true
Dependencies=zenity;dpkg;
EOD

mkdir -p ~/.local/share/nemo/actions/action_scripts
sudo apt-get install zenity

/usr/bin/cat > ~/.local/share/nemo/actions/action_scripts/show_parent_package.sh << "EOD"
#!/bin/dash
OUTPUT=$(dpkg -S "$1" | cut -f1 -d:)
if [ -z "$OUTPUT" ]; then
  zenity --info --ellipsize --text="$1\nis not provided by any known package"
else
  zenity --info --ellipsize --text="$1\nis from the package(s) $OUTPUT"
fi
EOD

Various Nautilus scripts can be found here:
https://github.com/cfgnunes/nautilus-scripts

Action Submenus


GUI change through Nemo → Edit → Preferences → Plugins → Edit Layout:

Example of submenu for action scripts:

~/.config/nemo/actions-tree.json
,
    {
      "uuid": "Video Manipulations",
      "type": "submenu",
      "user-label": "Video Manipulations",
      "user-icon": null,
      "children": [
        {
          "uuid": "video_bitrate.nemo_action",
          "type": "action",
          "user-label": null,
          "user-icon": null
        },
        {
          "uuid": "video_downscale.nemo_action",
          "type": "action",
          "user-label": null,
          "user-icon": null
        },
        {
          "uuid": "video_merge.nemo_action",
          "type": "action",
          "user-label": null,
          "user-icon": null
        },
        {
          "uuid": "video_hflip.nemo_action",
          "type": "action",
          "user-label": null,
          "user-icon": null
        },
        {
          "uuid": "video_vflip.nemo_action",
          "type": "action",
          "user-label": null,
          "user-icon": null
        },
        {
          "uuid": "video_mergechapters.nemo_action",
          "type": "action",
          "user-label": null,
          "user-icon": null
        }
      ]
    },
config/nemo-performance.txt · Last modified: 2024/11/12 10:59 by Wulf Rajek