§ Maquinotes maleïdes˜
Maquinotes maleïdes
Coses que em passen amb aquest coi de maquinotes
· Executar un quadre de diàleg en Win32 i c++
15/12/2008 14:10

Una de les coses a les que ens malacostuma l'assistent de programes Win32 de Visual Studio és a fer les coses més simples molt més complexes del que han de ser... Per això moltes vegades per no complicar-me la vida quan havia de fer un programa que només contingués un quadre de diàleg.



Una opció seria crear els controls en temps d'execució en la finestra principal, però sovint és massa feina per fer un programa simple.

El procediment que feia servir inicialment era fer servir l'assistent del Visual Studio per crear un projecte bàsic i en el WndProc() capturava el missatge WM_CREATE (que es rep abans de mostrar la finestra) i allà executava el quadre de diàleg i després matava el programa.

...
switch (message)
{
case WM_CREATE:
DialogBox(hInst, (LPCTSTR)IDD_DIALEG, hWnd, (DLGPROC)Dialeg);
PostQuitMessage(0);
break;
...

Això feia que es veiés només el quadre de diàleg i que el programa es morís abans de mostrar la finestra principal (recordo que en el moment en que es rep el WM_CREATE encara no tenim la finestra visible)

Però està clar que hi ha formes millors de fer-ho. Perquè crear una finestra principal si no ens fa falta?

Per això el procediment més adequat seria no fer servir l'assistent gràfic i crear nosaltres mateixos el programa. Per fer-ho durant la creació de projectes hem d'anar a les "opcions de configuració de l'aplicació" i crear un projecte en blanc:



Això ens farà un projecte sense res, ni recursos ni fitxers de codi, i per tant els hem d'afegir manualment. Anem a la "Vista de recursos" i afegim un quadre de diàleg estàndard i li donem el nom que vulguem:


Per afegir el codi anem a "Explorador de sol·lucions" i hi afegim un arxiu de tipus .CPP (en el meu cas li he dit main.cpp)


Ara hem d'afegir el codi necessari per poder executar un programa. Necessitem una funció WinMain (punt d'entrada del programa), una funció de control de missatges del nostre quadre de diàleg


#include
#include "Resource.h"

HWND hWnd;
HINSTANCE hInst;

LRESULT CALLBACK Dialeg(HWND hdlg, UINT Msg, WPARAM wParam, LPARAM lParam);
INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
hInst = hInstance;
DialogBox(hInst, MAKEINTRESOURCE(IDD_CONTROLS_DLG), hWnd,
reinterpret_cast(Dialeg));
return FALSE;
}


Aquí està tota la gràcia de l'assumpte. Podem oblidar-nos completament del famós bucle de missatges perquè ja està implementat en el DialogBox! Com que el DialogBox mostra finestres modals el programa anirà fent fins que es tanqui la finestra i després podem acabar directament.

La finestra de control de missatges del quadre de diàleg és normal o sigui que una cosa com aquesta ja funcionaria pel quadre de diàleg per defecte:


LRESULT CALLBACK Dialeg(HWND hDlg, UINT Msg,WPARAM wParam,LPARAM lParam)
{
switch(Msg)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
case IDCANCEL:
EndDialog(hDlg, 0);
return TRUE;
}
break;
}
return FALSE;
}


Més simple impossible. Cada dia m'agrada més fer coses amb C++ unmanaged :-)


· Programació fent servir l'API Win32
15/12/2008 11:40

Actualment hi ha moltes formes de fer programes amb Windows. La majoria a través de les diferents llibreries intenten simplificar-ne l'entorn de programació fent-lo més amè per l'usuari:


  • La biblioteca MFCenllaç extern (Microsoft Foundation Class) encapsula gran part de la API de Win32, encara que no tota i genera una jerarquia de classes en forma orientada a objectes. MFC ofereix classes que representen objectes fonamentals de Windows, com finestres, quadres de diàleg, pinzells, etc.. . Les funcions membre d'aquestes classes es fan servir per obtenir les funcions més importants de la API associades a l'objecte principal.
    La biblioteca MFC tradicionalment es considera bastant lenta.

  • La biblioteca ATL enllaç extern(Active Template Library) és un subconjunt de classes de C++ basades en plantilles que faciliten la creació d'objectes petits i ràpids del model COM. ATL encapsula les API de Win32 i de la biblioteca de temps d'execució de C, però no tant com MFC. Es va crear perquè MFC feia massa grans els executables i això era un problema per Internet.

  • La biblioteca WTLenllaç extern (Windows Template Library) és una llibreria que s'assembla a MFC però està basada en plantilles i és menys extensa (no té classes per a sockets o base de dades) . Afegeix la possibilitat de treballar amb finestres a ATL. Està alliberada sota llicència GPL per Microsoft


Però no sé perquè sento una mena de passió per programar amb C++ i cridant l'API de Windows directament. Segurament deu ser una reminiscència de quan vaig començar a programar per Windows. Quan jo vaig començar ho vaig fer, com molta gent, fent servir Visual Basic. D'aquella època el que en recordo més era el seu funcionament lent, i que això em desesperava tant que fins i tot hi havia vegades que redissenyava varies vegades els mateixos trossos de programa per intentar trobar formes de fer-los més ràpids.

En el moment en que em van encarregar un programa que havia de fer una petita animació per pantalla em va obligar a aprendre a fer els programes amb C. I el mateix programa fet amb C++ i MFC anava visiblement molt més de pressa que amb Visual Basic! Un cop entregat em vaig obligar a fer-lo fent servir C++ a pèl i només fer servir les crides a l'API... La velocitat era estratosfèrica...

Per això i perquè he vist que és difícil trobar-ne informació (Microsoft s'ha volcat completament en el .NET framework), si tinc temps, aniré posant uns quants articles basats en el que Microsoft anomena C++ non managed.

Per fer els exemples faré servir Visual Studio però no hi hauria d'haver cap problema per fer servir cap altre compilador que pugui compilar programes en Windows.


«   »
· Problemes de teclat en els hosts Windows de VMWare Server 2.0 en Ubuntu Ibex
20/11/2008 17:54

Un dels problemes que he tingut des de que he actualitzat el meu sistema a Ubuntu Intrepid Ibex ha estat que en la màquina virtuals en Windows XP que tinc per fer coses en Windows el teclat ha començat a fer el burro: No em funcionaven bé les tecles del cursor o les de av.pàgina. Per exemple la tecla del cursor avall feia que apareixes el menú de Windows. Això és molt emprenyador sobretot quan estas treballant amb un editor (en el meu cas en Visual Studio)... Només es pot rectificar anant a les posicions amb la rata.

Estava clar que el problema estava en que el mapeig de tecles de Ubuntu Intrepid no és el mateix que fa servir VMWare (dic de Intrepid perquè en la versió anterior funcionava bé).

Solució 1:Aquesta solució, que he comprovat que funciona, la he trobat a aquest blocenllaç extern.

Per solucionar-ho he hagut de crear un arxiu que se n'encarregui de fer la traducció correcta. Això es pot fer en VMWare posant les equivalències correctes en l'arxiu "config" del directori de configuració:

joe ~/.vmware/config


I a dins s'hi ha de posar el mapejat correcte de les tecles que sembla que fallen.


xkeymap.keycode.108 = 0x138 # Alt_R
xkeymap.keycode.106 = 0x135 # KP_Divide
xkeymap.keycode.104 = 0x11c # KP_Enter
xkeymap.keycode.111 = 0x148 # Up
xkeymap.keycode.116 = 0x150 # Down
xkeymap.keycode.113 = 0x14b # Left
xkeymap.keycode.114 = 0x14d # Right
xkeymap.keycode.105 = 0x11d # Control_R
xkeymap.keycode.118 = 0x152 # Insert
xkeymap.keycode.119 = 0x153 # Delete
xkeymap.keycode.110 = 0x147 # Home
xkeymap.keycode.115 = 0x14f # End
xkeymap.keycode.112 = 0x149 # Prior
xkeymap.keycode.117 = 0x151 # Next
xkeymap.keycode.78 = 0x46 # Scroll_Lock
xkeymap.keycode.127 = 0x100 # Pause
xkeymap.keycode.133 = 0x15b # Meta_L
xkeymap.keycode.134 = 0x15c # Meta_R
xkeymap.keycode.135 = 0x15d # Menu


La idea és fer la equivalència de la codificació que fa la tecla (es pot veure amb el programa evdev) amb el que espera.

Solució 2:

Més tard he descobert que hi havia una solució més senzilla. Sembla que es podia solucionar el problema generant automàticament el fitxer d'aquesta forma:

echo 'xkeymap.nokeycodeMap = true' > ~/.vmware/config



«   »
· QtCreator a Ubuntu Intrepid Ibex
10/11/2008 15:00

D'entre les llibreries per realitzar programes n'hi ha una que m'agrada especialment, Qt. Des de que la versió de Windows és lliure, fer programes amb les llibreries Qt ens permet desenvolupar programes amb un entorn gràfic multiplataforma de forma realment senzilla.

Fins ara he estat fent servir KDevelop per fer els programes però la versió estable actual de KDevelopenllaç extern no és gaire amigable per desenvolupar programes fent servir Qt 4 (la propera versió de KDevelop 4 si que ho serà però pel meu gust està en un estat molt primerenc)

Per això quan he vist que s'ha creat un nou IDE multiplataforma per desenvolupar amb Qt: QtCreatorenllaç extern, m'he decidit a provar-lo. Tot i que no estarà acabat fins a principis de l'any vinent (estem en la versió 0.9) les meves impressions en les proves que he fet han estat molt bones.

La instal·lació és realment senzilla. Es baixa el paquet autoinstal·lable de la seva web i simplement s'executa i es va responent a quin lloc el volem instal·lar. Una instal·lació més semblant a les de Windows que a les de Linux. Al acabar et deixa una icona a l'escriptori per poder-lo iniciar ràpidament



Al arrancar-lo es pot veure clarament que Nokia va comprar aquestes llibreries :-)


M'agrada de l'entorn la solució dels botons de debug i d'execució amb l'estat del projecte a sota a l'esquerra.La creació de projectes es fa via assistent, com a KDevelop, i et permet triar: el lloc on es crearà, el nom del projecte, el tipus d'objecte base i les llibreries necessàries






I un cop acabat ens mostra els fitxers creats en un costat de la pantalla.


I la "complicada" prova que he fet per començar en plena execució:



Per ara em sembla que aquest IDE està per sobre de KDevelop a l'hora de fer projectes en Qt:

  • És molt més lleuger (Normal si tenim en compte que KDevelop és un projecte més ampli i no només concentrat en Qt)

  • Multiplataforma (hi ha versions de Linux, Mac i Windows)

  • El disseny de l'entorn gràfic m'agrada més...Em sembla més pràctic


Vaja que el continuaré provant, hi faré una prova més complicada i segurament a primers d'any quan hi hagi la versió definitiva podré veure si es converteix en el meu IDE de referència en Qt. Llàstima que no sigui de codi obert :-(


Problemes que he tingut a Ubuntu per treballar amb QtCreator

1. La visualització de les finestres a vegades falla fins que s'hi fa clic a sobre
A vegades em trobo que al clicar en un fitxer per veure'n el codi font la pantalla que conté el codi no es refresca correctament fins que aconsegueix el focus. Ho miraré de provar des de KDE en comptes de des de GNOME per veure si és un problema de la integració amb GNOME


2. Fallava al compilar el projecte
Sembla que fallava al compilar el projecte perquè no té correctament el camí a les llibreries QT. Per solucionar-ho només he hagut d'afegir-hi el directori a les opcions de l'IDE. Per tant simplement a "Tools->Options" busco la opció de Qt4 i hi afegeixo el directori /usr/share/qt4 i el poso per defecte



3. No executava la versió correcta de qmake
El problema més gran per aconseguir que funcionés en Ubuntu perquè com que ja tenia eines de desenvolupament de Qt3 els projectes no es creaven bé perquè feia servir el qmake de la versió 3 en comptes del de la 4. Per canviar-ho he hagut de fer:

$ qmake -v
Qmake version: 1.07a (Qt 3.3.8b)

Aquest és el de la versió 3, però es pot comprovar que hi són tots dos i el que passa és que Ubuntu m'ha associat el qmake a la versió 3:

$ ls /usr/bin/qmake
qmake qmake-qt3 qmake-qt4

$ ls /usr/bin/qmake -all
lrwxrwxrwx 1 root root 23 1018-12-25 23:42 /usr/bin/qmake -> /etc/alternatives/qmake


Per tant s'ha de canviar la opció per defecte perquè cridi al qmake de la versió 4 en comptes del de la versió 3

$ sudo update-alternatives --config qmake

Hi ha 2 alternatives que proveeixin «qmake».

Selecció Alternativa
-----------------------------------------------
*+ 1 /usr/bin/qmake-qt3
2 /usr/bin/qmake-qt4

Premeu retorn per a mantenir l'opció per defecte[*], o introduïu un número de selecció: 2
Using '/usr/bin/qmake-qt4' to provide 'qmake'.





«   »
· Actualització a Ubuntu 8.10 Intrepid Ibex
06/11/2008 21:46

Em sembla que és la primera vegada que l'actualització de versions d'Ubuntu i no m'ha deixat res desconfigurat ni inestable. Per ara les coses inicialment sembla que funcionen correctament.

Tot i això després de treballar-hi una mica he descobert que hi ha unes quantes coses que no m'acaben de convèncer:


  • KDE 4: Em sembla una interfície molt bonica però la forma de fer les coses és realment poc intuïtiva i ha deixat de tenir els millons d'opcions de configuració que tenia, l'escriptori ara no sé perquè serveix però va bastant malament i a més en determinats moments sembla que li agafen unes pauses molt rares amb les coses que poses a l'escriptori...
    Després de molts anys, em sembla que KDE4 m'acaba de convèncer de que em passi a GNOME. Adéu KDE!

  • Hi ha moltes millores en el NetWork Manager (un dels xurros més grans de Linux) però sembla que ara té molts problemes amb el xifrat WPA. Això abans funcionava perfectament, o sigui que s'ha espatllat...

    Després de que tot anés correctament a casa meva, he anat a la feina i ha estat totalment impossible connectar amb els punts d'accés WPA o WPA2 i en canvi si amb el WEP. Per més que ho he provat no hi ha hagut forma de connectar-hi mentre abans connectava correctament.

    Un cop de nou a casa tampoc podia connectar amb el meu punt d'accés (I pel matí anava!). Després d'insistir vàries vegades, i posar una contrasenya errònia al final ha connectat... Fa mala pinta.



I res més! Recordo tot el que em va passar en les anteriors actualitzacions (1)enllaç extern i (2)enllaç extern i estic al·lucinant... Sembla que la cosa millora de veritat



«   »
· Crear usuaris a l'Active Directory des de consola
16/10/2008 08:26

Ara que Microsoft ja no considera l'entorn de consola com un "pecat" i que pensa el treball amb la consola facilita les coses als administradors he de reconèixer que cada dia descobreixo coses noves que es poden fer des de la consola dels sistemes Windows que m'agraden força. L'entorn de comandes en els sistemes Microsoft cada dia és més potent i permet que l'administració remota dels seus sistemes sigui molt més senzilla (sense haver de recórrer a innumerables clics de ratolí) i sobretot es facilita l'automatització de tasques via scripts.

Encara estic avaluant el que Microsoft anomena Powershellenllaç extern i que és una millora del shell amb possibilitats de creació d'scripts molt interessants.

Però l'altre dia havia de fer un alta massiva d'usuaris i em vaig trobar que els scripts en VBA que es poden trobar per Internet no m'acabaven de convèncer (fins i tot en alguns hi havia comentaris de gent en alguns que deien que no funcionaven bé... ) i no tenia a l'abast el CD de Windows 2003 per treure'n l'script que porta per fer altes d'usuaris massives. I buscant per Internet vaig descobrir una comanda que entre altres coses permet crear usuaris a l'Active Directory (AD) des de la consola: dsadd

DSadd sembla que només és un dels scripts de DS que estan formats per:

  • DSmod - Per modificar atributs de l'AD

  • DSrm - Per eliminar objectes de l'AD

  • DSmove - Per recolocar objectes dins l'arbre d'AD

  • DSadd - Afegir coses a l'arbre AD

  • DSquery - Per buscar objectes segons criteris

  • DSget - Per mostrar les propietats d'un objecte



Pel que he vist dsadd és el més important perquè trobo que les altres tasques és més complicat que calguin en un script. Dsadd permet afegir al AD equips, usuaris, grups, unitats organitzatives, contactes i quotes. Però el més interessant per mi és la possibilitat d'afegir comptes d'usuari! i segons l'ajuda que dóna Microsoft la creació d'usuaris conté els següents paràmetres (em concentro en la creació d'usuaris que em sembla el més interessant i a més era el que em feia falta)


dsadd user DNUsuario [-samid nombreSAM] [-upn UPN] [-fn nombre] [-mi inicial] [-ln apellidos] [-display nombreDescriptivo] [-empid idEmpleado] [-pwd {contraseña | *}] [-desc descripción] [-memberof grupo ...] [-office oficina] [-tel númeroDeTeléfono] [-email correoElectrónico] [-hometel númeroDeTeléfonoParticular] [-pager númeroDeLocalizador] [-mobile númeroDeTeléfonoMóvil] [-fax númeroDeFax] [-iptel númeroDeTeléfonoIP] [-webpg páginaWeb] [-title cargo] [-dept departamento] [-company compañía] [-mgr director] [-hmdir directorioPrincipal] [-hmdrv letraDeUnidad:][-profile rutaDeAccesoDePerfil] [-loscr rutaDeAccesoDeSecuenciaDeComandos] [-mustchpwd {yes | no}] [-canchpwd {yes | no}] [-reversiblepwd {yes | no}] [-pwdneverexpires {yes | no}] [-acctexpires númeroDeDías] [-disabled {yes | no}] [{-s servidor | -d dominio}] [-u nombreDeUsuario] [-p {contraseña | *}] [-q] [{-uc | -uco | -uci}]


Després de fer unes quantes proves perquè no em va semblar gaire evident la forma en que s'havien de crear els usuaris ja que també et demana que li passis la creació LDAP... i que quan aconsegueixes fer-ho funcionar descobreixes des de l'entorn d'usuari algunes coses no s'han emplenat...

La creació de l'usuari "Pere Martí" amb login "pmarti" dins del domini PATATA.NET amb contrasenya temporal "9qwerty!" de manera que quan iniciï sessió li demanarà que canviï la contrasenya seria això:

dsadd user "cn=Pere Marti,cn=users,dc=PATATA,dc=net" -fn "Pere" -ln Martí -pwd 9qwerty! -samid pmarti -mustchpwd yes -disabled no -upn pmarti@PATATA.NET


Bàsicament:

-fn i -ln: serveixen per omplir el nom i cognoms dins de la pestanya de creació d'usuaris
-pwd: serveix per especificar quina contrasenya tindrà
-samid i -upn: em vaig veure obligat a posar-ho perquè encara que sembla que funciona quan entres a consultar les dades en l'entorn gràfic no hi surten les seves dades
-mustchpwd: És per obligar a l'usuari a canviar la contrasenya al entrar

En general com es pot veure en l'ajuda és pot crear un usuari especificant-hi qualsevol cosa que ens interessi. O sigui que no és gaire complicat fer un script de creació d'usuaris absolutament personalitzat i que permeti crear un grup d'usuaris sense recórrer al tradicional copia les coses d'un altre usuari.

Per afegir altres coses que no siguin usuaris podem recórrer Ajuda de Microsoft sobre aquesta comandaenllaç extern


«   »
· Nous pecats
16/03/2008 21:21

Feia molt de temps que no postejava perquè estava molt embolicat amb la feina.

Ara per compensar faré un post humorístic (fa gràcia però és veritat).

No sé si fa molt de temps que es coneix perquè si puc evitar-ho no miro mai les notícies però la església catòlica en una reunió de la Conferència Episcopal al santuari de Teram i a la Universitat Lateranense de Roma va definir que també són pecat:

1. Fer servir programes sense la llicència corresponent
2. Crear i difondre virus
3. Enviar correus electrònics anònims o amb dades falses
4. Baixar música i pel·lícules d'Internet sense pagar
5. Enviar spam
6. La violació de la privacitat i la seguretat dels sistemes informàtics
7. Creació de llocs web pornogràfics i fer-los servir

Impressionant, ara ja no cal comprar la llicència de Windows, n'hi ha prou amb piratejar-la i anar-se a confessar :-)

A veure si tinc més temps i puc fer algun article més tècnic que en tinc uns quants de pensats...


«   »
· Firefox 3.0 sortirà amb molts errors
15/11/2007 13:09

Em sembla que la fundació Mozilla s'està equivocant per culpa del èxit que està tenint el seu navegador: Ara sembla que tenen previst treure la versió de Firefox 3.0 només arreglant un 20% dels errors que saben que té.

Em sembla una política errònia, de la mateixa forma que m'ha semblat malament cada vegada que ho ha fet Microsoft (el Windows Me va ser escandalós). No defensaré aquesta política només perquè es tracta de programari lliure.

Els terminis de publicació dels programes ha de ser determinat pels tècnics i no pels comercials! O ja no estem d'acord amb allò que dèiem fa uns anys: "Un dels avantatges del programari lliure és que al no dependre dels terminis comercials surt en el moment en que estigui preparat per fer-ho". Si Firefox 3.0 no està preparat, que no surti. És igual que els errors que es corregeixin siguin els més importants, ja que si es publica un programa amb un grapat d'errors coneguts, el que s'està publicant realment és un producte deficient.

Encara hi són a temps i espero que com deixen entreveure alguns comentaris, s'ho repensin i, si cal, incrementin el número de versions 'beta' per publicar un producte millor.

Via: ComputerWorldenllaç extern


«   »
· S'anucien els preus del Windows Server 2008
14/11/2007 00:06

Sembla que per la nova versió de Windows Server tindrà només 5 versions que seran:

*Windows Server 2008 Standard: 999$ amb 5 llicencies de client.
*Windows Server 2008 Enterprise: 3.999$ amb 25 llicencies de client.
*Windows Web Server 2008: 469$.
*Windows Server 2008 Datacenter: 2.999$ per processador.
*Windows Server 2008 per sistemes Itanium: 2.999$ per processador.

Totes les versions estaran disponibles en 32 i 64 bits menys el darrer que només ho estarà en versió de 64 bits.

Si es vol les edicions Standard, Enterprise i Datacenter de 64 bits tindran la tecnologia de virtualització Hyper-V (Viridian) o sense (amb una petita retallada en el preu)

Windows 2008 estarà disponible el 27 de febrer de 2008.

Jo sóc molt crític amb els productes de Microsoft dedicats al consum del gran públic però no puc negar que en la seva gama Server estan a un nivell diferent: estan fent molt bons sistemes.


«   »
· Comprimir des de D3lphin en Ubuntu Gutsy en Zip i Rar
07/11/2007 22:28

En l'actualització a Ubuntu 7.10 Gutsy s'ha canviat el gestor d'arxius Konqueror per D3lphin que en principi ha de servir de pont per Dolphin que serà el que hi haurà en KDE 4.0.

Però en el canvi, s'ha perdut una de les funcionalitats que jo feia servir a vegades: La possibilitat de comprimir els arxius en coses que no siguin .tar.gz o .tar.bz2 des del gestor. Ara d3lphin ha afegit un menú lateral en el que hi tenim diferents opcions entre les quals hi ha comprimir. Però en el cas de la compressió d'una carpeta només hi tenim la opció "Compress here" que simplement comprimeix la carpeta en tar.gz


Amb els arxius passa una cosa semblant, en aquest cas hi surt un menú desplegable però només té dues opcions: comprimir amb .tar.gz i .tar.bz2
Comprimir arxiusenllaç extern

Com que a mi m'agradava tenir la possibilitat de comprimir amb altres format de compressió d'arxius (RAR, ZIP, 7Z, etc..) he decidit investigar com fer-ho
He descobert que només cal modificar dos arxius en la configuració de k3lphin perquè apareguin les opcions extres de compressió.

Si només vull que aquestes opcions surtin a l'usuari actual i que la resta d'usuaris del sistema continuïn amb les opcions per defecte només hem d'afegir un parell d'arxius al directori ~/.kde/share/apps/d3lphin/servicemenus. En el meu cas el directori servicemenus no existia i per tant abans l'he hagut de crear:

$ cd .kde/share/apps/d3lphin
$ mkdir servicemenus
$ cd servicemenus

En aquest directori creem els arxius compress.desktop (que és el que servirà per comprimir arxius) i ark_compress.desktop (que és el que servirà per la compressió de fitxers)

En el contingut de compress.desktop hi posaré:

[Desktop Entry]
ServiceTypes=all/allfiles
Actions=CompressTarGz;CompressTarBz2;CompressZIP;CompressRAR
X-KDE-Priority=TopLevel
X-KDE-Submenu=Compress

[Desktop Action CompressTarGz]
Name=Gzipped Tar Archive
Icon=ark
Exec=ark --add-to %U Archive.tar.gz

[Desktop Action CompressTarBz2]
Name=Bzip2-ed Tar Archive
Icon=ark
Exec=ark --add-to %U Archive.tar.bz2

[Desktop Action CompressZIP]
Name=ZIP Archive
Icon=ark
Exec=ark --add-to %U Archive.zip

[Desktop Action CompressRAR]
Name=RAR Archive
Icon=ark
Exec=ark --add-to %U Archive.rar

Això farà que ara pels arxius tindrem un menú que ens permetrà triar qualsevol de les quatre opcions
que hem afegit

Si us hi fixeu es realment simple, es tracta de que cada opció ha de sortir llistada a la variable Actions i ha de tenir una secció [Desktop Action] on s'hi especificarà la comanda amb la línia Exec, la icona que el representarà amb Icon i el text que es veurà en la opció amb la línia Name. O sigui que és realment senzill afegir-hi opcions extres.

Per tenir les opcions de compressió disponibles pels arxius individuals hem de fer una cosa semblant amb el fitxer ark_compress.desktop:

[Desktop Entry]
Encoding=UTF-8
ServiceTypes=inode/directory
Actions=CompressTarGz;CompressTarBz2;CompressZIP;CompressRAR
X-KDE-Priority=TopLevel
X-KDE-Submenu=Compress

[Desktop Action CompressTarGz]
Name=Compress Here in TarGz
Exec=ark --add-to %u %u.tar.gz
Icon=ark

[Desktop Action CompressTarBz2]
Name=Compress Here in TarBz2
Exec=ark --add-to %u %u.tar.bz2
Icon=ark

[Desktop Action CompressZIP]
Name=Compress Here in ZIP
Exec=ark --add-to %u %u.zip
Icon=ark

[Desktop Action CompressRAR]
Name=Compress Here in RAR
Exec=ark --add-to %u %u.rar
Icon=ark



Si en comptes de fer-ho per l'usuari actual es vol fer per tots els usuaris del sistema només s'han de fer els canvis en els arxius que hi ha a /usr/share/apps/k3lphin/servicemenus/


«  
1 2 3 4 5 6 7 8 9 10 *