Resmi komut satırından panoya kopyala


22

Bir resmi panoya kopyalamak için bash yolu var mı?

Örneğin, eğer bir resim varsa, örneğin inkscape'e gidip daha sonra yapıştırabileceğim mypic.pngbir komut istiyorum clipcopy mypic.png.


Bunun iki adımda kesilmesi gerekir: 1. Inkscape'in panoda ne gibi veriler olmasını bekliyor? Dosya içeriği veya dosya yolu. Yolun önemsiz olduğu için içerik hayal ediyorum xsel -b? 2. Bu veri panoya nasıl alınır.
Ciro Santilli,

olası çapraz site kopyası: superuser.com/questions/301851/…
Ciro Santilli,


Eğer ImageMagick'i kurduysanız, komutun olduğuna inanıyorum convert ... clipboard:(... dosya isminizi içeren diğer argümanlardır).
Deathgrip

Yanıtlar:


9

Bu python komut dosyası tarafından cheshirekow iddiaları istediğini yapmak.

#! /usr/bin/python
import pygtk
pygtk.require('2.0')
import gtk
import os
import sys

def copy_image(f):
    assert os.path.exists(f), "file does not exist"
    image = gtk.gdk.pixbuf_new_from_file(f)

    clipboard = gtk.clipboard_get()
    clipboard.set_image(image)
    clipboard.store()

copy_image(sys.argv[1]);

Teşekkürler, libreoffice’de geçmişe çalışır, ancak inkscape’e yapıştırmak değildir.
Öğrenci

Güzel olanı, xournal içine yapıştırma ile iyi çalışır.
Keivan

9

Bunun için CopyQ kullanabilirsiniz . Web sitesinden:

Gelişmiş özelliklere sahip pano yöneticisi

  • CopyQ aranabilir ve düzenlenebilir geçmişi olan pano yöneticisidir.
  • Linux ve Windows'u destekler.
  • OS X 10.9+ için deneysel destek.
  • Metin, HTML, resim ve diğer özel formatları saklayın.
  • Gelişmiş komut satırı arayüzü ve komut dosyası.

Bir görüntüyü kopyalamak için (MIME türünü belirtmeniz gerekir):

copyq write image/png - < file.png && copyq select 0

Bir veri dosyasını kopyalamak için (MIME türünü belirtmeniz gerekir):

copyq write application/pdf - < file.pdf && copyq select 0

Daha fazla dokümantasyon ve kullanım örneği için wiki'lerine bakın .

Ayrıca bakınız:


Png kullanarak ilk seçeneğiniz harika çalışıyor! Teşekkür ederim!
Edenshaw

5

Düzenleme yaptığım @don_crissti 'ın cevabını boru girişi sağlamak için:

#!/usr/bin/env python

import sys
from gi.repository import Gtk, Gdk, GdkPixbuf

def store(pixbuf):
        clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
        clipboard.set_image(pixbuf)
        clipboard.store()

def copy_image(f):
    image = Gtk.Image.new_from_file(f)
    if image.get_storage_type() == Gtk.ImageType.PIXBUF:
        pixbuf = image.get_pixbuf()
        store(pixbuf)
    else:
        print("Copying failed")

def copy_pixbuf(data):
    loader = GdkPixbuf.PixbufLoader()
    loader.write(data)
    loader.close()
    pixbuf = loader.get_pixbuf()
    store(pixbuf)

if sys.stdin.isatty():
    if len(sys.argv) != 2:
        print("Usage: image-to-clipboard.py image")
    else:
        f = sys.argv[1]
        copy_image(f);
else:
    data = sys.stdin.read()
    copy_pixbuf(data)

5

İşte xclipbir dosyayı kopyalamak için kullanılan kısa bir bash betiği . İle yapıştırmak gerekir ctrl-v.

#!/bin/bash
command -v xclip >/dev/null 2>&1 || { echo "Need command xclip. Aborting." >&2; exit 1; }
[[ -f "$1" ]] || { echo "Error: Not a file." >&2; exit 1; }
TYPE=$(file -b --mime-type "$1")
xclip -selection clipboard -t "$TYPE" < "$1"

Sayesinde...


Bu, ofise para cezası verir, ancak xournal'a kopyalamaz!
Keivan

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.