Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
* Dotfiles Configuration This repository contains my personal dotfiles for managing my environment, including XMonad, terminal, shell, and Emacs configurations. ** Overview The goal of this setup is to create a smooth workflow optimized for Emacs and Firefox, while maintaining compatibility with Steam and gaming. I use picom, rofi, and xmobar alongside XMonad. Their config files are included here. Emacs configuration is included in this repository under ~/.config/emacs. ** Managed Software These are the main software packages managed and configured here, tested mainly on Ubuntu: |-----------------+----------------------------------------------------------| | Software | Description | |-----------------+----------------------------------------------------------| | xmonad | Window manager | | xmobar | Status bar | | xmonad-contrib | Extra xmonad modules | | Aeson | JSON parsing library (used for PulseAudio sink switcher) | | alacritty | Terminal emulator | | fish | Shell | | feh | Wallpaper setter | | picom | Compositor | | rofi | Application launcher | | emacs | Text editor with custom configuration | | git | Version control system | | python3-yamlfix | Yamlfix tool for YAML fixing | | btop | Resource monitor | | mpv | Media player | |-----------------+----------------------------------------------------------| ** Installing dependencies on Ubuntu #+begin_src bash sudo apt install xmonad xmobar libghc-xmonad-dev libghc-aeson-dev alacritty fish feh picom rofi emacs git python3-yamlfix btop mpv #+end_src ** Installation To install every configuration file, run: #+begin_src bash ./install.ml #+end_src The script runs through its shebang, so there is no build step. To act on a single directory, pass an action and a name. The action is a bare letter, not a flag: #+begin_src bash ./install.ml i emacs # install only emacs ./install.ml u emacs # uninstall emacs ./install.ml c emacs # run the configure script for emacs #+end_src Which file goes where is defined in ~dest_places.txt~, one entry per line in the format ~src:dest[:symlink|hardlink][:chmod]~, where ~dest~ is relative to ~$HOME~. ** Xmobar Panels I use several xmobar panel configurations for different setups/screens: - big_screen_config.hs - laptop_bottom_config.hs - laptop_top_config.hs - small_screen_bottom_config.hs - small_screen_top_config.hs ** Emacs Configuration This repo contains a full Emacs setup tailored for coding and note-taking. Highlights include: - use-package-based package management with deferred loading. - LSP support with Eglot configured for C, C++, Haskell, YAML, and more. - Custom handling to disable Eglot on cabal.project.* files (like cabal.project.dev) because HLS does **not** support them, avoiding false error messages. - Undo-tree for undo history management. - Treemacs for project file tree browsing. - Projectile for project management. - Rainbow delimiters and rainbow mode for better syntax visualization. - Multiple language modes: Haskell, Markdown, Fish, PHP, YAML, Vimscript, OCaml (tuareg). - Custom keybindings and settings for Haskell development, including compilation and testing helpers. - A cozy pink theme. ** Vimscript and Fish Mode I include fish-mode and vimrc-mode in Emacs because sometimes I need to edit Vim and Fish configuration files directly in Emacs. This allows me to edit those config files (.vimrc and fish config) with proper syntax highlighting and editing support inside Emacs while keeping those files versioned in this repo. ** Extra benefits of my HLS + Eglot setup - Custom my-hls-wrapper.sh script improves integration and flexibility with Haskell Language Server. - Automatically disables Eglot management on cabal.project.* files (e.g. cabal.project.dev) because HLS does **not** support them, preventing numerous erroneous error messages. - Fine-tuned performance and error display settings such as autoshutdown, autoreconnect, and eldoc delay. - Customized keybindings for quick access to common LSP features. - Enhanced markup formatting supporting markdown math for better documentation experience. ** Notes - I avoid initializing Git repositories directly in my home directory to keep it clean and uncluttered. Instead, all config files are managed inside this dotfiles repository, and symlinked from there to their appropriate locations (mostly under ~/.config/). This setup allows easy version control, centralized management, and a tidy home directory. - Emacs configuration, along with all other software configurations, is kept organized in separate folders within this repository for clarity and maintainability.