PDA

Visualizza versione completa : Aprire un PDF in wine con evince



Kirk78
05-12-14, 13: 01
Ciao a tutti!

Apro una discussione ad hoc per non uscire di tema un un'altra discussione. La domanda è: come si fa ad aprire in Wine un PDF con l'applicazione nativa evince (o quello che volete)?

Ovviamente non parlo di aprire un PDF posto in una cartella del disco C: o Z: di wine, perché per fare quello basta semplicemente aprire il disco C: (vedi la Guida CT di Wine (http://www.collectiontricks.it/forum/gnu-linux/Ct5965-guida-wine-per-eseguire-alcuni-programmi-windows-dos-linux.html)) e fare il doppio click.

Parlo di programmi compilati che fanno una "chiamata" per aprire un file PDF da lettore di default per la lettura di questi file.
Questi programmi NON fanno scegliere quale PDF leggere perché hanno il nome del file all'interno del programma compilato.
Faccio l'esempio di un programma che apre la sua guida PDF.

Leggendo i post di Andy86 e pierino_89 e controllando i registri di sistema Wine stavo pensando se era possibile modificare semplicemente il file

Only registered members can view code.
magari sostituendo la voce Exec con

Only registered members can view code.
o simile. Scusate ma non ho ancora sviscerato bene tutte le cartelle. Sto ancora studiando.

se si è installato un lettore di pdf (esempio SlimPDF) con un'applicazione wine infatti si trovano alcune voci sul registro.

Numero1 dovrebbe riferirsi a

Only registered members can view code.
Numero2 dovrebbe riferirsi a

Only registered members can view code.

Ecco le voci che ho trovato dagli estratti del registro leggibili normalmente con gedit:

Only registered members can view code.

Ma il problema è che non so se modificando solamente il lanciatore (.desktop) poi ci siano problemi con le altri voci del registro.

Certo sarebbe simpatico creare un lanciatore (.desktop) di evince e dall'interno del gestore file di Wine fare Apri con... e scegliere quel lanciatore come default al posto di un'altro. Così anche in newbie potrebbero farlo senza dover toccare il registro.

Idee? Se avremo insieme una soluzione per newbie la inserirò in un post della Guida CT su Wine.

:bai



Per i PDF immagino che ci sia una configurazione da fare, oppure (ahimè poveri newbie) debba modificare il file

Only registered members can view code.
mettendo da qualche parte

Only registered members can view code.
anche perché smallpdf è velocissimo ma mi fa vedere male i pdf in wine mentre gli stessi pdf in evince (visualizzatore documenti) si vedono bene.

Ma quì si fermano le mie conoscenze. Attenderò nel caso il caro Andy86.

:bai

Andy86
06-12-14, 13: 52
:bai

Scusa, ma perché devi aprire i .pdf in wine?
Non va bene l'applicazione nativa?

Io wine lo uso quasi esclusivamente per i giochi, per i file faccio tutto con programmi nativi, con wine ricordo se ho mai provato qualcosa del genere, comunque dovrebbe bastare anteporlo al comando completo, es:


Only registered members can view code.

se fa storie puoi provare usando i percorsi completi, magari anteponendo un bel "start /unix" se usi i percorsi in stile linux.

La storia del .desktop probabilmente serve solo per "l'apri con", nel senso che se tu apri un file (.pdf) con wine senza specificare il programma, lui sa con che cosa aprirlo, ma io aggiungerei una voce "apri con" direttamente in linux specificando il comando completo:


Only registered members can view code.

Le variabili stanno per directory e file, non so se corrispondono fuori kde, ma fai prima a provare.

Kirk78
06-12-14, 14: 29
Scusa, ma perché devi aprire i .pdf in wine?
Non va bene l'applicazione nativa?
Magari!

Solo che l'applicazione, in win, fa riferimento all'applicazione di default che apre i pdf. In wine fa la stessa cosa ed infatti se l'applicazione in wine "chiama l'esecuzione" di un PDF e non ce nè nessuna che apre i PDF non fa nulla oppure da errore.
Vorrei che quando l'applicazione dentro wine chiama un PDF sia apra evince nativo (per esempio) e non quella installata dentro wine.

Per me si tratta di una configurazione.... sempre se è possibile.

Fuori da wine leggo i pdf con evince.

:bai

Andy86
06-12-14, 19: 08
:bai

Allora... ho trovato una possibile soluzione, riepilogo:

Wine per l'associazione delle estensioni si comporta esattamente come windows (infatti lo imita), quindi per modificare l'associazione interna a wine è necessario modificare il registro di sistema come in questo esempio:


Only registered members can view code.

e:


Only registered members can view code.

Facendo puntare l'estensione ad uno script che converta il file passato da wine (%1) dal formato wine, es: "j:/percorso/file.pdf", al formato unix e poi lanci il programma nativo con il percorso corretto.

Ora, non ho mai fatto uno script del genere, quindi a occhio dovrebbe essere una cosa così:


Only registered members can view code.

ma non funziona. :ehmm

se capisco perché te lo dico.

Kirk78
06-12-14, 20: 31
Grazie mille della prova e se riesci a scoprire perché non funziona posta. Non so se conviene aprire una discussione ad hoc del tipo "Far aprire ai programmi wine applicazioni native Linux" o qualcosa del genere. :m:

Domani farò qualche prova anche io. Wine imita fino ad un certo punto windows, perché è all'interno di un sistema operativo.
Devo riprendere alcuni miei vecchi documenti dove mettevo le mani sulle associazioni file con delle applicazioni, ma adesso mi sfugge cosa facevo. Poi la devo portare in ambiente wine :m:

L'unica cosa che ricordo che era possibile anche settando alcuni mime....

Il problema è che un programma (exe o libreria dll) fa una chiamata e probabilmente anche il file di registro per vedere i pdf con quale programma viene aperto di default, ma non si può mettere uno script in mezzo tra la chiamata del programma/libreria e il sistema perché viene fatto chiamando delle API windows ben precise.

:bai

P.S. che ne dici della guida su Wine? Tutto grazie anche ai vostri preziosi aiuti, e un po' studio :clap

Andy86
06-12-14, 20: 51
:bai

Non funziona perché tra me e sed per qualche motivo non funziona mai.

Facendo così lo script funziona:


Only registered members can view code.

Però bisogna togliere le virgolette al parametro nel settare il registro di sistema, altrimenti le passa allo script così come sono:


Only registered members can view code.

Così facendo se apro un .pdf nella home con "wine start nomepdf.pdf" o con "wine explorer" e poi cerco il pdf e lo avvio si apre con okular, però attenzione, funziona solo se il file si trova nella home, altrimenti bisogna modificare l'ultimo parametro dello script.

Naturalmente se hai tempo e voglia puoi scrivere uno script più grosso per gestire tutti i formati in uno script solo prendendo il formato come secondo parametro e usandolo in uno switch e puoi gestirti eventuali aggiunte al percorso in base all'unità che trovi all'inizio del percorso wine, tipo /home/utente o /media/partizione.

pierino_89
07-12-14, 02: 33
Sempre leggere la documentazione per non reinventare la ruota :tong2
winepath - The Official Wine Wiki (http://wiki.winehq.org/winepath)

Kirk78
07-12-14, 11: 07
Oggi apro una discussione ad hoc sui PDF quando finisco di studiare un po' il sistema. Attendete quindi che apro la discussione. Grazie comunque di tutte le risposte che mi insegnano sempre molto! :thx

:bai

EDIT: eccola http://www.collectiontricks.it/forum/gnu-linux/Ct5968-aprire-pdf-wine-evince.html

Andy86
07-12-14, 12: 46
Sempre leggere la documentazione per non reinventare la ruota :tong2

Hai ragione, ma sai... è talmente piccola che se una cosa non sai che c'è senza chiedere non la trovi neanche se paghi.
Sinceramente di cercare "convert wine path" su google non mi è proprio passato per la testa.



Attendete quindi che apro la discussione. Grazie

Ho segnalato per farci spostare di là, così teniamo tutti i post insieme, spero non ti offenderai. :bgg2

Kirk78
09-12-14, 10: 20
La sintassi del Exec che ho indicato

Only registered members can view code.
potrebbe andare? Faccio problemi al registro wine se cambio solamente il .desktop?

Il path, come detto, è indicato direttamente dalla chiamata API del programma stesso, che ovviamente non posso cambiare essendo un programma compilato. Esempio del programma Pippo.exe che crea un PDF e lo visualizza tramite il programma di default windows un'agenda creata e scelta dall'utente che usa il programma:

Pippo.exe viene eseguito su wine
clicco su agenda casa
premo pulsante PDF
Pippo.exe crea un PDF con l'agenda scelta (nella sua area di lavoro) e lo visualizza tramite il programma di default di wine (o in windows)
la cartella di lavoro e il nome del PDF è sempre diversa perché dipende dal tipo di agenda, dalla scelta dell'area di lavoro fatta dall'utente del programma. Esempio Anno2014/AgendaCasa9-dic-14.PDF


Idee?

:bai

Andy86
09-12-14, 11: 42
:bai

Il .desktop non c'entra una fava con wine, sono file di linux, servono per vedere gli "apri con programmadiwine" nei menu "apri con" di linux.
A me funzionava solo cambiando il registro di sistema come ti ho detto prima, che è poi il sistema che windows utilizza per gestire le associazioni predefinite. :sisi

Kirk78
09-12-14, 12: 23
Come detto il .desktop che ho trovato pare, invece, proprio all'interno di wine

Only registered members can view code.
infatti si riferisce al

Only registered members can view code.
ovvero l'associazione dei PDF dentro wine, SlimPDF in questo momento, a prescindere dove il file PDF sia in tutto i disco.

Lo script che hai gentilmente postato, a quanto ho capito, apre un PDF nella home, dove lo "cerchi" o in path già conosciuti

Così facendo se apro un .pdf nella home con "wine start nomepdf.pdf" o con "wine explorer" e poi cerco il pdf e lo avvio si apre con okular, però attenzione, funziona solo se il file si trova nella home, altrimenti bisogna modificare l'ultimo parametro dello script.
ovviamente modificando okular con evince, ma è Pippo.exe che definisce (a sua scelta o secondo le scelte anche giornaliere dell'utente) anche la cartella, oltre al nome.


Only registered members can view code.
e io vorrei

Only registered members can view code.

Adesso potrebbe essere

Only registered members can view code. tra 10 minuti

Only registered members can view code.

E questo è solo il programma Pippo.exe. Poi Paperino.exe potrebbe fare un PDF con un nome e cartella casuale.

Il tuo script fa questo senza dover sapere il path prima? Adesso non ho Xubuntu sotto mano ma lo provo sicuramente.

:bai

EDIT Ho comunque copiato i .reg su questo computer e vedo che c'è

Only registered members can view code.

dove c'è SlimPDF.

Andy86
09-12-14, 12: 46
:bai

Il mio script si può corregere come ha detto pierino, cioè usando "winepath" per convertire le path.
Cambiando il .desktop non succede niente, perché non è lì che cerca il comando.
C'è wine nel nome (non nel percorso) perché se li crea lui, ma non sono sotto il profilo di wine.

Quello slimpdf che vedi sotto .pdf punta ad un altra chiave che si chiama anch'essa slimpdf, dove c'è command e il percorso a slimpdf, è il classico caso in cui le applicazioni per windows "sporcano" il registro a modo loro.

Puoi rinominare la voce o lasciarla così, basta che sotto la seconda chiave, quella a cui punta ".pdf", sotto 'command' punti ad uno script che converte la winepath (con winepath) e lanci evince.

(se sostiuisci direttamente slimpdf.exe con /usr/bin/evince, quest'ultimo darà errore perché non riconosce le 'path' in formato wine).

La path che tu dici che cambia viene passata con la variabile '%1' che come vedi nel mio esempio negli altri post rimane sempre davanti al comando indicato nel regedit

Kirk78
09-12-14, 19: 55
:m: quindi dovrei cambiare

Only registered members can view code.
con lo script utilizzando anche

Only registered members can view code.

L'exe del .desktop con SlimPdf era

Only registered members can view code.
E' per questo che pensavo al %f

Noto inoltre che oltre a quello "nuovo" del PDF ci sono parecchie associazioni file, con relativo .desktop
E' per questo che pensavo si potesse modificare solamente il .desktop

:bai

Andy86
09-12-14, 20: 28
:bai

Winepath lo devi mettere nello script, non nel registro, nel registro metti solo lo script con davanti il %1, poi nello script dovrai utilizzare $1.

Kirk78
10-12-14, 00: 23
Ragazzi grazie mille di tutto :clap! Mi avete fatto (re)imparare alcune cose, e mi avete spinto a studiare tutti i comandi wine e ho imparato il magico comando

Only registered members can view code.
che, diciamo in parole povere, intercetta le chiamate delle applicazioni wine (handle) e le esegue con il programma linux di default per quel tipo di file! E questo si può usare per qualsiasi tipo di file, non solo per i PDF!

Per i file PDF, oggetto di questa discussione, quindi basta semplicemente modificare

Only registered members can view code.
con il comando (il nome lo potete scegliere voi)

Only registered members can view code.
e "definire" il comando

Only registered members can view code.
e ci pensa lui a fare le modifiche del path senza usare neanche script con il comando winepath.
Funziona alla perfezione! :gogo

Potete fare lo stesso per tutti i tipi di file che volete.

Certo non è proprio per newbie, quindi non so se lo mettero nella Guida: che dite voi lo metto?

:bai

Andy86
10-12-14, 13: 10
:bai

Bravo. Si vede che sto invecchiando perché non l'avevo proprio trovato. :ehmm

Comunque io non ho il wrapper, funziona solo se faccio "wine winebrowser".

Kirk78
10-12-14, 13: 17
wrapper chi era costui? In parole umane per tutti cosa sarebbe?

:bai

Andy86
10-12-14, 14: 23
:bai

Wrapper significa "involucro", in informatica è un programma (di solito è uno script) che ne richiama un altro.

In genere i 'wrapper' si usano per richiamare/verificare dipendenze, quando un programma ha bisogno che ne sia attivo un altro prima di partire, oppure nelle protezioni anti-pirateria, perché richiamano l'eseguibile vero e proprio dopo aver verificato la presenza del cd.

Nel caso di wine sono script in bash installati in /usr/bin, che, semplificando il concetto, se lo script si chiama "regedit", quando io scrivo "regedit" nel terminale, il terminale richiama lo script (perché /usr/bin è nel path e lo può vedere) lo script fa "wine regedit", è una comodità, insomma.

Kirk78
10-12-14, 14: 37
Si in inglese lo sapevo il significato :tong2, era riguardo a wine che non capivo.

Poi, tu starai invecchiando io invece lo sono già :ehmm, me lo avevi già detto un'altra volta :ops:
Comunque su /usr/bin non ho questo wrapper, altrimenti ti dicevo come era fatto. Forse è un comando che all'interno del registro wine (shell) funziona lo stesso :boh ma fuori no. Infatti da terminale non funziona neanche a me.

:bai

Andy86
10-12-14, 14: 51
se non funziona da terminale allora no, il wrapper non c'è.
però io nel registro di wine devo mettere /usr/bin/wine, altrimenti non funziona. :boh

i wrapper di wine a quello che vedo con "cat /usr/bin/regedit" sono tutti uguali, perché prendono il nome di se stessi, verificano se in wine c'è l'exe con quel nome e lo lanciano: se ho ragione basterebbe fare un cp di un wrapper con il nome del comando di cui si vuole il wrapper, senza toccarne il codice. :m:

Kirk78
10-12-14, 15: 01
Allora ho trovato dove sta winebrowser: è un programma:

Only registered members can view code.
e quindi è per questo che funziona da registro perché è nella PATH di wine (dentro).
Poi molti di questi wrapper, pare che siano stati tutti "convertiti" in programmi in system32 dalla versione 1.1.16, quindi da shell interna funzionano, ma fuori no. Imho.

:bai

EDIT note dei creatori della libreria:

Winebrowser is a winelib application that will start the appropriate native browser or mail client for a wine installation that lacks a windows browser/mail client. For example, you will be able to open URLs via native mozilla if no browser has yet been installed in wine.
The application to launch is chosen from a default set or, if set, taken from a registry key.