ヨーヨーノマーズ、CORBA-crapを使用することで得られるものです。
yarソフトウェアには、デフォルトでインストールされていないツールを使用することほど良いものはありません。
yaがKDE-plasmaなどの適切なデスクトップ環境を使用していれば、そのような問題はありません。yaは、たとえばコンソールなどのyaのソフトウェアからdbusを使用できるからです。
qdbus org.kde.klipper /klipper setClipboardContents "NiHao"
qdbus org.kde.klipper /klipper getClipboardContents
個人的には、実際にC#で直接dbusに接続しています。つまり、qdbusは必要ありません。
yaにはklipperがないので、yaには役に立たないかもしれませんが、とにかくそれを言及したいと思いました。
PS:そのC#コードをコピーしないでください。Task.Resultはデッドロックする可能性があります。
private static async System.Threading.Tasks.Task<string> GetClipboardContentsAsync()
{
string clipboardContents = null;
Tmds.DBus.ObjectPath objectPath = new Tmds.DBus.ObjectPath("/klipper");
string service = "org.kde.klipper";
using (Tmds.DBus.Connection connection = new Tmds.DBus.Connection(Tmds.DBus.Address.Session))
{
await connection.ConnectAsync();
IKlipper klipper = connection.CreateProxy<IKlipper>(service, objectPath);
clipboardContents = await klipper.getClipboardContentsAsync();
} // End Using connection
return clipboardContents;
}
private static string GetClipboardContents()
{
return GetClipboardContentsAsync().Result;
}
private static async System.Threading.Tasks.Task SetClipboardContentsAsync(string text)
{
Tmds.DBus.ObjectPath objectPath = new Tmds.DBus.ObjectPath("/klipper");
string service = "org.kde.klipper";
using (Tmds.DBus.Connection connection = new Tmds.DBus.Connection(Tmds.DBus.Address.Session))
{
await connection.ConnectAsync();
IKlipper klipper = connection.CreateProxy<IKlipper>(service, objectPath);
await klipper.setClipboardContentsAsync(text);
} // End using connection
}
private static void SetClipboardContents(string text)
{
SetClipboardContentsAsync(text).Wait();
}