Socket oder FIFO

O

oxcinsha

Mitglied
Hi,...

...ich moechte mein Clipboard erweitern, im Grunde soll dieses Programm auch solche Funktionalitaeten bieten wie xsel.

Aber auch die Moeglichkeit die Selektion zu wie in einem Editor zu manipulieren, oder die Selektion in einer Datenbank ablegen/holen...ist verstanden, oder?

Ich wuerde dabei gerne zwei Dateien verwenden, eine um in sie Daten zu schreiben, eine um in sie Befehle zu schreiben - das Ganze Programm soll auf dem Desktop im Hintergrund ablaufen, und per Tastendruck seinen Editor/UI oeffnen.

Alles kein wirkliches Problem, bis auf die zwei Dateien.

Mir ist nicht klar wie diese Handhaben; ich hatte erstmal versucht mit mkfifo() ein FIFO zu oeffnen, und dann daraus zu lesen. Aber das scheint quatsch zu sein.

Muesste ich das ueber einen Local Socket Raw versuchen?? - ein paar Tips, bzw. Worte der Weisheit??


thx
chab
 
ich versteh nicht ganz... du willst was in dein clipboard kopieren jetzt mal primitiv gedacht mit str+c und diese clipboarddaten willst du in eine datei schreiben sehe ich das so richtig? und per tastendruck willst du den letzten eintrag bearbeiten und wieder in die datei schreiben... und mit str+v willst du dann den letzten eintrag aus der datei lesen und einfuegen und den letzten eintrag in der datei wieder loeschen! waenn ich das so richtig sehe dann wuerd ich dir einen stack empfehlen denn der tut im endeffekt genau das!

koenntest dann so machen:

einer drueckt str+c
push(clipboarddaten)

einer bearbeitet:
pop(clipboarddaten)
push(bearbeitete clipboarddaten)

einer drueckt str+v
pop(clipboarddaten)

ich hoffe ich konnte dir so helfen... waenn ich dich falsch verstanden habe erklaers mir bidde nochmal :-)

mfg hazelnoot
 
Nein, ist nicht verstanden. Mir ist absolut unklar, was du machen willst. Wie willst du ueber einen Raw-Socket auf dein Clipboard zugreifen, wenn dieses keine Netzwerk-Funktionalitaeten unterstuetzt? Oder willst du einen Raw-Socket ins Clipboard implementieren? Wenn ja, wozu soll das gut sein?
Ausserdem... von welchem Clipboard redest du? Gibt ja verschiedenste fuer Linux (Klipper fuer KDE, xclipboard fuer reines X usw.).
 
...also im eigentlichen Rede ich vom GtkClipboard.

Dabei gibt es wie unter X11 drei Cipboards, das ist wohl das selbe.

1. Die Selektion, also das was in einem Text mit z.B. der Maus ausgewaehlt ist.

2. Das "Clipboard", also die Selektion die mit z.B. Ctrl-X/Ctrl-V indas Clipbard kopiert wurde.

3. ...faellt mir im Stegreif nicht ein.

--

Wenn ich jetzt aber z.B. aus dem Browser etwas kopieren moechte, oder auch sonst woher, bekomm ich die Daten oft nicht so wie gewuenscht.

Beim Druecken eines Shortcuts soll sich ein Editor oeffnen, der das Clipboard ausliest. Wenn der Editor seinen Focus verliert, und das tut er bevor ich woanders einfuegen kann, soll er diesen Text wieder in das Clipboard kopieren.

Das funktioniert, no Prob.

Btw. mir ist noch nicht ganz klar wie jetzt den Inhalt des Clipboard zu PIPE'n/filtern, z.B. mit sed oder auch grep. Aber so halbwegs klappt das auch schon.

--

Jetzt wuerd ich nur gern noch haben mit z.B.
Code:
 cat file > /clip_file_node
ins clipboard kopieren zu koennen.

Denkbar waere auch das ich z.B. von einzelnen Instanzen des gleichen Programmes auf verschiedenen Hosts von Host zu Host kopieren koennte.
Also das ich beim Starten des Programmes einen Broadcast mache der mir alle laufenden Clipboards findet, und auch noch von denen Files anlegt.
Code:
cat file > /clip_file_node_host1
cat file > /clip_file_node_host2

Waer einfach nicht unpraktisch.
 
Zuletzt bearbeitet:
ich glaub ich verstehe was du meinst!

machs doch am besten so: immer waenn man ctrl-c drueckt kommt das geschichtl ja ins clipboard. waenn du den editor startes liest einfach deine clipborad datei in den editor ein und fuegst einfach vorne in die datei das aktuelle clipboard an. waenn dann kannst ja editieren was du willst und dann beim schliessen des editors fuegst dann einfach die erste zeile oder so des ediors wieder in das clipboard ein! das programm selbst koenntest du ueber ein trayicon realisieren!

hoffe ich konnte dir helfen

mfg hazelnoot
 
hazelnoot schrieb:
ich glaub ich verstehe was du meinst!

machs doch am besten so: immer waenn man ctrl-c drueckt kommt das geschichtl ja ins clipboard. waenn du den editor startes liest einfach deine clipborad datei in den editor ein und fuegst einfach vorne in die datei das aktuelle clipboard an. waenn dann kannst ja editieren was du willst und dann beim schliessen des editors fuegst dann einfach die erste zeile oder so des ediors wieder in das clipboard ein! das programm selbst koenntest du ueber ein trayicon realisieren!

hoffe ich konnte dir helfen

mfg hazelnoot

Hier mal die src.

Wie ihr seht ist das sehr klein, (112 Zeilen) tut aber die Grundlegende Funktion.


Und mir ist auch wieder eingefallen was die Ursache fuer die Idee mit der Input-Node war.


Ich muesste jetzt einen Keysnooper fur das Root-Window installieren, um das Editor-Fenster oeffnen zu koennen, und wie das machen ist mir noch nicht ganz klar.

Darum dachte ich ich setze das Hauptprogramm als Daemon in den Hintergrund, und lass ihn an einem Named-Socket als Control-Input lauschen.
Dann schreib ich ein Script, oder Prog, das ich bei Metacity (WindowManager) ueber ein Tastaturkuerzel starte, welches mir lediglich ueber echo in diese Nodes den Daemon steuert.

Das es noch andere Vorzuege haette hatte ich ja schon beschrieben.


BTW: ...das es mit FIFO nicht so hinhaut lese ich daraus.

Und noch was...

...ich wuerde es auch gern so erweitern, das ich z.B. ueber einen anderen Shortcut eine script einen anderen Befehl in die Node schreiben lasse, welches eine andere Funktion erfuellt.

Dabei denke ich z.B. an eine Tag-DB oder sowas; mir wird also einen Dialog geoeffnet in dem ich ein Tag ueber Maske leicht kreieren kann, und das mir dann beim Schliessen den Inhalt des Clipboards (->Tag) sofort in den Eingabebereich schreibt...koennte das auch gehen?? - Also das Clipboard updaten, Widget zerstoeren ( Fokus geht zurueck an den zuletzt innehabenden = Eingabebereich ), Windowmanager/X11 merken lassen das es einfuegen soll...e voila.
 
Zuletzt bearbeitet:
aaaahh ich verstehe schon was du meinst! du willst mit einem programm die shortcuts machen und dann ueber ipc diese mit einem editor auslesen!!!

aber du brauchst die IPC nicht ueberleg mal: warum machst du nicht den editor und das shortcutprogramm in einem?

ps: sag naecstes mal namedPipes stat fifo!! dann kenn man sich auch aus!
 
mit der fifo wird das wunderbar klappen. nicht umsonst arbeiten wir hier mit einem multittasking/multithreading prozess ;)

also einfach für die fifo geschichte nen eigenen posix thread stricken und wenn dann was ankommen sollte leitet der das ans hauptprogramm weiter.
 
Zurück
Oben