Convert Figma logo to code with AI

elenapan logodotfiles

There is no place like ~/

3,498
176
3,498
23

Top Related Projects

Neofetch configs put into a convinient repository

XMonad™️. Widgets go brr.

Quick Overview

The elenapan/dotfiles repository is a collection of configuration files (dotfiles) and scripts for customizing a Linux desktop environment. It primarily focuses on the AwesomeWM window manager and includes configurations for various terminal-based applications, themes, and system utilities.

Pros

  • Comprehensive set of configurations for a complete desktop environment
  • Aesthetically pleasing and cohesive design across multiple applications
  • Includes custom scripts and widgets for enhanced functionality
  • Well-organized and documented, making it easy to understand and modify

Cons

  • Heavily tailored to the author's preferences, which may not suit everyone
  • Requires significant time and effort to fully understand and implement
  • Some configurations may be incompatible with certain hardware or software setups
  • Frequent updates may require regular maintenance to keep the system up-to-date

Getting Started

To use these dotfiles:

  1. Clone the repository:

    git clone https://github.com/elenapan/dotfiles.git
    
  2. Review the contents and decide which configurations you want to use.

  3. Backup your existing dotfiles:

    mkdir ~/dotfiles_backup
    mv ~/.config/awesome ~/.bashrc ~/.zshrc ~/dotfiles_backup/
    
  4. Symlink the desired configuration files to your home directory:

    ln -s ~/dotfiles/.config/awesome ~/.config/awesome
    ln -s ~/dotfiles/.bashrc ~/.bashrc
    ln -s ~/dotfiles/.zshrc ~/.zshrc
    
  5. Install required dependencies (varies based on which configurations you use).

  6. Log out and log back in to apply the changes.

Note: It's recommended to carefully review and understand each configuration file before applying it to your system.

Competitor Comparisons

Neofetch configs put into a convinient repository

Pros of neofetch-themes

  • Focused specifically on Neofetch themes, providing a wide variety of options
  • Includes preview images for each theme, making selection easier
  • Actively maintained with frequent updates and contributions

Cons of neofetch-themes

  • Limited to Neofetch customization, lacking broader system configuration
  • Less comprehensive documentation compared to dotfiles
  • Fewer configuration options for other system components

Code Comparison

neofetch-themes:

print_info() {
    info title
    info underline
    info "OS" distro
    info "Host" model
    info "Kernel" kernel
}

dotfiles:

# Awesome WM configuration
awful.layout.layouts = {
    awful.layout.suit.tile,
    awful.layout.suit.floating,
    awful.layout.suit.max,
}

The neofetch-themes repository focuses on customizing Neofetch output, while dotfiles provides a broader range of system configurations, including window manager settings.

XMonad™️. Widgets go brr.

Pros of dotfiles-2.0

  • More extensive documentation and setup instructions
  • Includes additional tools and configurations (e.g., Neovim, Zathura)
  • Actively maintained with recent updates

Cons of dotfiles-2.0

  • Less organized file structure compared to dotfiles
  • Fewer customization options for some components (e.g., polybar)
  • May be more complex for beginners due to additional features

Code Comparison

dotfiles:

-- Autostart windowmanager
awful.spawn.with_shell("~/.config/awesome/autostart.sh")

dotfiles-2.0:

-- Autostart applications
awful.spawn.with_shell("~/.config/awesome/autorun.sh")

Both repositories use similar approaches for autostarting applications in AwesomeWM, but dotfiles-2.0 uses a different file name (autorun.sh instead of autostart.sh).

dotfiles:

#!/bin/bash
run() {
  if ! pgrep -f "$1" ;
  then
    "$@"&
  fi
}

dotfiles-2.0:

#!/usr/bin/env bash
function run {
  if ! pgrep $1 ;
  then
    $@&
  fi
}

The autostart scripts in both repositories use similar functions to run applications, but dotfiles-2.0 uses a more modern shebang and a slightly different syntax for the run function.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

🎀 Elena's configuration files 🎀

Thanks for dropping by!

img

This is my personal collection of configuration files.

You are probably here for my AwesomeWM configuration.

The setup section will guide you through the installation process.

Here are some details about my setup:

  • WM: AwesomeWM 💙 config included!
  • OS: Arch Linux
  • Shell: zsh
  • Terminal: kitty 💙 config included!
  • Editor: Neovim 💙 config included!
  • Org editor: Doom Emacs
  • File Manager: Thunar
  • Launcher: rofi 💙 config included!
  • Browser: Firefox

New stuff

  • New release: Code name amarena
  • Brand new sidebar theme
  • Revamped dashboard: now with corona stats for your country of choice
  • Mini window switcher / manager activated with super + tab. Check out all its features here
  • Custom mouse-friendly ncmpcpp UI
  • Adorable battery indicator
  • Support for PAM authentication through the built-in lock screen
  • Cleaner code (but no one will notice)

Setup

Here are the instructions you should follow to replicate my AwesomeWM setup.

  1. Install the git version of AwesomeWM.

    Arch users can use the awesome-git AUR package.

    yay -S awesome-git
    

    For other distros, build instructions are here.

  2. Install dependencies and enable services

    If you are curious, click here to see a table of dependencies and why they are needed.

    • Software

      • Ubuntu 18.04 or newer (and all Ubuntu-based distributions)

        sudo apt install rofi lm-sensors acpid jq fortune-mod redshift mpd mpc maim feh pulseaudio inotify-tools xdotool
        
        # Install light, which is not in the official Ubuntu repositories
        wget https://github.com/haikarainen/light/releases/download/v1.2/light_1.2_amd64.deb
        sudo dpkg -i light_1.2_amd64.deb
        
      • Arch Linux (and all Arch-based distributions)

        Assuming your AUR helper is yay

        yay -S rofi lm_sensors acpid jq fortune-mod redshift mpd mpc maim feh light-git pulseaudio inotify-tools xdotool
        
    • Services

      # For automatically launching mpd on login
      systemctl --user enable mpd.service
      systemctl --user start mpd.service
      # For charger plug/unplug events (if you have a battery)
      sudo systemctl enable acpid.service
      sudo systemctl start acpid.service
      
  3. Install needed fonts

    You will need to install a few fonts (mainly icon fonts) in order for text and icons to be rendered properly.

    Necessary fonts:

    • Typicons - github
    • Material Design Icons - dropbox
    • Icomoon - dropbox
    • Nerd Fonts - website (You only need to pick and download one Nerd Font. They all include the same icons)
    • Scriptina - website - Handwritten font used in the lock screen

    Optional fonts:

    • My custom Iosevka build - dropbox - 💙 my favorite monospace font
    • Anka/Coder
    • Google Sans - 💙 my favorite sans font
    • Roboto Condensed
    • San Francisco Display

    Once you download them and unpack them, place them into ~/.fonts or ~/.local/share/fonts.

    • You will need to create the directory if it does not exist.
    • It does not matter that the actual font files (.ttf) are deep inside multiple directories. They will be detected as long as they can be accessed from ~/.fonts or ~/.local/share/fonts.

    You can find the fonts required inside the misc/fonts folder of the repository.

    cp -r ./misc/fonts/* ~/.fonts/
    # Or to ~/.local/share/fonts
    cp -r ./misc/fonts/* ~/.local/share/fonts/
    

    Finally, run the following in order for your system to detect the newly installed fonts.

    fc-cache -v
    
  4. Install my AwesomeWM configuration files

    git clone https://github.com/elenapan/dotfiles
    cd dotfiles
    [ -e ~/.config/awesome ] && mv ~/.config/awesome ~/.config/awesome-backup-"$(date +%Y.%m.%d-%H.%M.%S)" # Backup current configuration
    cp -r config/awesome ~/.config/awesome
    
  5. Configure stuff

    The relevant files are inside your ~/.config/awesome directory.

    • User preferences and default applications

      In rc.lua there is a User variables and preferences section where user preferences and default applications are defined. You should change those to your liking. Probably the most important change you can make is to set your terminal.

      For more sophisticated control over your apps, check out apps.lua

      Note: For the weather widgets to work, you will also need to create an account on openweathermap, get your key, look for your city ID, and set openweathermap_key and openweathermap_city_id accordingly.

    • Have a general idea of what my keybinds do

      My keybinds will most probably not suit you completely, but on your first login you might need to know how to navigate the desktop.

      See the keybinds section for more details.

      You can edit keys.lua to configure your keybinds.

    • (Optional) This is also a good time to take a look at how my configuration is structured in order to understand the purpose of each file.

  6. Login with AwesomeWM 🎉

    Congratulations, at this point you should be ready to log out of your current desktop and into AwesomeWM.

    Your login screen should have a button that lets you change between available desktop sessions. If not, click here to find out how to fix it.

    Try it, play with it, enjoy it. Consider checking out the Advanced setup in order to enable and configure various components that are not needed to use the desktop, but provide a better experience.

  7. (Optional) Eye-candy

    • Set the wallpaper

      feh --bg-fill /path/to/your/wallpaper
      
    • Load a colorscheme

      xrdb -merge /path/to/colorscheme
      

      Notes:

      • To see the new colors you should restart AwesomeWM with super+shift+r or by right-clicking the desktop and clicking the gear icon (bottom-right).
      • In the .xfiles directory of the repository I provide you with a few of my own colorschemes, but you can also use your favorite one.
      • All of my AwesomeWM themes take their colors from xrdb. This also means that they play nice with tools like pywal.

AwesomeWM configuration: File structure

After setting up my AwesomeWM configuration, inside ~/.config/awesome you will find the following:

  • 🔧 rc.lua

    The main configuration file which binds everything together.

    This file allows you to set user preferences, choose themes, configure default layouts for each tag, window rules and more. It is also responsible for initializing all necessary desktop components.

  • ⌨️ keys.lua

    It initializes global and client keybinds. In addition, it defines what mouse clicks do on windows, window titlebars or the desktop.

  • 🎮 apps.lua

    Provides functions for activating various applications, meaning either spawning them, focusing them or toggling them depending on whether they are currently running or not.

  • 📚 helpers.lua

    Provides various uncategorized helper functions to make our life easier and our code cleaner.

  • 🎨 themes directory

    Here you can find a directory for each available theme.

    Such a directory should include at least a theme.lua and optionally icons, wallpaper, and whatever asset you need that is theme-specific. The theme.lua file usually sets colors, sizes and positions of various elements.

  • 🖼 icons directory

    Here you can find a directory for each available icon theme and an init.lua file which initializes the icons variables.

    Icons can be images taken from the selected icon theme or text symbols taken from some icon font.

    For example, icons.image.firefox can be used to refer to your selected theme's Firefox icon instead of using the full path to the image. This makes it easy to switch between themes.

    Note: Icon themes defined here have nothing to do with your system-wide icon theme.

  • 🎀 decorations directory

    In this directory you can find window decoration (titlebar) styles.

    They affect the layout of the titlebar and the titlebar buttons (e.g. close, maximize, minimize).

    Optionally, they may implement more complex decorations, using multiple titlebars around the window to create a certain look (e.g. double borders) or achieve anti-aliased window corners.

    Finally, some clients may have their own special titlebars added to them in order to simulate a custom UI. For now, a custom mpd UI has been implemented.

    The decorations module also includes helper functions that generate titlebar buttons, in case you do not have/want image buttons.

  • 💎 elemental directory

    Contains desktop components or elements such as bars, sidebars, lock screens and more. Elements with multiple available themes have their own directory. For example:

    • In elemental/bar you can find a .lua file for each available bar or bar group.

      Multiple bars can be created in one file. Every bar theme provides the global functions wibars_toggle() and tray_toggle() which you can bind to any keys you want.

    • In elemental/sidebar you can find a .lua file for each available sidebar theme.

    • ... And so on.

  • 💬 notifications directory

    This directory includes notification daemons that trigger notifications for various desktop events such as volume or brightness change. Also it includes notification themes that define the layout of the notification contents.

  • 🍜 noodle directory: Contains widgets that usually take up more than 50 lines of code.

    Widgets display information in visual form (text, images, progress bars). Without them, all desktop elements would just be empty boxes. They are used by the desktop components defined inside the elemental directory. Widgets can be defined in any file but I prefer to separate a big widget (with a lot of logic) from the element I am using it in.

  • 😈 evil directory

    Contains daemons (processes that run in the background) which emit system info.

    They provide an easy way of writing widgets that rely on external information. All you need to do is subscribe to the signal a daemon provides. No need to remember which shell command gives you the necessary info or bother about killing orphan processes. Evil takes care of everything.

Keybinds

I use super AKA Windows key as my main modifier.

Keyboard

KeybindAction
super + enterSpawn terminal
super + shift + enterSpawn floating terminal
super + dLaunch rofi
super + shift + qClose client
super + control + spaceToggle floating client
super + [1-0]View tag AKA change workspace (for you i3 folks)
super + shift + [1-0]Move focused client to tag
super + sTiling layout
super + shift + sFloating layout
super + wMaximized / Monocle layout
super + [arrow keys]Change focus by direction
super + [hjkl]^
super + shift + [arrow keys]Move client by direction. Move to edge if it is floating.
super + shift + [hjkl]^
super + control + [arrow keys]Resize client
super + control + [hjkl]^
super + fToggle fullscreen
super + mToggle maximize
super + nMinimize
super + shift + nRestore minimized
super + cCenter floating client
super + uJump to urgent client (or back to last tag if there is no such client)
super + bToggle bar
super + =Toggle tray

... And many many more.

Mouse on the desktop

MousebindAction
left clickDismiss all notifications, close sidebar and main menu
double left clickJump to urgent client (or back to last tag if there is no such client)
right clickApp drawer
middle clickDashboard
scroll up/downCycle through tags
move to screen edgeShow sidebar

Mouse on window titlebars

MousebindAction
left clickFocus and raise
left click (drag)Move
right click (drag)Resize
middle clickClose

Notes

If you have any questions or issues, first check if you can find your answer in the wiki. Then you can search in the repository's issues or make a new issue.

Tipjar

If you enjoy my themes and would like to show your appreciation, you may tip me here.

It is never required but always appreciated.

Thank you from the bottom of my heart! 💙

  • Patreon
  • Ethereum: 0x831539d94155C797f786e99f1D061BEc7F11bD38
  • Bitcoin: 12j3D4KR94LY7Svvmp3KzGbfGC4YCZkCLe