Skip to content

sgf-dma/sgf-xmonad-config

Repository files navigation

Build dependencies (package names for Debian):
1. Tools: git, GNU make, stack (http://www.haskellstack.org), gcc, pkg-config.
2. Libraries: libgmp-dev, libx11-dev, libxrandr-dev, libxft-dev ,
   libxinerama-dev .
3. xmobar is recompiled and installed (by stack) as part of this package.
   Thus, additional libraries: libxpm-dev, libiw-dev.

Runtime dependencies:
1. `xmobar` is used as a panel.
2. `trayer` is used as a tray.
3. `feh` is used for settings desktop background (fallback to `xsetroot`, if
   not found).
4. `xterm` is used as default terminal.
5. `gmrun` is used as launcher.
6. `xdotool` for switching workspaces by mouse clicks on xmobar.

Search path:
1. xmonad launch does not have any PATH requirments.
2. xmobar is first searched in stack local bin path (~/.local/bin), then in
   PATH. I.e. ~/.local/bin is hardcoded and effectively *prepended* to PATH.
   So, to use system's xmobar do not install xmobar by stack. The one way to
   do this is to mark xmobar as 'extra-dep' in `stack.yaml`:

    - location: extra-pkgs/xmobar
      extra-dep: true

   or, if you're on master branch:

    - location:
        git: https://github.com/jaor/xmobar.git
        commit: 2b165cafcef3ad7f510590fcdbb928ae742ce2f4
      extra-dep: true

   (note, indentation of 'extra-dep' is the same as of 'location')

Installation:
1. Install `stack`:
   http://docs.haskellstack.org/en/stable/README/#how-to-install
2. Install GNU `make`.
3.1. Install xmonad config:

    $ make install

3.2. Some step of xmonad restart procedure execve()-s "xmonad" with PATH
  search enabled. Thus, it should be available in PATH. There are three
  options to do this, either one will be enough:
    - Add directory, where xmonad is installed to PATH yourself.
    - Copy `default-xmonad` binary installed with this package to some
      directory in default search PATH and rename it to "xmonad" (e.g.
      /usr/local/bin/xmonad).
    - Install system's xmonad package.

4. Makefile tries to detect whether files about to install already exist and
   differ. And if so, it makes numbered backup of existing file (see `info
   coreutils`, "2.2 Backup options"). You may list existing backups:

    $ make list_backups

   and remove them one (oldest) level of each file at a time:

    $ make remove_backups

   you may also see, which files are installed:

    $ make list_installed_files

   if you don't want to create backups:

    $ make install backup_install=

   If you want to reinstall files, even if Makefile thinks, they're identical
   (this will create backups of existing files, even if they're identical,
   unless backups are turned off):

    $ make install force_install=1

5. There are separate targets for some components:
    - build_xmonad - only builds xmonad (this is the default target).
    - install_Xsession - only installs Xsession scripts.
    - install_xmonad - only builds and installs xmonad.
    - install_xmobar - only builds and installs xmobar.
6. xmonad may be build and installed with stack explicitly:

    $ stack build
    $ stack install

   but in that case other files (xmobar configs, Xsession files, symlinks)
   won't be installed. This may be used to recompile xmonad.hs after changes,
   though.
7. Any file (either in build/ directory or at its installation location) is a
   target, so to rebuild/reinstall particular file you may just specify its
   path as a target.

Additiional directories:
1. `make` performs build in build/ subdirectory inside a project.
2. `stack` installs haskell compiler and all required packages from LTS
   Haskell snapshot in user's home directory:

    $ stack path --stack-root

   Other packages (extra deps) go into .stack-work directory inside a project:

    $ stack path --project-root

3. `stack` installs binaries in

    $ stack path --local-bin-path

4. xmonad directory `~/.xmonad` and user-defined xmonad config binary
   `~/.xmonad/xmonad-ARCH-OS` are made symlinks properly by `make install`.

Removal:
1. To clean build:

    $ make clean

   or for stack only:

    $ stack clean

2. To remove:

    $ make remove

3. You may also want to remove stack user's directory:

    $ stack path --stack-root

   and stack local bin path directory:

    $ stack path --local-bin-path

   and some other directories may still be left:

    ~/.Xsession.d
    ~/bin

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published