Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Bit of irony here, in that I'm not a superuser on this machine, but our development server is FreeBSD with X11 and GTK 2 installed on it. I found I'm able to use my own themes on the server by dropping them into ~/.themes and then by putting include "/home/my-user-name/.themes/path/to/theme/gtk-2.0/gtkrc" on the first line of ~/.gtkrc-2.0.

However, some of the themes I've used are dependent on murrine being installed. Is it possible to compile and include the engine without any superuser (su or sudo) access at all?

share|improve this question
    
If your home directory is not mounted no-exec or similar restrictions then yes. Of course you can. It might be more work then asking root to install /usr/ports/x11-themes/gtk-murrine-engine and you will have to update it yourself when a newer version comes out, but nothing is stopping you from doing that. –  Hennes Sep 5 '13 at 14:04
    
If you have determined that Murrine requires sudo then you are out of luck –  Ramhound Sep 5 '13 at 14:05
    
@Ramhound Most of the instructions I've read are for people in full control of the machine, and the usual case seems to be to install the engine for all users to use. I'm still getting into the world of *nix from Windows and learning best practices, conventions, etc, and half of the problem is that I don't know where to look half the time while keeping my mindset that just about anything is possible if you look hard enough or ask questions. Me determining that murrine "required" sudo to install was based on what info I could find and prior (albeit limited) experience. –  p0lar_bear Sep 5 '13 at 14:47
add comment

2 Answers

up vote 2 down vote accepted

According to grawity's answer, the directory ~/.gtk-2.0 is in gtk's engine $PATH. If so, you should be able to download murrine's source from here and then run:

tar xvzf murrine-0.90.3.tar.gz
cd murrine-0.90.3/
./configure ---prefix=~/.gtk-2.0 --libdir=~/.gtk-2.0
make
make install

That should install the engine in ~/.gtk-2.0 for which you will not need root access.

share|improve this answer
1  
It's actually the --libdir, since GTK doesn't look in ~/.gtk-2.0/lib/, but in ~/.gtk-2.0/ directly. –  grawity Sep 5 '13 at 14:15
1  
@grawity you mean --prefix=~/.gtk-2.0 --libdir=~/.gtk-2.0? –  terdon Sep 5 '13 at 14:22
    
I got this output with either config when I run make, semicolons in place of line breaks: Making all in schema; make: don't know how to make murrine.xml. Stop; *** Error code 1; Stop in /m/home/<my name>/murrine-0.90.3. –  p0lar_bear Sep 5 '13 at 14:54
    
Ah, I renamed schema/murrine.xml.in to murrine.xml and it compiled. –  p0lar_bear Sep 5 '13 at 15:02
1  
Alright, so, I got this working without incident, though I had to do some poking of things! First, I used murrine 0.98.1 instead, as the theme I was using was complaining about unknown identifiers. Second, I had to rename that above XML file. Third, after using the commands @terdon put as the answer, I had to move ~/.gtk-2.0/lib/gtk-2.0/{abi-version} to ~/.gtk-2.0/{abi-version}. After all of that, it's working 100%! And the theme I'm testing on is here. What can I say, I like Ambiance! –  p0lar_bear Sep 5 '13 at 15:45
show 1 more comment

You can install theme engines in ~/.gtk-2.0. The last time I checked, the search path was:

~/.gtk-2.0/{abi-version}/{machtype}/engines/lib{engine}.dll
~/.gtk-2.0/{abi-version}/{machtype}/engines/lib{engine}.la
~/.gtk-2.0/{abi-version}/engines/lib{engine}.dll
~/.gtk-2.0/{abi-version}/engines/lib{engine}.la
~/.gtk-2.0/{machtype}/engines/lib{engine}.dll
~/.gtk-2.0/{machtype}/engines/lib{engine}.la
~/.gtk-2.0/engines/lib{engine}.dll
~/.gtk-2.0/engines/lib{engine}.la
{prefix}/lib/gtk-2.0/{abi-version}/{machtype}/engines/lib{engine}.dll
{prefix}/lib/gtk-2.0/{abi-version}/{machtype}/engines/lib{engine}.la
{prefix}/lib/gtk-2.0/{abi-version}/engines/lib{engine}.dll
{prefix}/lib/gtk-2.0/{abi-version}/engines/lib{engine}.la
{prefix}/lib/gtk-2.0/{machtype}/engines/lib{engine}.dll
{prefix}/lib/gtk-2.0/{machtype}/engines/lib{engine}.la
{prefix}/lib/gtk-2.0/engines/lib{engine}.dll
{prefix}/lib/gtk-2.0/engines/lib{engine}.la

where {abi-version} appears to be 2.10.0, {machtype} is the GNU-style machine type ($MACHTYPE in Bash), and {engine} is the engine name (e.g. murrine). The {prefix} is usually /usr on Linux, or the program's installation directory (e.g. C:\Program Files\Pidgin) on Windows.

share|improve this answer
1  
How did you find out that path? –  terdon Sep 5 '13 at 14:11
2  
@terdon: I made it look for a nonexistent engine and watched with Process Monitor (strace on Linux). –  grawity Sep 5 '13 at 15:27
    
Clever clever... –  terdon Sep 5 '13 at 15:58
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.