Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork280
add .desktop prompt launcher#651
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:master
Are you sure you want to change the base?
Uh oh!
There was an error while loading.Please reload this page.
Conversation
I am interested in reactions to this idea and if there is a better way to go about it. I am very happy with this in my setup. It is particularly useful for launching steam games. |
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
XMonad/Prompt/DotDesktop.hs Outdated
| cmdFilter :: String -> String -- fixme future do something other than dropping these | ||
| cmdFilter ('%':'f':xs) = cmdFilter xs | ||
| cmdFilter ('%':'F':xs) = cmdFilter xs | ||
| cmdFilter ('%':'u':xs) = cmdFilter xs | ||
| cmdFilter ('%':'U':xs) = cmdFilter xs | ||
| cmdFilter ('%':'c':xs) = cmdFilter xs | ||
| cmdFilter ('%':'k':xs) = cmdFilter xs | ||
| cmdFilter ('%':'i':xs) = cmdFilter xs | ||
| cmdFilter ('%':'%':xs) = '%' : cmdFilter xs | ||
| cmdFilter (x:xs) = x : cmdFilter xs | ||
| cmdFilter "" = "" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Well this doesn't look fun :) I'm not familiar with.desktop files at all; what exactly are you doing here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I want to just execute the .desktop command specified, without arguments.
Per the spec here:
https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#exec-variables
there are many field codes for arguments which I cannot pass directly to the shell to execute, so I just remove them.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
You might want to see if usingxdg-open to run it gives you more options.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
I do not understand how I would use xdg-open? Could you provide an example?
Just for context, here is an example fromgimp.desktop:
[Desktop Entry]Version=1.0Type=ApplicationName=GNU Image Manipulation Program...Exec=gimp-2.10 %U...Basically the user could typeimage, fuzzyMatch finds and displaysGNU Image Manipulation Program, and if it is selected, the Exec isgimp-2.10 %U. This code filters out the %U and passesgimp-2.10 to the shell to launch.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
gtk-launch orkioclient5 exec can be used to run a .desktop file:https://askubuntu.com/a/1114798/950919
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
gtk-launch is (well, at least on my distro) installed with thegtk package itself, so chances are users will definitely have this installed.
Will the fact that it goes into/usr/share/applications by itself be a problem? Out of the current paths that the code searches (~/.local/share/applications,/usr/share/applications, and/usr/local/share/applications) on the first one seems not to get searched bygtk-launch.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
gtk-launch does look into~/.local/share/applications here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Mh, doesn't work on my end; a.desktop file that's only in~/.local/share/applications but not in any of the other directories will fail to be found
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
That's really weird, I looked into the source of gtk/glib and I don't see why it wouldn't look there. Maybe try stracing it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Oh indeed,strace tells me that the directoryis searched. Upon closer inspection, the.desktop file contains a non-existant executable; instead of telling me that,gtk-launch told me that the.desktop file couldn't be found, however ._.
Uh oh!
There was an error while loading.Please reload this page.
Arg! How strange. I introduced some broken desktop files and logging locally to double check the behavior on my end and I cannot seem to reproduce the issue yet. logging diffs: modified XMonad/Prompt/DotDesktop.hs@@ -54,6 +54,8 @@ getDirContents dir = do getDotDesktopApps :: IO [DotDesktopApp] getDotDesktopApps = do appFolders <- getAppFolders+ appendFile "/home/tulth/.xmonad/debug.log" $+ unlines $ ("appfolder: " ++ ) <$> appFolders contentsPerFolder <- mapM getDirContents appFolders let folderFiles = join $ rights contentsPerFolder dotDesktopFiles = filter isDotDesktop folderFiles@@ -63,6 +65,7 @@ getDotDesktopApps = do let parseErrs = lefts parseResults dotDesktopApps = rights parseResults mapM_ print parseErrs+ appendFile "/home/tulth/.xmonad/debug.log" $ unlines parseErrs return dotDesktopApps I thought perhaps a parse failure in a folder would cause a bigger problem, but that was no issue on my system. Any ideas? Is |
Sorry, I was referring to |
@tulth what do you think about the idea of using |
I was thinking about this as well, but I do not think it makes much difference. |
I don't use desktop files, so forgive my ignorance here, but the man page for |
I note that |
@tulth any updates? |
@tulth friendly ping |
Description
Add a prompt bar that can launch
.desktopfiles.Example use
Checklist
I've readCONTRIBUTING.md
I've considered how to best test these changes (property, unit,
manually, ...) and concluded: XXX
I updated the
CHANGES.mdfile