humpty
Group: Members
Posts: 655
Joined: Sep. 2005 |
|
Posted: Jan. 01 2008,03:57 |
|
Below is a lua version of my wallpaper/background loader I did over the hols (yeh yeh, you can tell I don't have a life).
I may have gone a bit overboard here with the dragNdrop concept but basically set_wallpaper now allows commands either embedded in the filename or solo dragNdrop commands.
So you can drop files named e.g mypic--reset--full-screen--keep-aspect.jpg
Or you can individually dragNdrop e.g mypic.jpg ++full_screen ++keep-aspect
or highlight a few ++cmds to drop.
The commands accumalate and are saved to default.opts and re-used until a '++reset' or '--reset' is issued.
Just put this file in /home/dsl/.dfmdesk/wallpaper folder and run 'set_wallpaper __make' to make the solo (++)commands.
Read the end of the file to see the commands supported.
Also include '/home/dsl/.dfmdesk/wallpaper/set_wallpaper' in .xinitrc before the last line to load wallpaper at boot.
(the default wallpaper is now called 'current')
Code Sample | #!/bin/lua
-- set_wallpaper [file] [file--with-commands] [++solo-commands]
-- current pic is called 'current' -- use cmd '++make' to make solo cmd files for dragNdrop -- last settings are kept in 'default.opts', use cmd '++reset' to clear -- -------------------------------------------------------------------------- -- functions
function reset_defaults () -- note: if you edit these defaults, required is a space before the cmd scalex = "" scaley = "" aspect = "" centerx = "" centery = "" color = "" color2 = "" grad = "" tile = "" opts = "" end
function process_cmds (cmd) -- tailored cmds if (string.find (cmd, "--reset")) then reset_defaults () print ("defaults reset") end if (string.find (cmd, "--full%-screen")) then scalex=" --scale-width=100" scaley=" --scale-height=100" end if (string.find (cmd, "--full%-x")) then scalex=" --scale-width=100" end if (string.find (cmd, "--full%-y")) then scaley=" --scale-height=100" end if (string.find (cmd, "--black")) then color= " --color=black" end
-- standard xsri cmds (no parameters) if (string.find (cmd, "--keep%-aspect")) then aspect = " --keep-aspect" end if (string.find (cmd, "--center%-x")) then centerx = " --center-x" end if (string.find (cmd, "--center%-y")) then centery = " --center-y" end if (string.find (cmd, "--hgradient")) then grad = " --hgradient" end if (string.find (cmd, "--vgradient")) then grad = " --vgradient" end if (string.find (cmd, "--tile")) then tile = " --tile" end
-- cmds which require parameters s,e,x = string.find (cmd, "--scale%-width=(%d+)") if x then scalex = " --scale-width="..x end s,e,y = string.find (cmd, "--scale%-height=(%d+)") if y then scaley = " --scale-height="..y end
s,e,c = string.find (cmd, "--color=([#%w]+)") if c then color = " --color="..c end s,e,c = string.find (cmd, "--color2=([#%w]+)") if c then color2 = " --color2="..c end
end --process_cmds -- -------------------------------------------------------------------------- -- main
wcmd = "" i=1 while arg[i] ~= nil do wcmd = wcmd.." "..arg[i] i=i+1 end
if wcmd == " ++make" then os.execute ("touch ++black ++full-screen ++full-x ++full-y ++keep-aspect ++center-x ++center-y ++tile ++reset") os.exit(0) end
-- are these solo cmds or embedded in the filename ? if (string.find (wcmd, "++") or wcmd == "") then wcmd = string.gsub (wcmd, "++", "--") solo=true else solo=false end
-- load any filename, and copy it to 'current' if not solo then os.execute ("cp "..wcmd.." /home/dsl/.dfmdesk/wallpaper/current") else print ("solo") end
reset_defaults ()
--load default opts fin=io.open("/home/dsl/.dfmdesk/wallpaper/default.opts", "r") opts=fin:read() fin:close ()
-- process default opts print ("defaults:"..opts) process_cmds (opts)
-- add input opts print ("inputs :"..wcmd) process_cmds (wcmd)
opts=scalex..scaley..aspect..centerx..centery..color..color2..grad..tile print ("final :"..opts)
-- load current pic os.execute ("xsri "..opts.." /home/dsl/.dfmdesk/wallpaper/current")
-- save as default opts fout=io.open("/home/dsl/.dfmdesk/wallpaper/default.opts", "w") fout:write (opts, "\n") fout:close ()
--tailored command options -- ++full-screen -- ++full-x -- ++full-y -- ++black
-- xsri options implemented (see xsri --help for reference) -- --scale-width=100 --scale-height=100 -- --center-x --center-y -- --keep-aspect -- --tile -- --color=#226622 --color2=black -- --vgradient --hgradient
-- xsri options not yet implemented -- --emblem=file -- --emblem-alpha [0-255] -- --geometry=[wxh][+x+y] -- --tile-alpha [0-255] -- --emboss
|
|