nfarrar Posted June 14, 2014 Share Posted June 14, 2014 I'm using the sublime project workflow with alfred, which uses mdfind to locate .sublime-project files on my system and open them in sublime text. Very slick! However - if the .sublime-project file is stored in a hidden directory (in this case .config/) it is not indexed by spotlight and therefore cannot be located with this workflow. I'm hoping there is a way to force spotlight to index specific hidden folders, or some other workaround. Any ideas? Link to comment
deanishe Posted June 16, 2014 Share Posted June 16, 2014 (edited) Is that the workflow I wrote?I had the same problem myself with my ~/.dotfiles folder.I tried a few things to get mdfind to return the contents of hidden directories, but it won't One alternative is to swap out the mdfind command for locate '*.sublime-project', but this is a lot slower and returns results you definitely don't want, such as .sublime-project files located within installed apps' bundles.My current workaround is to just keep the project files in another directory. It's no biggie, as I only ever open them via Alfred.Still, I'd like this to work, too, so I'll see what I can do. Edited June 16, 2014 by deanishe Link to comment
deanishe Posted June 16, 2014 Share Posted June 16, 2014 (edited) So, I updated my ST projects workflow.locate turned out to be something of a dead-end (its database is so rarely updated), but I added it anyway, and also support for searching individual folders with find that mdfind otherwise wouldn't search.In addition, you can also specify globbing patterns that will exclude matching paths from the results.Note, the searching takes place in the background, so the workflow always remains responsive (in fact, it's faster than before), even while updating. It just might take a few seconds for new files to show up in the results. Edited June 16, 2014 by deanishe Link to comment
rice.shawn Posted June 18, 2014 Share Posted June 18, 2014 If you do want to go the route of "locate" or just keep your DB up to date, then you need this command: sudo /usr/libexec/locate.updatedb If you want to make it easier on yourself, then add the following line to your /etc/sudoers file (replacing USERNAME with your username): USERNAME ALL=NOPASSWD:/usr/libexec/locate.updatedb To make it even easier, then do ln -s /usr/libexec/locate.updatedb /usr/local/bin/updatedb If you're using my Alfred Cron workflow, then you could just create a script run however often you want with the single line: updatedb after doing the previous things. But, Dean's fix is obviously the best because, well, he fixed it. Link to comment
deanishe Posted June 18, 2014 Share Posted June 18, 2014 That was my first thought (keep the locate database updated), but it ultimately isn't really viable because it takes ages to update and you can't be running it every 15 minutes in any case, and you also want newly created files to show up in Alfred in a timely fashion (say a couple of minutes at the very outside). I think the current implementation is an acceptable hack solution: You can add a specific folder to be searched with find, and if it turns out you're rarely adding new ST project files to it (which is pretty much always the case for me), you can delete that folder from the configuration and just rely on the results from locate instead (which will have picked it up by this time). At any rate, I'm very glad I fixed the workflow, as I added another couple of ST project files to hidden directories yesterday. Sod grubbing around in the filesystem like an animal. The /etc/sudoers tip is an all-round amazing thing that everyone should know. I only found out about it a couple of weeks ago, and am gutted I didn't learn it sooner. To think of the amount of time I could have saved typing in my bloody passwords. I now use it for apt-get on all my Linux machines. It might be different on OS X, but on Linux in any case, you still have to prefix the command with sudo, you just don't get asked for your password. Link to comment
rice.shawn Posted June 18, 2014 Share Posted June 18, 2014 You're right about needing the sudo prefix. If you want a really easy way to add to your sudoers file, then you can also just use my sudoers workflow and not worry about breaking your /etc/sudoers file. Link to comment
deanishe Posted June 18, 2014 Share Posted June 18, 2014 I've never actually used it on a Mac, as I rarely do things in the Terminal that require sudo (I use Homebrew to install most software). Or does that also allow you to install stuff/change network settings without your password? That would be awesome! Link to comment
rice.shawn Posted June 18, 2014 Share Posted June 18, 2014 Or does that also allow you to install stuff/change network settings without your password? That would be awesome! Yes. Link to comment
deanishe Posted June 20, 2014 Share Posted June 20, 2014 Yes. You can't just leave it at that, you sod. How???? Link to comment
rice.shawn Posted June 20, 2014 Share Posted June 20, 2014 Take a look at the update for my DHCP Toggle workflow. It lets you change IP / router settings easily, but it also contains a nice little script to add yourself to the sudoers file. (When messing with your /etc/sudoers file, always check it with visudo — see the add-sudo.sh script there, or look at the one in the Sudoers workflow). Basically look at this entry: $USER ALL=NOPASSWD:/usr/sbin/networksetup $USER is, obviously, the username (make sure you fill that in). ALL where it can come from (so, you might consider restricting this to localhost) And /usr/sbin/networksetup is the command that you get to use. You can also set it so that it has args in it so that you can use the command only with certain args. You still need to use sudo before entering the command. But doing so also lets you use sudo without needing the interaction, so, behind an Alfred script, sudo will always fail (unless you pipe the password, which I need not tell you is a terrible idea) unless you've added the line to /etc/sudoers. I can't remember if you can do such a thing with the OS X GUI, but you could fake it by creating a few workflows that use sudo after you added the appropriate commands to the /etc/sudoers file. Link to comment
rice.shawn Posted June 20, 2014 Share Posted June 20, 2014 If you want to bake the sudo functionality into any of your workflows, look at the DHCP toggle one. Unfortunately, running `cat /etc/sudoers` requires a password, so that's not the best way to check it. I just wrote in a sort of sudo-flag in the data directory once the user adds sudo functionality. If that file is there, then it uses sudo; if not, then it doesn't (and prompts the user for a password each time). Link to comment
deanishe Posted June 21, 2014 Share Posted June 21, 2014 I meant with the GUI, not with Terminal. I know how to allow command-line apps. Can I get the Network Preference Pane to work that way? Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now