1
votes

Hammerspoon: application de filtre en cours d'utilisation

Je lie une clé pour exécuter le script. Je dois activer la liaison uniquement lorsque la fenêtre Visual Studio Code est focalisée.

Je vois les fonctions des filtres Hammerspoon mais je ne comprends pas comment l'utiliser.

Nom de l'application: Code

hs.hotkey.bind({"ctrl"}, "b", function()
    local codeWindowFilter = hs.window.filter:setAppFilter('Code')
    codeWindowFilter:isAppAllowed("Code", function()

        mycode here

    end)
end)

mais j'obtiens l'erreur tentative d'appeler une valeur nulle (méthode 'setAppFilter')

Est-ce le bon façon? Existe-t-il un moyen de mettre toutes les liaisons dans un filtre approuvé?

Merci d'avance


0 commentaires

3 Réponses :


0
votes

D'après la documentation ici ( http://www.hammerspoon.org /docs/hs.window.filter.html ):

Vous devez suivre cette structure:

local codeWindowFilter = hs.window.filter.new():setAppFilter('Code')

OU

Créer un nouveau filtre de fenêtre comme décrit ici:

Bien que vous puissiez personnaliser le filtre de fenêtre par défaut, il est généralement conseillé de faire vos personnalisations sur une copie locale via mywf = hs.window.filter.new (); le windowfilter par défaut peut potentiellement être utilisé dans plusieurs modules Hammerspoon et sa modification peut avoir des conséquences inattendues ...

Par conséquent, changez votre code comme suit:

local wf=hs.window.filter
wf.default:setAppFilter('My IDE',{allowTitles=1})

La méthode .new () crée un nouveau filtre de fenêtre. Le: setAppFilter appelle une méthode sur le nouvel objet, puis retourne l'objet de filtre de fenêtre modifié.


1 commentaires

Merci pour votre aide, mais j'ai un problème avec la prochaine étape. Comment utiliser le filtre? Si j'utilise code localWindowFilter = hs.window.filter.new (): setAppFilter ('Code') codeWindowFilter: isAppAllowed (hs.application: title (), function () mycode here end) "mycode "n'est pas exécuté et il obtient une erreur. Mon objectif est d'activer le raccourci ou il contient du code uniquement si une fenêtre de l'application "Code" est focalisée



0
votes

La solution finale est celle-là:

local frontmostApplication = hs.application.frontmostApplication()

if frontmostApplication and frontmostApplication:name() == "Code" then

   {my code here}

end


0 commentaires

0
votes

Vous pouvez filtrer une application comme celle-ci

    wf_terminal = hs.window.filter.new{'Terminal','iTerm2'}
    for _, win in ipairs(wf_terminal:getWindows()) do
        if win ~= nil and string.find(win:title(), "nvim") then
            moveWindowToLeftHalf(win)
            win:focus()
        end
    end


0 commentaires