1 votes

Comment lancer un programme sur un espace de travail spécifique au démarrage en utilisant XMonad ?

Comme , nombreux , autres J'essaie de lancer un programme sur un espace de travail Xmonad spécifique au démarrage.

Voici mon xmonad.hs qui devrait lancer Firefox sur l'espace de travail 4 :

import XMonad
import XMonad.Actions.SpawnOn

myStartupHook :: X()
myStartupHook = spawnOn "4" "/usr/bin/firefox"

main :: IO()
main = xmonad $ defaultConfig {
  modMask = mod4Mask,
  startupHook = myStartupHook,
  }

Cependant, au démarrage, Firefox est lancé sur l'espace de travail 1 au lieu de 4. D'après ce fil Reddit Il me suffit donc d'ajouter manageSpawn quelque part dans ce code. Voici ce que j'ai essayé :

import XMonad
import XMonad.Actions.SpawnOn

myStartupHook :: X()
myStartupHook = spawnOn "4" "/usr/bin/firefox"

main :: IO()
main = xmonad $ defaultConfig {
  modMask = mod4Mask,
  startupHook = manageSpawn <+> myStartupHook,
  }

Mais j'ai obtenu l'erreur suivante : Couldn't match type Query (base-4.13.0.0:Data.Semigroup.Internal.Endo WindowSet) with X () Expected type: X () Actual type: ManageHook . Les la documentation pour spawnOn n'est pas vraiment utile non plus.

De quoi ai-je besoin pour ajouter ce qui précède ? xmonad.hs pour démarrer Firefox sur l'espace de travail 4 ?

1voto

Jaap Joris Vens Points 799

Vous devez définir manageSpawn d'être le manageHook plutôt que le startupHook . Voici un exemple de fonctionnement xmonad.hs qui crée Firefox sur l'espace de travail 4 :

import XMonad
import XMonad.Actions.SpawnOn

myStartupHook :: X()
myStartupHook = spawnOn "4" "/usr/bin/firefox"

main :: IO()
main = xmonad $ defaultConfig {
  modMask = mod4Mask,
  startupHook = myStartupHook,
  manageHook = manageSpawn
  }

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X