diff --git a/README.md b/README.md index 86dd185..cc77ae6 100644 --- a/README.md +++ b/README.md @@ -7,12 +7,22 @@ icon_customizer for awesomewm Features: ------------ -- Define your own icons -- Set custom icons for terminal applications +- Define your own icons for applications +- Set custom icons for terminal applications by using regular expressions Prerequisite: ------------ You need to configure your shell and terminal to support dynamic titles. +Verify your setup by typing `sleep 5` in your terminal. If the title (`WM_NAME`) of the terminal changes while sleep is running, you are good to go. +Otherwise your shell is most likely not configured to show dynamic titles. + +Minimal configurations are provided for `bash` and `zsh`: + +``` +echo "source ~/.config/awesome/icon_customizer/dynamictitles.bash" >> ~/.bashrc +echo "source ~/.config/awesome/icon_customizer/dynamictitles.zsh" >> ~/.zshrc +``` + Installation: ------------ @@ -22,6 +32,14 @@ Clone the repo and import the module: 1. `git clone https://github.com/intrntbrn/icon_customizer ~/.config/awesome/icon_customizer` 1. `echo "require('icon_customizer'){}" >> ~/.config/awesome/rc.lua` +Customization: +------------ + +| name | default | description | +|---|---|---| +| `positions` | { "left", "right", "top", "bottom" } | border positions +| `button_positions` | { "top" } | button positions | + Example Configuration: ------------ Define your custom icons in `theme.lua`: @@ -56,3 +74,6 @@ theme.ic_dynamic_icons = { ``` +Limitations: +------------ +It is not possible to set custom icons for applications that are constantly updating the icon themselves (e.g. `Gimp`). diff --git a/minimal_bashrc b/minimal_bashrc deleted file mode 100644 index e0533e3..0000000 --- a/minimal_bashrc +++ /dev/null @@ -1,10 +0,0 @@ -trap 'echo -ne "\033]0;$BASH_COMMAND\007"' DEBUG -function show_name(){ - if [[ -n "$BASH_COMMAND" ]]; - then - echo -en "\033]0;`pwd`\007"; - else - echo -en "\033]0;$BASH_COMMAND\007"; - fi -} -export PROMPT_COMMAND='show_name' diff --git a/minimal_zshrc b/minimal_zshrc deleted file mode 100644 index 4007154..0000000 --- a/minimal_zshrc +++ /dev/null @@ -1,139 +0,0 @@ -# Source: https://github.com/ohmyzsh/ohmyzsh/blob/master/lib/termsupport.zsh - -# Set terminal window and tab/icon title -# -# usage: title short_tab_title [long_window_title] -# -# See: http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#ss3.1 -# Fully supports screen, iterm, and probably most modern xterm and rxvt -# (In screen, only short_tab_title is used) -# Limited support for Apple Terminal (Terminal can't set window and tab separately) -function title { - emulate -L zsh - setopt prompt_subst - - [[ "$EMACS" == *term* ]] && return - - # if $2 is unset use $1 as default - # if it is set and empty, leave it as is - : ${2=$1} - - case "$TERM" in - cygwin|xterm*|putty*|rxvt*|konsole*|ansi) - print -Pn "\e]2;$2:q\a" # set window name - print -Pn "\e]1;$1:q\a" # set tab name - ;; - screen*|tmux*) - print -Pn "\ek$1:q\e\\" # set screen hardstatus - ;; - *) - if [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then - print -Pn "\e]2;$2:q\a" # set window name - print -Pn "\e]1;$1:q\a" # set tab name - else - # Try to use terminfo to set the title - # If the feature is available set title - if [[ -n "$terminfo[fsl]" ]] && [[ -n "$terminfo[tsl]" ]]; then - echoti tsl - print -Pn "$1" - echoti fsl - fi - fi - ;; - esac -} - -ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" #15 char left truncated PWD -ZSH_THEME_TERM_TITLE_IDLE="%n@%m: %~" -# Avoid duplication of directory in terminals with independent dir display -if [[ "$TERM_PROGRAM" == Apple_Terminal ]]; then - ZSH_THEME_TERM_TITLE_IDLE="%n@%m" -fi - -# Runs before showing the prompt -function omz_termsupport_precmd { - [[ "$DISABLE_AUTO_TITLE" == true ]] && return - title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE -} - -# Runs before executing the command -function omz_termsupport_preexec { - [[ "$DISABLE_AUTO_TITLE" == true ]] && return - - emulate -L zsh - setopt extended_glob - - # split command into array of arguments - local -a cmdargs - cmdargs=("${(z)2}") - # if running fg, extract the command from the job description - if [[ "${cmdargs[1]}" = fg ]]; then - # get the job id from the first argument passed to the fg command - local job_id jobspec="${cmdargs[2]#%}" - # logic based on jobs arguments: - # http://zsh.sourceforge.net/Doc/Release/Jobs-_0026-Signals.html#Jobs - # https://www.zsh.org/mla/users/2007/msg00704.html - case "$jobspec" in - <->) # %number argument: - # use the same passed as an argument - job_id=${jobspec} ;; - ""|%|+) # empty, %% or %+ argument: - # use the current job, which appears with a + in $jobstates: - # suspended:+:5071=suspended (tty output) - job_id=${(k)jobstates[(r)*:+:*]} ;; - -) # %- argument: - # use the previous job, which appears with a - in $jobstates: - # suspended:-:6493=suspended (signal) - job_id=${(k)jobstates[(r)*:-:*]} ;; - [?]*) # %?string argument: - # use $jobtexts to match for a job whose command *contains* - job_id=${(k)jobtexts[(r)*${(Q)jobspec}*]} ;; - *) # %string argument: - # use $jobtexts to match for a job whose command *starts with* - job_id=${(k)jobtexts[(r)${(Q)jobspec}*]} ;; - esac - - # override preexec function arguments with job command - if [[ -n "${jobtexts[$job_id]}" ]]; then - 1="${jobtexts[$job_id]}" - 2="${jobtexts[$job_id]}" - fi - fi - - # cmd name only, or if this is sudo or ssh, the next cmd - local CMD=${1[(wr)^(*=*|sudo|ssh|mosh|rake|-*)]:gs/%/%%} - local LINE="${2:gs/%/%%}" - - title '$CMD' '%100>...>$LINE%<<' -} - -autoload -U add-zsh-hook -add-zsh-hook precmd omz_termsupport_precmd -add-zsh-hook preexec omz_termsupport_preexec - - -# Keep Apple Terminal.app's current working directory updated -# Based on this answer: https://superuser.com/a/315029 -# With extra fixes to handle multibyte chars and non-UTF-8 locales - -if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]] && [[ -z "$INSIDE_EMACS" ]]; then - # Emits the control sequence to notify Terminal.app of the cwd - # Identifies the directory using a file: URI scheme, including - # the host name to disambiguate local vs. remote paths. - function update_terminalapp_cwd() { - emulate -L zsh - - # Percent-encode the host and path names. - local URL_HOST URL_PATH - URL_HOST="$(omz_urlencode -P $HOST)" || return 1 - URL_PATH="$(omz_urlencode -P $PWD)" || return 1 - - # Undocumented Terminal.app-specific control sequence - printf '\e]7;%s\a' "file://$URL_HOST$URL_PATH" - } - - # Use a precmd hook instead of a chpwd hook to avoid contaminating output - add-zsh-hook precmd update_terminalapp_cwd - # Run once to get initial cwd set - update_terminalapp_cwd -fi