commit 08c122f3fd98008dc17dbadd821d3f79f919f215 Author: CronyAkatsuki Date: Sun Apr 30 17:36:12 2023 +0200 First commit diff --git a/.config/MangoHud/MangoHud.conf b/.config/MangoHud/MangoHud.conf new file mode 100644 index 0000000..f56dbcc --- /dev/null +++ b/.config/MangoHud/MangoHud.conf @@ -0,0 +1,72 @@ +### Limit the application FPS. Comma-separated list of one or more FPS values (e.g. 0,30,60). 0 means unlimited (unless VSynced) +fps_limit=0,30,60 + +### Display the current GPU information +## Note: gpu_mem_clock also needs "vram" to be enabled +gpu_stats +gpu_temp +gpu_core_clock +gpu_mem_clock +gpu_power +gpu_text=GPU +gpu_load_change +gpu_load_value=60,90 +gpu_load_color=39F900,FDFD09,B22222 + +### Display the current CPU information +cpu_stats +cpu_temp +# cpu_power +cpu_text=CPU +cpu_mhz +cpu_load_change +cpu_load_value=60,90 +cpu_load_color=39F900,FDFD09,B22222 + +### Display IO read and write for the app (not system) +io_stats +io_read +io_write + +### Display system vram / ram / swap space usage +vram +ram +swap + +### Display FPS and frametime +fps +fps_sampling_period=1000 +fps_color_change +fps_value=30,60 +fps_color=B22222,FDFD09,39F900 +frametime +# frame_count + +### Display miscellaneous information +# engine_version +gpu_name +vulkan_driver +# wine + +### Display GameMode / vkBasalt running status +gamemode +# vkbasalt + +### Display current FPS limit +show_fps_limit + +### Display the current resolution +resolution + +### Change the corner roundness +round_corners=5 + +### Hud position offset +offset_x=15 +offset_y=15 + +### Hud dimensions +width=275 +# height= +# table_columns=3 +# cellpadding_y=0 diff --git a/.config/X11/xinitrc b/.config/X11/xinitrc new file mode 100755 index 0000000..084f327 --- /dev/null +++ b/.config/X11/xinitrc @@ -0,0 +1,32 @@ +#!/bin/sh + +# Enable Tear Free +xrandr --output eDP --set TearFree on + +# Load xresources +xrdb --merge $HOME/.config/X11/xresources + +# Disable mouse acceleration +xinput --set-prop 18 'libinput Accel Speed' 0 +xinput --set-prop 18 'libinput Accel Profile Enabled' 0, 1 + +# Hide the mouse after 5 seconds +unclutter --timeout 5 & + +# Fix mouse cursor +xsetroot -cursor_name left_ptr + +# Replace caps lock with escape +setxkbmap -option caps:escape + +# Use the xresources settings +xrdb -merge $HOME/.Xresources + +# Recompile xmonad +xmonad --recompile + +# Set wallpaper +xwallpaper --stretch $HOME/pics/wallpapers/cowppuccin.png + +# Run xmonad with dbus +exec dbus-launch --exit-with-session xmonad diff --git a/.config/X11/xresources b/.config/X11/xresources new file mode 100644 index 0000000..6380fa8 --- /dev/null +++ b/.config/X11/xresources @@ -0,0 +1,8 @@ +! 1.25 dpi +Xft.dpi: 120 + +! These might also be useful depending on your monitor and personal preference: Xft.autohint: 0 Xft.lcdfilter: lcddefault +Xft.hintstyle: hintfull +Xft.hinting: 1 +Xft.antialias: 1 +Xft.rgba: rgb diff --git a/.config/alacritty/alacritty.yml b/.config/alacritty/alacritty.yml new file mode 100644 index 0000000..a869646 --- /dev/null +++ b/.config/alacritty/alacritty.yml @@ -0,0 +1,116 @@ +window: + padding: + x: 10 + y: 10 + + dynamic_padding: true + + startup_mode: Maximized + + dynamic_title: true + + opacity: 1 + +font: + normal: + family: IBMPlex Mono + style: Regular + + bold: + family: IBMPlex Mono + + style: Bold + + italic: + family: IBMPlex Mono + + style: Italic + + bold_italic: + family: IBMPlex Mono + + style: Bold Italic + + size: 11 + + builtin_box_drawing: true + +colors: + # Default colors + primary: + background: "#303446" # base + foreground: "#C6D0F5" # text + # Bright and dim foreground colors + dim_foreground: "#C6D0F5" # text + bright_foreground: "#C6D0F5" # text + + # Cursor colors + cursor: + text: "#303446" # base + cursor: "#F2D5CF" # rosewater + vi_mode_cursor: + text: "#303446" # base + cursor: "#BABBF1" # lavender + + # Search colors + search: + matches: + foreground: "#303446" # base + background: "#A5ADCE" # subtext0 + focused_match: + foreground: "#303446" # base + background: "#A6D189" # green + footer_bar: + foreground: "#303446" # base + background: "#A5ADCE" # subtext0 + + # Keyboard regex hints + hints: + start: + foreground: "#303446" # base + background: "#E5C890" # yellow + end: + foreground: "#303446" # base + background: "#A5ADCE" # subtext0 + + # Selection colors + selection: + text: "#303446" # base + background: "#F2D5CF" # rosewater + + # Normal colors + normal: + black: "#51576D" # surface1 + red: "#E78284" # red + green: "#A6D189" # green + yellow: "#E5C890" # yellow + blue: "#8CAAEE" # blue + magenta: "#F4B8E4" # pink + cyan: "#81C8BE" # teal + white: "#B5BFE2" # subtext1 + + # Bright colors + bright: + black: "#626880" # surface2 + red: "#E78284" # red + green: "#A6D189" # green + yellow: "#E5C890" # yellow + blue: "#8CAAEE" # blue + magenta: "#F4B8E4" # pink + cyan: "#81C8BE" # teal + white: "#A5ADCE" # subtext0 + + # Dim colors + dim: + black: "#51576D" # surface1 + red: "#E78284" # red + green: "#A6D189" # green + yellow: "#E5C890" # yellow + blue: "#8CAAEE" # blue + magenta: "#F4B8E4" # pink + cyan: "#81C8BE" # teal + white: "#B5BFE2" # subtext1 + + indexed_colors: + - { index: 16, color: "#EF9F76" } + - { index: 17, color: "#F2D5CF" } diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc new file mode 100644 index 0000000..92c5b40 --- /dev/null +++ b/.config/dunst/dunstrc @@ -0,0 +1,115 @@ +[global] + monitor = 0 + + follow = none + + width = (0,300) + + height = (0,300) + + origin = top-right + + offset = 10x31 + + scale = 0 + + notification_limit = 0 + + progress_bar = true + + progress_bar_height = 10 + + progress_bar_frame_width = 1 + + progress_bar_min_width = 150 + + progress_bar_max_width = 300 + + indicate_hidden = no + + transparency = 0 + + separator_height = 1 + + padding = 12 + + horizontal_padding = 14 + + text_icon_padding = 20 + + frame_width = 2 + + frame_color = "#aac3bf" + + separator_color = frame + + sort = yes + + font = JetBrainsMono Nerd Font 10 + + line_height = 0 + + markup = full + + format = "%s\n%b" + + alignment = left + + vertical_alignment = center + + show_age_threshold = 30 + + ellipsize = middle + + ignore_newline = no + + stack_duplicates = true + + hide_duplicate_count = true + + show_indicators = yes + + icon_position = left + + min_icon_size = 0 + + max_icon_size = 64 + + icon_path = /usr/share/icons/Papirus-Dark/16x16/actions:/usr/share/icons/Adwaita/16x16/devices/ + + sticky_history = no + + history_length = 10 + + dmenu = /usr/bin/dmenu -p dunst: + + browser = /usr/bin/xdg-open + + always_run_script = true + + title = Dunst + + class = Dunst + + corner_radius = 0 + + ignore_dbusclose = false + + force_xwayland = false + + [global] + frame_color = "#8CAAEE" + separator_color= frame + + [urgency_low] + background = "#303446" + foreground = "#C6D0F5" + + [urgency_normal] + background = "#303446" + foreground = "#C6D0F5" + + [urgency_critical] + background = "#303446" + foreground = "#C6D0F5" + frame_color = "#EF9F76" diff --git a/.config/gamemode.ini b/.config/gamemode.ini new file mode 100644 index 0000000..43e545d --- /dev/null +++ b/.config/gamemode.ini @@ -0,0 +1,100 @@ +[general] +; The reaper thread will check every 5 seconds for exited clients, for config file changes, and for the CPU/iGPU power balance +reaper_freq=5 + +; The desired governor is used when entering GameMode instead of "performance" +; desiredgov=schedutil +desiredgov=performance +; The default governor is used when leaving GameMode instead of restoring the original value +;defaultgov=powersave + +; The iGPU desired governor is used when the integrated GPU is under heavy load +; igpu_desiredgov=powersave +; Threshold to use to decide when the integrated GPU is under heavy load. +; This is a ratio of iGPU Watts / CPU Watts which is used to determine when the +; integraged GPU is under heavy enough load to justify switching to +; igpu_desiredgov. Set this to -1 to disable all iGPU checking and always +; use desiredgov for games. +igpu_power_threshold=-1 + +; GameMode can change the scheduler policy to SCHED_ISO on kernels which support it (currently +; not supported by upstream kernels). Can be set to "auto", "on" or "off". "auto" will enable +; with 4 or more CPU cores. "on" will always enable. Defaults to "off". +softrealtime=auto + +; GameMode can renice game processes. You can put any value between 0 and 20 here, the value +; will be negated and applied as a nice value (0 means no change). Defaults to 0. +renice=10 + +; By default, GameMode adjusts the iopriority of clients to BE/0, you can put any value +; between 0 and 7 here (with 0 being highest priority), or one of the special values +; "off" (to disable) or "reset" (to restore Linux default behavior based on CPU priority), +; currently, only the best-effort class is supported thus you cannot set it here +ioprio=0 + +; Sets whether gamemode will inhibit the screensaver when active +; Defaults to 1 +inhibit_screensaver=1 + +[filter] +; If "whitelist" entry has a value(s) +; gamemode will reject anything not in the whitelist +;whitelist=RiseOfTheTombRaider + +; Gamemode will always reject anything in the blacklist +;blacklist=HalfLife3 +; glxgears + +[gpu] +; Here Be Dragons! +; Warning: Use these settings at your own risk +; Any damage to hardware incurred due to this feature is your responsibility and yours alone +; It is also highly recommended you try these settings out first manually to find the sweet spots + +; Setting this to the keyphrase "accept-responsibility" will allow gamemode to apply GPU optimisations such as overclocks +;apply_gpu_optimisations=0 + +; The DRM device number on the system (usually 0), ie. the number in /sys/class/drm/card0/ +;gpu_device=0 + +; Nvidia specific settings +; Requires the coolbits extension activated in nvidia-xconfig +; This corresponds to the desired GPUPowerMizerMode +; "Adaptive"=0 "Prefer Maximum Performance"=1 and "Auto"=2 +; See NV_CTRL_GPU_POWER_MIZER_MODE and friends in https://github.com/NVIDIA/nvidia-settings/blob/master/src/libXNVCtrl/NVCtrl.h +;nv_powermizer_mode=1 + +; These will modify the core and mem clocks of the highest perf state in the Nvidia PowerMizer +; They are measured as Mhz offsets from the baseline, 0 will reset values to default, -1 or unset will not modify values +;nv_core_clock_mhz_offset=0 +;nv_mem_clock_mhz_offset=0 + +; AMD specific settings +; Requires a relatively up to date AMDGPU kernel module +; See: https://dri.freedesktop.org/docs/drm/gpu/amdgpu.html#gpu-power-thermal-controls-and-monitoring +; It is also highly recommended you use lm-sensors (or other available tools) to verify card temperatures +; This corresponds to power_dpm_force_performance_level, "manual" is not supported for now +;amd_performance_level=high + +[supervisor] +; This section controls the new gamemode functions gamemode_request_start_for and gamemode_request_end_for +; The whilelist and blacklist control which supervisor programs are allowed to make the above requests +;supervisor_whitelist= +;supervisor_blacklist= + +; In case you want to allow a supervisor to take full control of gamemode, this option can be set +; This will only allow gamemode clients to be registered by using the above functions by a supervisor client +;require_supervisor=0 + +[custom] +; Custom scripts (executed using the shell) when gamemode starts and ends +start=notify-send "Gamemode" "Started" +; wlr-randr --output eDP-1 --scale 1 +; /home/me/bin/stop_ethmining.sh + +end=notify-send "Gamemode" "Stoped" +; wlr-randr --output eDP-1 --scale 1.25 +; /home/me/bin/start_ethmining.sh + +; Timeout for scripts (seconds). Scripts will be killed if they do not complete within this time. +script_timeout=10 diff --git a/.config/mpv/mpv.conf b/.config/mpv/mpv.conf new file mode 100644 index 0000000..efcbfa2 --- /dev/null +++ b/.config/mpv/mpv.conf @@ -0,0 +1,25 @@ +# multiple codecs with the easiest to run being prefered and vp9 disabled with limit to 1080p and 60 fps +ytdl-format="bestvideo[fps<=?60][height<=?1080][vcodec!=vp9]+bestaudio/best" +# fullscreen and show window immediatly +fs +force-window=immediate +# making playback be as smooth as possible f**k quility +scale=bilinear +cscale=bilinear +dscale=bilinear +scale-antiring=0 +cscale-antiring=0 +dither-depth=no +correct-downscaling=no +sigmoid-upscaling=no +deband=no +# hwdec=auto +# gpu-api=vulkan +# vo=gpu-next +# nice screenshots +screenshot-template="%F - [%P]v%#01n" + +# Subtitles loading on crack +sub-file-paths=Subs;subs +sub-auto=all +slang=english,eng,en diff --git a/.config/newsboat/config b/.config/newsboat/config new file mode 100644 index 0000000..8589259 --- /dev/null +++ b/.config/newsboat/config @@ -0,0 +1,38 @@ +# unbind keys +unbind-key ENTER +unbind-key j +unbind-key k +unbind-key J +unbind-key K + +# bind keys - vim style +bind-key j down +bind-key k up +bind-key l open +bind-key h quit + + +bind-key g home +bind-key G end +bind-key a toggle-article-read +# bind-key D pb-download +# bind-key U show-urls +# bind-key x pb-delete +auto-reload yes +reload-threads 50 +confirm-mark-feed-read yes +prepopulate-query-feeds yes + +browser "dmenu-link-handler $U" + +include ~/.config/newsboat/dark + +urls-source "miniflux" +miniflux-url "https://feed.cronyakatsuki.xyz/" +miniflux-login "crony" +miniflux-passwordeval "news-pass" +miniflux-min-items 0 + +download-path "~/downs" +max-downloads 2 +player "mpv" diff --git a/.config/newsboat/urls b/.config/newsboat/urls new file mode 100644 index 0000000..b9b1718 --- /dev/null +++ b/.config/newsboat/urls @@ -0,0 +1,11 @@ +"query:Unread:unread = \"yes\"" + +"query:Arch Linux Unread:tags # \"Arch\" and unread = \"yes\" + +"query:Blogs:tags # \"Blogs\" and unread = \"yes\" + +"query:Software:tags # \"Software\" and unread = \"yes\" + +"query:Podcast's:tags # \"Podcast's\" and unread = \"yes\" + +"query:YouTube:tags # \"YouTube\" and unread = \"yes\" diff --git a/.config/starship.toml b/.config/starship.toml new file mode 100644 index 0000000..6447198 --- /dev/null +++ b/.config/starship.toml @@ -0,0 +1,13 @@ +# Inserts a blank line between shell prompts +add_newline = false + +# Replace the "❯" symbol in the prompt with "➜" +# [character] # The name of the module we are configuring is "character" +# success_symbol = "[➜](bold green)" # The "success_symbol" segment is being set to "➜" with the color "bold green" + +# Disable the package module, hiding it from the prompt completely +[package] +disabled = false + +[cmd_duration] +min_time = 500 diff --git a/.config/sxhkd/general b/.config/sxhkd/general new file mode 100755 index 0000000..55cfc55 --- /dev/null +++ b/.config/sxhkd/general @@ -0,0 +1,77 @@ +#!/usr/bin/env sh + +# power menu +super + shift + e + dmenu-power-menu + +# Reload sxhkd +super + control + r + pkill -USR1 -x sxhkd + +##---System Control---## + +# Audio Control +{XF86AudioRaiseVolume,XF86AudioLowerVolume,XF86AudioMute} + sb-volume-update { up, down, mute } + +# Brightness +{XF86MonBrightnessUp,XF86MonBrightnessDown} + sb-backlight-update { up, down } + +# Player control keybindings +{XF86AudioPlay,XF86AudioPrev,XF86AudioNext} + dmenu-playerctl {play-pause,previous,next} + +##---Aplication Launchers---## + +# terminal +super + Return + $TERMINAL + +# Browser run +# super + {_, shift + }b +super + b + librewolf + # {$BROWSER, librewolf -P unsecure} + +# Gui Programs +super g; l + slock + +# Terminal Programs with class +super + t; {n,v,f,y} + $TERMINAL --class {newsboat\,newsboat -e newsboat,\ + videos\,videos -e lfrun ~/vids, lf\,lf -e lf-run, ytfzf\,ytfzf -e ytfzf} + +##---Dmenu bindings---# + +# Key chaining some certain scripts +super + p; {g,e,t,u,w,d,k,l,b} + {dmenu-games, dmenu-configs, dmenu-transmission, dmenu-usb-man,\ + dmenu-wifi, dmenu-runner, dmenu-kill,\ + dmenu-link-handler $(xclip -sel c -o), dmenu-browser} + +# Regular binding some other one's +super + {d,F12,c} + {dmenu_run, dmenu-ryzenadj, clipmenu -l 10} + +Print + dmenu-screenshot + +##---Gaming bindings---## +super + shift + F12 + gaming-time + +##---Buku bindings---## +alt + b; {a,o,e,d} + {badd, dmenu-buku open, dmenu-buku edit, dmenu-buku delete} + +##---Sripts---## +super + F1 + sound-output-toggle + +super + F2 + recorder + +super + F3 + bash -c 'killall xdotool || while xdotool key --repeat 100 --delay 100 Enter; do :; done' diff --git a/.config/task/taskrc b/.config/task/taskrc new file mode 100644 index 0000000..d0ff5a2 --- /dev/null +++ b/.config/task/taskrc @@ -0,0 +1,43 @@ +# [Created by task 2.6.2 12/5/2022 09:47:39] +# Taskwarrior program configuration file. +# For more documentation, see https://taskwarrior.org or try 'man task', 'man task-color', +# 'man task-sync' or 'man taskrc' + +# Here is an example of entries that use the default, override and blank values +# variable=foo -- By specifying a value, this overrides the default +# variable= -- By specifying no value, this means no default +# #variable=foo -- By commenting out the line, or deleting it, this uses the default + +# You can also refence environment variables: +# variable=$HOME/task +# variable=$VALUE + +# Use the command 'task show' to see all defaults and overrides + +# Files +# data.location=/home/crony/.task + +# To use the default location of the XDG directories, +# move this configuration file from ~/.taskrc to ~/.config/task/taskrc and uncomment below + +data.location=~/.local/share/task +hooks.location=~/.config/task/hooks + +# Color theme (uncomment one to use) +#include light-16.theme +#include light-256.theme +#include dark-16.theme +#include dark-256.theme +#include dark-red-256.theme +#include dark-green-256.theme +include dark-blue-256.theme +#include dark-violets-256.theme +#include dark-yellow-green.theme +#include dark-gray-256.theme +#include dark-gray-blue-256.theme +#include solarized-dark-256.theme +#include solarized-light-256.theme +#include no-color.theme + +news.version=2.6.0 +recurrence.confirmation=no diff --git a/.config/user-dirs.dirs b/.config/user-dirs.dirs new file mode 100644 index 0000000..f923dfb --- /dev/null +++ b/.config/user-dirs.dirs @@ -0,0 +1,8 @@ +XDG_DESKTOP_DIR="$HOME/.local/share/desktop" +XDG_DOWNLOAD_DIR="$HOME/downs" +XDG_TEMPLATES_DIR="$HOME/.local/share/templates" +XDG_PUBLICSHARE_DIR="$HOME/.local/share/public" +XDG_DOCUMENTS_DIR="$HOME/docs" +XDG_MUSIC_DIR="$HOME/music" +XDG_PICTURES_DIR="$HOME/pics" +XDG_VIDEOS_DIR="$HOME/vids" diff --git a/.config/xmobar/trayer-padding-icon.sh b/.config/xmobar/trayer-padding-icon.sh new file mode 100755 index 0000000..c996168 --- /dev/null +++ b/.config/xmobar/trayer-padding-icon.sh @@ -0,0 +1,52 @@ +#!/bin/sh +# Copied from https://github.com/jaor/xmobar/issues/239#issuecomment-233206552 +# Detects the width of running trayer-srg window (xprop name 'panel') +# and creates an XPM icon of that width, 1px height, and transparent. +# Outputs an -tag for use in xmobar to display the generated +# XPM icon. +# +# Run script from xmobar: +# `Run Com "/where/ever/trayer-padding-icon.sh" [] "trayerpad" 10` +# and use `%trayerpad%` in your template. + + +# Function to create a transparent Wx1 px XPM icon +create_xpm_icon () { + timestamp=$(date) + pixels=$(for i in `seq $1`; do echo -n "."; done) + + cat << EOF > "$2" +/* XPM * +static char * trayer_pad_xpm[] = { +/* This XPM icon is used for padding in xmobar to */ +/* leave room for trayer-srg. It is dynamically */ +/* updated by by trayer-padding-icon.sh which is run */ +/* by xmobar. */ +/* Created: ${timestamp} */ +/* */ +"$1 1 1 1", +/* Colors (none: transparent) */ +". c none", +/* Pixels */ +"$pixels" +}; +EOF +} + +# Width of the trayer window +width=$(xprop -name panel | grep 'program specified minimum size' | cut -d ' ' -f 5) + +# Icon file name +iconfile="/tmp/trayer-padding-${width}px.xpm" + +# If the desired icon does not exist create it +if [ ! -f $iconfile ]; then + create_xpm_icon $width $iconfile +fi + +if [ "$width" -gt "5" ]; then + # Output the icon tag for xmobar + echo "" +else + echo "" +fi diff --git a/.config/xmobar/xmobarrc b/.config/xmobar/xmobarrc new file mode 100644 index 0000000..b48e04d --- /dev/null +++ b/.config/xmobar/xmobarrc @@ -0,0 +1,20 @@ +Config { lowerOnStart = True + , overrideRedirect = True + , font = "xft:IBMPlex Mono:size=10:antialias=true,IpaGothic:size=11:antialias,Symbols Nerd Font:size=10" + , bgColor = "#303446" + , fgColor = "#c6d0f5" + , position = TopSize L 100 27 + , commands = [ Run Cpu + [ "--template", " %"] 90 + , Run Com "sb-cpu-temp" [] "cpu-temp" 100 + , Run Com "sb-battery" [] "battery" 300 + , Run Com "sb-ram" [] "memory" 150 + , Run Com "sb-disk-space" [] "disk" 360000 + , Run Com "sb-datetime" [] "date" 200 + , Run Com "sb-wifi" [] "wifi" 50 + , Run Com "/home/crony/.config/xmobar/trayer-padding-icon.sh" [] "trayerpad" 100 + , Run XMonadLog + ] + , sepChar = "%" + , alignSep = "}{" + , template = " %XMonadLog% }{ %cpu-temp% • %cpu% • %memory% • %disk% • %wifi% • %battery% • %date% %trayerpad%" } diff --git a/.config/xmonad/xmonad.hs b/.config/xmonad/xmonad.hs new file mode 100644 index 0000000..7094111 --- /dev/null +++ b/.config/xmonad/xmonad.hs @@ -0,0 +1,281 @@ +-- Base +import XMonad +import System.Exit +import qualified XMonad.StackSet as W + +-- Actions +import XMonad.Actions.CycleWS (toggleWS') +import XMonad.Actions.MouseResize + +-- Data +import qualified Data.Map as M +import Data.Maybe (isJust) + +-- Hooks +import XMonad.Hooks.ManageHelpers +import XMonad.Hooks.StatusBar +import XMonad.Hooks.StatusBar.PP +import XMonad.Hooks.EwmhDesktops +import XMonad.Hooks.SetWMName +import XMonad.Hooks.InsertPosition + +-- Layout modifiers +import XMonad.Layout.Renamed +import XMonad.Layout.Spacing +import XMonad.Layout.NoBorders +import XMonad.Layout.SimplestFloat +import XMonad.Layout.LayoutModifier +import XMonad.Layout.ResizableTile +import XMonad.Layout.WindowNavigation +import XMonad.Layout.PerWorkspace +import XMonad.Layout.WindowArranger (windowArrange, WindowArrangerMsg(..)) + +-- Utils +import XMonad.Util.Loggers +import XMonad.Util.NamedScratchpad +import XMonad.Util.SpawnOnce +import XMonad.Util.EZConfig +import XMonad.Util.Hacks + +-- main loop +main :: IO () +main = xmonad + . ewmhFullscreen + . ewmh + . withEasySB (statusBarProp "xmobar ~/.config/xmobar/xmobarrc" (pure myXmobarPP)) toggleStrutsKey + $ myConfig + where + toggleStrutsKey :: XConfig Layout -> (KeyMask, KeySym) + toggleStrutsKey XConfig{ modMask = m } = (m, xK_F11) + +-- My config +myConfig = def + { modMask = myModMask + , layoutHook = myLayoutHook + , manageHook = myManageHook + , handleEventHook = trayerAboveXmobarEventHook + , focusFollowsMouse = myFocusFollowsMouse + , terminal = myTerminal + , borderWidth = myBorderWidth + , normalBorderColor = myNormalBorderColor + , focusedBorderColor = myFocusedBorderColor + , keys = myKeys + , workspaces = myWorkspaces + , startupHook = myStartupHook + } + +-- My variables +myModMask = mod4Mask +myTerminal = "alacritty" +myBorderWidth = 2 + +myFocusFollowsMouse :: Bool +myFocusFollowsMouse = False + +myNormalBorderColor = "#737994" +myFocusedBorderColor = "#c6d0f5" + +myWorkspaces = ["一","二","三","四","五","六","七","八","九"] + +-- My startup hook +myStartupHook :: X () +myStartupHook = do + spawn "killall trayer-srg" -- kill current trayer on each restart + spawnOnce "sxhkd -c $HOME/.config/sxhkd/general" + spawnOnce "gentoo-pipewire-launcher" +-- spawnOnce "transmission-daemon" + spawnOnce "syncthing" +-- spawnOnce "lxsession" +-- spawnOnce "picom" +-- spawnOnce "clipmenud" + spawnOnce "dunst" + -- spawnOnce "discord --start-minimized" + spawnOnce "keepassxc" + spawn ("sleep 2 && trayer-srg --edge top --align right --widthtype request --padding 6 --iconspacing 7 --SetDockType true --SetPartialStrut true --expand true --monitor 1 --transparent true --alpha 0 --tint 0x303446 --height 27 -l") + setWMName "LG3D" -- Fix java programs + +-- My scratchpads +myScratchPads :: [NamedScratchpad] +myScratchPads = [ NS "terminal" spawnTerm findTerm manageTerm + , NS "wiki" spawnWiki findWiki manageWiki + , NS "notes" spawnNotes findNotes manageNotes + ] + where + spawnTerm = myTerminal ++ " --class scratchpad,scratchpad" + findTerm = className =? "scratchpad" + manageTerm = customFloating $ W.RationalRect l t w h + where + h = 0.8 + w = 0.8 + t = 0.9 -h + l = 0.9 -w + spawnWiki = myTerminal ++ " -class wiki,wiki -e wiki" + findWiki = className =? "wiki" + manageWiki = customFloating $ W.RationalRect l t w h + where + h = 0.8 + w = 0.8 + t = 0.9 -h + l = 0.9 -w + spawnNotes = myTerminal ++ " -class wiki,wiki -e notes" + findNotes = className =? "notes" + manageNotes = customFloating $ W.RationalRect l t w h + where + h = 0.8 + w = 0.8 + t = 0.9 -h + l = 0.9 -w + +--Makes setting the spacingRaw simpler to write. The spacingRaw module adds a configurable amount of space around windows. +mySpacing :: Integer -> l a -> XMonad.Layout.LayoutModifier.ModifiedLayout Spacing l a +mySpacing i = spacingRaw False (Border i i i i) True (Border i i i i) True + +-- Below is a variation of the above except no borders are applied +-- if fewer than two windows. So a single window has no gaps. +mySpacing' :: Integer -> l a -> XMonad.Layout.LayoutModifier.ModifiedLayout Spacing l a +mySpacing' i = spacingRaw True (Border i i i i) True (Border i i i i) True + +-- My layouts +tall = renamed [Replace "tall"] + $ withBorder myBorderWidth + $ windowNavigation + $ mySpacing 6 + $ ResizableTall 1 (3/100) (1/2) [] +monocle = renamed [Replace "monocle"] + $ withBorder myBorderWidth + $ mySpacing 6 + $ windowNavigation + $ Full +floats = renamed [Replace "floats"] + $ withBorder myBorderWidth + $ simplestFloat + +myLayoutHook = lessBorders OnlyScreenFloat + $ mouseResize + $ windowArrange + $ myDefaultLayout + where + myDefaultLayout = onWorkspaces [(myWorkspaces !! 0), (myWorkspaces !! 3), (myWorkspaces !! 4)] (monocle ||| floats ||| tall) + $ onWorkspace (myWorkspaces !! 5) (floats ||| tall ||| monocle) + $ tall + ||| monocle + ||| floats + +-- My manage hook +myManageHook :: ManageHook +myManageHook = composeAll + [ className =? "LibreWolf" --> doShiftAndGo ( myWorkspaces !! 0) + , className =? "newsboat" --> doShiftAndGo ( myWorkspaces !! 3) + , className =? "videos" --> doShiftAndGo ( myWorkspaces !! 3) + , className =? "ytfzf" --> doShiftAndGo ( myWorkspaces !! 3) + , className =? "lf" --> doShiftAndGo ( myWorkspaces !! 3) + , className =? "thunderbird" --> doShiftAndGo ( myWorkspaces !! 4) + , className =? "Ferdium" --> doShiftAndGo ( myWorkspaces !! 4) + , className =? "discord" --> doShiftAndGo ( myWorkspaces !! 4) + , className =? "tutanota-desktop" --> doShiftAndGo ( myWorkspaces !! 4) + , className =? "Lutris" --> doShiftAndGo ( myWorkspaces !! 5) <+> doF W.swapUp + , className =? "Steam" --> doShiftAndGo ( myWorkspaces !! 5) + , className =? "heroic" --> doShiftAndGo ( myWorkspaces !! 5) + , isDialog --> doCenterFloat <+> doF W.swapUp + , className =? "Gimp" --> doFloat + , className =? "confirm" --> doFloat + , className =? "file_progress" --> doFloat + , className =? "dialog" --> doFloat + , className =? "download" --> doFloat + , className =? "error" --> doFloat + , className =? "notification" --> doFloat + , className =? "splash" --> doFloat + , className =? "toolbar" --> doFloat + , className =? "pinentry-gtk-2" --> doFloat + , className =? "Yad" --> doCenterFloat + , className =? "badd" --> doCenterFloat + , isFullscreen --> doFullFloat <+> doF W.swapUp + , namedScratchpadManageHook myScratchPads + ] + where + doShiftAndGo ws = doF (W.greedyView ws) <+> doShift ws + +-- My keybindings in a nice readable format +myKeys = \c -> mkKeymap c $ + [ ("M-S-q", kill) -- kill active window + , ("M-", sendMessage NextLayout) -- cycle layout + , ("M-S-", withFocused toggleFloat) -- toggle floating state of a window + , ("M-j", windows W.focusDown) -- Move focus down + , ("M-k", windows W.focusUp) -- Move focus up + , ("M-S-", windows W.swapMaster) -- Move Focused window to master + , ("M-S-j", windows W.swapDown) --Move window down the stack + , ("M-S-k", windows W.swapUp) -- Move window up the stack + , ("M-h", sendMessage Shrink) -- Shrink master + , ("M-l", sendMessage Expand) -- Expand master + , ("M-,", sendMessage (IncMasterN 1)) -- Increase master count + , ("M-.", sendMessage (IncMasterN (-1))) -- Decrease msaster count + , ("M-C-e", io (exitWith ExitSuccess)) -- Quit xmonad + , ("M-S-r", spawn "xmonad --recompile && xmonad --restart") -- Restart xmonad + , ("M-", toggleWS' ["NSP"]) -- Toogle last used workspace, ignoring named scratchpad + , ("M-s t", namedScratchpadAction myScratchPads "terminal") -- Toggle scratchpad + , ("M-s w", namedScratchpadAction myScratchPads "wiki") -- Toggle scratchpad + , ("M-s n", namedScratchpadAction myScratchPads "notes") -- Toggle scratchpad + , ("M-1", viewDesktop 0) -- Check workspace 1 + , ("M-2", viewDesktop 1) -- Check workspace 2 + , ("M-3", viewDesktop 2) -- Check workspace 3 + , ("M-4", viewDesktop 3) -- Check workspace 4 + , ("M-5", viewDesktop 4) -- Check workspace 5 + , ("M-6", viewDesktop 5) -- Check workspace 6 + , ("M-7", viewDesktop 6) -- Check workspace 7 + , ("M-8", viewDesktop 7) -- Check workspace 8 + , ("M-9", viewDesktop 8) -- Check workspace 9 + , ("M-S-1", shiftWindow 0) -- Send window to workspace 1 + , ("M-S-2", shiftWindow 1) -- Send window to workspace 2 + , ("M-S-3", shiftWindow 2) -- Send window to workspace 3 + , ("M-S-4", shiftWindow 3) -- Send window to workspace 4 + , ("M-S-5", shiftWindow 4) -- Send window to workspace 5 + , ("M-S-6", shiftWindow 5) -- Send window to workspace 6 + , ("M-S-7", shiftWindow 6) -- Send window to workspace 7 + , ("M-S-8", shiftWindow 7) -- Send window to workspace 8 + , ("M-S-9", shiftWindow 8) -- Send window to workspace 9 + , ("M-C-1", shiftAndView 0) -- Send window and check workspace 1 + , ("M-C-2", shiftAndView 1) -- Send window and check workspace 2 + , ("M-C-3", shiftAndView 2) -- Send window and check workspace 3 + , ("M-C-4", shiftAndView 3) -- Send window and check workspace 4 + , ("M-C-5", shiftAndView 4) -- Send window and check workspace 5 + , ("M-C-6", shiftAndView 5) -- Send window and check workspace 6 + , ("M-C-7", shiftAndView 6) -- Send window and check workspace 7 + , ("M-C-8", shiftAndView 7) -- Send window and check workspace 8 + , ("M-C-9", shiftAndView 8) -- Send window and check workspace 9 + ] + where + toggleFloat w = windows (\s -> if M.member w (W.floating s) + then W.sink w s + else (W.float w (W.RationalRect (1/6) (1/6) (2/3) (2/3)) s)) + viewDesktop d = windows $ W.greedyView $ myWorkspaces !! d + shiftWindow w = windows $ W.shift $ myWorkspaces !! w + shiftAndView w = windows $ W.greedyView (myWorkspaces !! w) . W.shift (myWorkspaces !! w) + +-- My xmobar workspace and other things config +myXmobarPP :: PP +myXmobarPP = filterOutWsPP ["NSP"] + $ def + { ppSep = magenta " • " + , ppWsSep = " " + , ppTitleSanitize = xmobarStrip + , ppCurrent = xmobarBorder "Bottom" "#89b4fa" 2 + , ppHidden = white + , ppHiddenNoWindows = lowWhite + , ppUrgent = red . wrap (yellow "!") (yellow "!") + , ppOrder = \[ws, l, _, wins] -> [ws, l, wins] + , ppExtras = [logTitles formatFocused formatUnfocused] + } + where + formatFocused = wrap (white "[") (white "]") . magenta . ppWindow + formatUnfocused = wrap (lowWhite "[") (lowWhite "]") . blue . ppWindow + + ppWindow :: String -> String + ppWindow = xmobarRaw . (\w -> if null w then "untitled" else w) . shorten 25 + + blue, lowWhite, magenta, red, white, yellow :: String -> String + magenta = xmobarColor "#eba0ac" "" + blue = xmobarColor "#cba6f7" "" + white = xmobarColor "#cdd6f4" "" + yellow = xmobarColor "#f9e2af" "" + red = xmobarColor "#f38ba8" "" + lowWhite = xmobarColor "#585b70" "" diff --git a/.config/zsh/.zprofile b/.config/zsh/.zprofile new file mode 100755 index 0000000..62fb921 --- /dev/null +++ b/.config/zsh/.zprofile @@ -0,0 +1,14 @@ +export QT_QPA_PLATFORMTHEME=qt5ct + +# Path exprt (.zshenv method doesn't work with gentoo for no real reason) +typeset -U PATH path +path=("$HOME/.local/bin" "$HOME/bin/dmenu/" "$HOME/bin/gaming/" "$HOME/bin/statusbar/" "$HOME/bin/misc/" "$HOME/bin/wayland" "$HOME/bin/fzf" "$HOME/bin/bspwm" "$path[@]") +export PATH + +export SXHKD_SHELL='/bin/sh' + +[[ $(fgconsole 2>/dev/null) == 1 ]] && exec startx $HOME/.config/X11/xinitrc &> /dev/null +# [[ $(fgconsole 2>/dev/null) == 1 ]] && exec start-river &> /dev/null +# [[ $(fgconsole 2>/dev/null) == 1 ]] && exec start-hyprland &> /dev/null + +eval "$(ssh-agent -s)" &> /dev/null diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc new file mode 100755 index 0000000..ec6fc13 --- /dev/null +++ b/.config/zsh/.zshrc @@ -0,0 +1,39 @@ +#!/bin/sh + +pfetch + +eval "$(starship init zsh)" + +[ -f "$HOME/.local/share/zap/zap.zsh" ] && source "$HOME/.local/share/zap/zap.zsh" + +zstyle ':completion:*' rehash true + +# Plugins +plug "kutsan/zsh-system-clipboard" +plug "hlissner/zsh-autopair" +plug "zap-zsh/supercharge" +plug "zap-zsh/completions" +plug "zap-zsh/vim" +plug "zsh-users/zsh-autosuggestions" +plug "zsh-users/zsh-completions" +plug "zsh-users/zsh-syntax-highlighting" + +# Plugin settings +if [ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ]; then + ZSH_SYSTEM_CLIPBOARD_METHOD="xsc" +else + ZSH_SYSTEM_CLIPBOARD_METHOD="wlc" +fi + +# Local source +plug "$XDG_CONFIG_HOME/zsh/aliases.zsh" +plug "$XDG_CONFIG_HOME/zsh/functions.zsh" + +# History settings +setopt appendhistory +setopt INC_APPEND_HISTORY +export HISTTIMEFORMAT="[%F %T]" +# HISTSIZE=10000 +# SAVEHIST=5000 + +HISTFILE="$XDG_STATE_HOME"/zsh/history diff --git a/.config/zsh/aliases.zsh b/.config/zsh/aliases.zsh new file mode 100755 index 0000000..2d13463 --- /dev/null +++ b/.config/zsh/aliases.zsh @@ -0,0 +1,69 @@ +#!/bin/sh + +# Check ssd state +alias ssd-check="sudo smartctl -a /dev/nvme0n1 | grep -E -- 'Data Units Read:|Data Units Written:|Percentage Used:'" + +# Adding colours to some of the regulas shit +alias grep='grep --color=auto' +alias ls='/usr/bin/exa -lab --icons --group-directories-first --git --no-time' +alias cp='cp -iv' +alias rm='rm -iv' +alias mkd='mkdir -pv' +alias tree='tree -C' +alias less='less -R' +[ "$TERM" = "xterm-kitty" ] && alias ssh="kitty +kitten ssh" + +# Git aliases +alias g='git' +alias gst='git status -s' +alias gc='git commit' +alias ga='git add' +alias gpl="git pull" +alias gpom="git pull origin master" +alias gpu="git push" +alias gpuom="git push origin master" +alias gd="git diff" +alias gch="git checkout" +alias gnb="git checkout -b" +alias gac="git add . && git commit" +alias grs="git restore --staged ." +alias gre="git restore" +alias gr="git remote" +alias gcl="git clone" +alias glg="git log --graph --abbrev-commit --decorate --format=format:'%C(bold green)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold yellow)(%ar)%C(reset)%C(auto)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all" +alias gt="git ls-tree -r master --name-only" +alias grm="git remote" +alias gb="git branch" +alias gf="git fetch" + +# Easier to type +alias vi='nvim' + +# Humna readable + better output +alias df='df -h -x devtmpfs -x tmpfs -x usbfs -x loop' +alias free='free -m -h' + +# speed up +alias spotdl='spotdl --output-format ogg -p "{artist}/{album}/{artists} - {title}.{ext}" --dt 8 --st 8' + +# Just cause I can't remember the command at all +alias update-grub='doas grub-mkconfig -o /boot/grub/grub.cfg' + +# Quickly see the hogger in the directory +alias dust='du -hd1 | sort -hr | sed "s/.\///g" | sed "/\.$/d"' + +# Who want to remember this long ass commands +alias yta='yt-dlp -x -f bestaudio --external-downloader aria2c --external-downloader-args "-j 16 -s 16 -x 16 -k 5M" --audio-format vorbis -o "%(title)s.%(ext)s"' +alias ytvb='yt-dlp --merge-output-format mp4 -f "bestvideo+bestaudio[ext=m4a]/best" --embed-thumbnail --external-downloader aria2c --external-downloader-args "-j 16 -s 16 -x 16 -k 5M" --add-metadata -o "%(title)s.%(ext)s"' +alias ytvf='yt-dlp --merge-output-format mp4 --format best --embed-thumbnail --external-downloader aria2c --external-downloader-args "-j 16 -s 16 -x 16 -k 5M" --add-metadata -o "%(title)s.%(ext)s"' + +# Nice +alias dl='aria2c -j 16 -s 16 -x 16 -k 5M --file-allocation=none' + +# ;) +alias lf='lfrun $@' + +alias b='buku --suggest' + +# cryptography +alias rot13="tr 'A-Za-z' 'N-ZA-Mn-za-m'" diff --git a/.config/zsh/functions.zsh b/.config/zsh/functions.zsh new file mode 100755 index 0000000..447a3b4 --- /dev/null +++ b/.config/zsh/functions.zsh @@ -0,0 +1,86 @@ +#!/bin/sh + +# Cd into a directory using fzf +fcd () { + dir=$(fd -a --type d --hidden --exclude ".git|.github" | fzf --prompt "Choose directory: ") + [ -z $dir ] && return 1 + cd $dir +} + +# Remove choosed stuff +frm () { + remove=$(fd --hidden --maxdepth 1 | fzf -m --prompt "Choose to delete: ") + [ -z $remove ] && return 1 + rm -rf $(printf '%s' $remove) +} + +# Quicly choose stuff to add using fzf +fga () { + git add $(git status -s | awk '{ print $2 }' | fzf -m) +} + +# Open a script in path with vim quicly +vish () { + nvim $(which $1) +} + +# Create a directory and change into it +md () { + mkdir -p "$@" && cd "$@" +} + +# Move a file and create a link in it's place +mvln () { + from=$(readlink -f $1) + to=$(readlink -f $2) + mv $from $to + ln -s $to $from +} + +# Find my script and let me edit them +se() { + fd . ~/bin -L --type f --color=never | fzf --prompt "Choose script to edit: " \ + --preview 'bat --color=always --style=plain --pager=never {}' | xargs -r $EDITOR +} + +# List my config and open the dir in a editor +ce() { + fd . ~/.config -L --maxdepth 1 --color=never | fzf --prompt \ + "Choose config to edit: " --preview 'tree -a -C {}' | xargs -r $EDITOR +} + +# List files in a directory and edit choosen one +vf(){ + fd -L --maxdepth 1 --type f --color=never --hidden | fzf --prompt "Choose script to edit: " \ + --preview 'bat --color=always --style=plain --pager=never {}' | xargs -r $EDITOR +} + +# history search +h() { + print -z $( ([ -n "$ZSH_NAME" ] && fc -l 1 || history) | fzf +s --tac | sed -E 's/ *[0-9]*\*? *//' | sed -E 's/\\/\\\\/g') +} + +# Copy current working directory +cpdir() { + pwd | tr -d "\r\n" | xclip -sel c +} + +# Copy content of a file. +cf() { + cat $1 | xclip -sel c +} + +# Open a bookmark from buku in browser +fb() { + buku --nostdin -p -f5 | fzf | cut -f1 | xargs -r buku --nostdin -o +} + +# Extract all archive in current path and remove the archive +erm() { + for file in *.zip; do + printf '%s\n' "Extracting $file" + unzip $file + rm -f $file + printf '%s\n' "" + done +} diff --git a/.zshenv b/.zshenv new file mode 100755 index 0000000..7c04a8f --- /dev/null +++ b/.zshenv @@ -0,0 +1,66 @@ +export _JAVA_AWT_WM_NONREPARENTING=1 + +# Programs export +export EDITOR="nvim" +export READER="zathura" +export BOOK_READER="foliate" +export TERMINAL="alacritty" +export BROWSER="librewolf" +export VIDEO="mpv" +export IMAGE="nsxiv" +export OPENER="xdg-open" +export PAGER="less" +export WM="awesome" +export SUDO_ASKPASS="dmenu-pass" + +# clipmenu settings +export CM_MAX_CLIPS=20 +export CM_IGNORE_WINDOW="KeePassXC" +export CM_SELECTIONS="clipboard" +export CM_OWN_CLIPBOARD=1 +export CM_DIR="$HOME/.cache" + +# clean up +export XDG_STATE_HOME="$HOME/.local/state" +export XDG_CONFIG_HOME="$HOME/.config" +export XDG_DATA_HOME="$HOME/.local/share" +export XDG_CACHE_HOME="$HOME/.cache" + +export NOTMUCH_CONFIG="$XDG_CONFIG_HOME/notmuch-config" +export ZDOTDIR="$XDG_CONFIG_HOME/zsh" +export LESSHISTFILE="-" +export WINEPREFIX="$XDG_DATA_HOME/wineprefixes/default" +export PASSWORD_STORE_DIR="$XDG_DATA_HOME/password-store" +export ANDROID_SDK_HOME="$XDG_CONFIG_HOME/android" +export CARGO_HOME="$XDG_DATA_HOME/cargo" +export CUDA_CACHE_PATH="$XDG_CONFIG_HOME/nv" +export GNUPGHOME="$XDG_DATA_HOME/gnupg" +export GTK2_RC_FILES="$XDG_CONFIG_HOME/gtk-2.0/gtkrc" +export KDEHOME="$XDG_CONFIG_HOME/kde" +export NBRC_PATH="$XDG_CONFIG_HOME/nbrc" +export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME/java" +export XINITRC="$XDG_CONFIG_HOME/X11/xinitrc" +export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME"/java +export GOPATH="$XDG_DATA_HOME/go" +export HISTFILE="$XDG_STATE_HOME"/zsh/history +export CCACHE_DIR="$XDG_CACHE_HOME/ccache" +export DOTNET_CLI_TELEMETRY_OPTOUT=1 +export WGETRC="$XDG_CONFIG_HOME/wget/wgetrc" +export NUGET_PACKAGES="$XDG_CACHE_HOME/NuGetPackages" +export PARALLEL_HOME="$XDG_CONFIG_HOME/parallel" + +# fzf catppuccin theme +export FZF_DEFAULT_OPTS=" \ +--color=bg+:#414559,bg:#303446,spinner:#f2d5cf,hl:#e78284 \ +--color=fg:#c6d0f5,header:#e78284,info:#ca9ee6,pointer:#f2d5cf \ +--color=marker:#f2d5cf,fg+:#c6d0f5,prompt:#ca9ee6,hl+:#e78284" + +export FZF_DEFAULT_COMMAND='fd --type f --color=never --hidden --exclude ".git"' + +# bemene options +export BEMENU_OPTS='-H 24 --fb "#303446" --ff "#81c8be" \ + --nb "#303446" --nf "#f2d5cf" --tb "#303446" --hb "#303446" \ + --tf "#ca9ee6" --hf "#8caaee" --nf "#f2d5cf" --af "#f2d5cf" --ab "#303446"' + +# bat theme +export BAT_THEME="Catppuccin-mocha" diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..72ff144 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Gentoo dots