From 00cfba2e583eb80758a2f53cecb05da6d1e8c817 Mon Sep 17 00:00:00 2001 From: Ryan Kes Date: Tue, 19 Mar 2019 16:26:55 +0100 Subject: [PATCH] initial import --- LICENSE.md | 22 + README.md | 9 + i3/.Xresources.desktop | 8 + i3/.Xresources.thinkpad | 9 + i3/.config/i3/config.desktop | 218 ++++++ i3/.config/i3/config.thinkpad | 217 ++++++ moc/.moc/config | 690 ++++++++++++++++++ moc/.moc/keymap | 188 +++++ moc/.moc/last_directory | 1 + moc/.moc/pid | 1 + moc/.moc/themes/solarized | 36 + newsbeuter/.newsbeuter/config | 41 ++ newsbeuter/.newsbeuter/urls | 1 + .../polybar/bin/isactive-bluetooth/README.md | 13 + .../isactive-bluetooth/isactive-bluetooth.sh | 7 + .../polybar/bin/player-mpris-tail/README.md | 25 + .../bin/player-mpris-tail/player-ctrl.sh | 40 + .../player-mpris-tail/player-mpris-tail.py | 115 +++ .../bin/player-mpris-tail/screenshots/1.png | Bin 0 -> 9199 bytes .../bin/player-mpris-tail/screenshots/2.png | Bin 0 -> 6192 bytes .../bin/updates-arch-combined/README.md | 24 + .../updates-arch-combined/screenshots/1.png | Bin 0 -> 3039 bytes .../updates-arch-combined.sh | 16 + polybar/.config/polybar/config | 564 ++++++++++++++ polybar/.config/polybar/launch-desktop.sh | 12 + polybar/.config/polybar/launch-laptop.sh | 13 + rofi/.config/rofi/config.rasi | 142 ++++ 27 files changed, 2412 insertions(+) create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 i3/.Xresources.desktop create mode 100644 i3/.Xresources.thinkpad create mode 100644 i3/.config/i3/config.desktop create mode 100644 i3/.config/i3/config.thinkpad create mode 100644 moc/.moc/config create mode 100755 moc/.moc/keymap create mode 100644 moc/.moc/last_directory create mode 100644 moc/.moc/pid create mode 100644 moc/.moc/themes/solarized create mode 100644 newsbeuter/.newsbeuter/config create mode 100644 newsbeuter/.newsbeuter/urls create mode 100644 polybar/.config/polybar/bin/isactive-bluetooth/README.md create mode 100644 polybar/.config/polybar/bin/isactive-bluetooth/isactive-bluetooth.sh create mode 100644 polybar/.config/polybar/bin/player-mpris-tail/README.md create mode 100755 polybar/.config/polybar/bin/player-mpris-tail/player-ctrl.sh create mode 100755 polybar/.config/polybar/bin/player-mpris-tail/player-mpris-tail.py create mode 100644 polybar/.config/polybar/bin/player-mpris-tail/screenshots/1.png create mode 100644 polybar/.config/polybar/bin/player-mpris-tail/screenshots/2.png create mode 100644 polybar/.config/polybar/bin/updates-arch-combined/README.md create mode 100644 polybar/.config/polybar/bin/updates-arch-combined/screenshots/1.png create mode 100644 polybar/.config/polybar/bin/updates-arch-combined/updates-arch-combined.sh create mode 100644 polybar/.config/polybar/config create mode 100755 polybar/.config/polybar/launch-desktop.sh create mode 100755 polybar/.config/polybar/launch-laptop.sh create mode 100644 rofi/.config/rofi/config.rasi diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..d53ed8d --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,22 @@ +The MIT License (MIT) +===================== + +Copyright (c) `2016` `Ryan Kes` + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..2e77bd3 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +# Legacy Dotfiles + +Old dotfiles that I don't use anymore + +# License + +This theme is released under the MIT License. For more information read the [license][license]. + +[license]: https://github.com/alrayyes/legacy-dotfiles/blob/master/LICENSE.md diff --git a/i3/.Xresources.desktop b/i3/.Xresources.desktop new file mode 100644 index 0000000..8afabd0 --- /dev/null +++ b/i3/.Xresources.desktop @@ -0,0 +1,8 @@ +!------------------------------------------------------------------------------- +! Xft settings +!------------------------------------------------------------------------------- + +Xft.antialias: false +Xft.rgba: rgb +Xft.hinting: true +Xft.hintstyle: hintslight diff --git a/i3/.Xresources.thinkpad b/i3/.Xresources.thinkpad new file mode 100644 index 0000000..34e2b28 --- /dev/null +++ b/i3/.Xresources.thinkpad @@ -0,0 +1,9 @@ +!------------------------------------------------------------------------------- +! Xft settings +!------------------------------------------------------------------------------- + +Xft.dpi: 160 +Xft.antialias: false +Xft.rgba: rgb +Xft.hinting: true +Xft.hintstyle: hintslight diff --git a/i3/.config/i3/config.desktop b/i3/.config/i3/config.desktop new file mode 100644 index 0000000..e9b5728 --- /dev/null +++ b/i3/.config/i3/config.desktop @@ -0,0 +1,218 @@ +# vim: filetype=i3 + +# #---Basic Definitions ---# # +# i3-gaps +hide_edge_borders both +for_window [class="^.*"] border pixel 3 +gaps inner 5 +gaps outer 5 +font pango:DejaVuSansMonoForPowerline Nerd Font 8 +set $mod Mod4 + +# #---Start External Scripts---# # +# Align monitors +exec_always --no-startup-id xrandr --newmode "2560x1440_40" 201.00 2560 2720 2984 3408 1440 1443 1448 1476 -hsync +vsync && xrandr --addmode HDMI-2 2560x1440_40 && xrandr --output DP-1 --mode 3840x2160 --primary --output HDMI-2 --mode 2560x1440_40 --left-of DP-1 --rotate left + +# Polybar +exec_always --no-startup-id $HOME/.config/polybar/launch-desktop.sh +# Composite manager +exec --no-startup-id compton --xrender-sync-fence +# Makes mouse invisible after a brief period +exec --no-startup-id unclutter +# Applet to control pulseaudio +exec --no-startup-id pasystray +# Network manager applet +exec --no-startup-id nm-applet +# Redhift for better sleep +exec --no-startup-id redshift-gtk +# Syncthing +exec --no-startup-id syncthing-gtk -m +# Wallpaper +exec nitrogen --restore +# Notification +exec_always --no-startup-id dunst + +## --- Start Apps ---# # +# Browser +exec iceweasel +exec slack +exec i3-sensible-terminal -c weechat -e weechat +exec i3-sensible-terminal -c mutt -e neomutt +exec spotify +exec gpodder + +# #---Basic Bindings---# # +bindsym $mod+Return exec i3-sensible-terminal +bindsym $mod+shift+Return exec i3-sensible-terminal -e tmux + +bindsym $mod+Shift+space floating toggle +bindsym $mod+space focus mode_toggle + +bindsym $mod+Escape workspace prev +bindsym $mod+Shift+e exec i3-msg exit + +bindsym $mod+Shift+BackSpace exec sudo reboot + +bindsym $mod+Shift+q kill + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+semicolon focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+l move up +bindsym $mod+Shift+semicolon move right + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# split in horizontal orientation +bindsym $mod+h split h + +# split in vertical orientation +bindsym $mod+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# reload the configuration file +bindsym $mod+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r restart + + +# my keybindings +bindsym $mod+u [instance="dropdown"] scratchpad show +bindsym $mod+d exec rofi -show +bindsym $mod+p exec rofi-pass -show +bindsym Control+$mod+l exec i3lock-fancy + +# Screenshots +bindsym Print exec --no-startup-id scrot -e 'mv $f ~/Pictures/Screenshots/' +bindsym Shift+Print exec --no-startup-id scrot -u -e 'mv $f ~/Pictures/Screenshots/' + +# #---Workspace Bindings--# # + +# name workspaces +set $workspace1 "1" +set $workspace2 "2" +set $workspace3 "3" +set $workspace4 "4" +set $workspace5 "5" +set $workspace6 "6" +set $workspace7 "7" +set $workspace8 "8" +set $workspace9 "9" +set $workspace10 "10" + +# switch to workspace +bindsym $mod+1 workspace $workspace1 +bindsym $mod+2 workspace $workspace2 +bindsym $mod+3 workspace $workspace3 +bindsym $mod+4 workspace $workspace4 +bindsym $mod+5 workspace $workspace5 +bindsym $mod+6 workspace $workspace6 +bindsym $mod+7 workspace $workspace7 +bindsym $mod+8 workspace $workspace8 +bindsym $mod+9 workspace $workspace9 +bindsym $mod+0 workspace $workspace10 + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace $workspace1 +bindsym $mod+Shift+2 move container to workspace $workspace2 +bindsym $mod+Shift+3 move container to workspace $workspace3 +bindsym $mod+Shift+4 move container to workspace $workspace4 +bindsym $mod+Shift+5 move container to workspace $workspace5 +bindsym $mod+Shift+6 move container to workspace $workspace6 +bindsym $mod+Shift+7 move container to workspace $workspace7 +bindsym $mod+Shift+8 move container to workspace $workspace8 +bindsym $mod+Shift+9 move container to workspace $workspace9 +bindsym $mod+Shift+0 move container to workspace $workspace10 + +workspace $workspace1 output DP-1 +workspace $workspace2 output DP-1 +workspace $workspace3 output DP-1 +workspace $workspace4 output DP-1 +workspace $workspace5 output DP-1 +workspace $workspace6 output DP-1 +workspace $workspace7 output HDMI-2 +workspace $workspace8 output DP-1 +workspace $workspace9 output DP-1 +workspace $workspace0 output DP-1 + +# enable floating for apps +for_window [title="Screen Layout Editor"] floating enable +for_window [window_role="gimp-dock"] floating disable; move left; resize shrink width 50 px or 50ppt +for_window [window_role="gimp-toolbox"] floating disable; move right; resize grow width 30 px or 30ppt +for_window [title="PulseAudio Manager"] floating enable +for_window [title="PulseAudio Volume Meter"] floating enable +for_window [title="Volume Control"] floating enable +for_window [title="Toggl Desktop"] floating enable +for_window [title="Syncthing"] floating enable for_window [title="QtPass"] floating enable + +# make sure all apps start where they're supposed to +assign [class="Google-chrome"] $workspace2 +assign [class="Iceweasel"] $workspace2 +assign [class="Gpodder"] $workspace4 +assign [class="ncmpcpp"] $workspace4 +for_window [class="Spotify"] move to workspace $workspace4 +assign [class="Slack"] $workspace7 +assign [class="weechat"] $workspace7 +assign [class="retroarch"] $workspace8 +assign [class="mutt"] $workspace6 + +# First I have a tmux window used for background scripts. +# I'll later bind this to mod+u. +for_window [instance="dropdown"] floating enable +for_window [instance="dropdown"] resize set 625 400 +for_window [instance="dropdown"] move scratchpad +for_window [instance="dropdown"] border pixel 5 +# Runs the tmuxinit script, which searches for an earlier tmux instance, +# otherwise starts a new one (to prevent multiple dropdown sessions). +exec --no-startup-id $term -n dropdown -e tmux +# Runs neofetch on first tmux screen if installed. +exec_always --no-startup-id "tmux send-keys -t 0:0 'clear && neofetch 2>/dev/null' Enter" + +floating_modifier $mod + +# resize window (you can also use the mouse for that) +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym semicolon resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} bindsym $mod+r mode "resize" diff --git a/i3/.config/i3/config.thinkpad b/i3/.config/i3/config.thinkpad new file mode 100644 index 0000000..5d6b4f8 --- /dev/null +++ b/i3/.config/i3/config.thinkpad @@ -0,0 +1,217 @@ +# vim: filetype=i3 + +# #---Basic Definitions ---# # +# i3-gaps +hide_edge_borders both +for_window [class="^.*"] border pixel 0 +gaps inner 5 +gaps outer 5 +font pango:DejaVuSansMonoForPowerline Nerd Font 8 +set $mod Mod4 + +# #---Start External Scripts---# # +# Align monitors +exec_always --no-startup-id xrandr --dpi 150 +# Polybar +exec_always --no-startup-id $HOME/.config/polybar/launch-laptop.sh +# Composite manager +exec --no-startup-id compton --xrender-sync-fence +# Wallpaper +exec_always --no-startup-id feh --bg-scale ~/.config/wall.png +# Makes mouse invisible after a brief period +exec --no-startup-id unclutter +# Applet to control pulseaudio +exec --no-startup-id pasystray +# Network manager applet +exec --no-startup-id nm-applet +# Redhift for better sleep +exec --no-startup-id redshift-gtk +# Syncthing +exec --no-startup-id syncthing-gtk -m +# Notification +exec_always --no-startup-id dunst + +## --- Start Apps ---# # +# Browser +exec firefox +exec slack +exec i3-sensible-terminal -c weechat -e weechat +exec i3-sensible-terminal -c mutt -e neomutt +exec spotify +exec gpodder + +# #---Basic Bindings---# # +bindsym $mod+Return exec i3-sensible-terminal +bindsym $mod+shift+Return exec i3-sensible-terminal -e tmux + +bindsym $mod+Shift+space floating toggle +bindsym $mod+space focus mode_toggle + +bindsym $mod+Escape workspace prev +bindsym $mod+Shift+e exec i3-msg exit + +bindsym $mod+Shift+BackSpace exec sudo reboot + +bindsym $mod+Shift+q kill + +# change focus +bindsym $mod+j focus left +bindsym $mod+k focus down +bindsym $mod+l focus up +bindsym $mod+semicolon focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left focus left +bindsym $mod+Down focus down +bindsym $mod+Up focus up +bindsym $mod+Right focus right + +# move focused window +bindsym $mod+Shift+j move left +bindsym $mod+Shift+k move down +bindsym $mod+Shift+l move up +bindsym $mod+Shift+semicolon move right + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +# split in horizontal orientation +bindsym $mod+h split h + +# split in vertical orientation +bindsym $mod+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+s layout stacking +bindsym $mod+w layout tabbed +bindsym $mod+e layout toggle split + +# reload the configuration file +bindsym $mod+Shift+c reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Shift+r restart + + +# my keybindings +bindsym $mod+u [instance="dropdown"] scratchpad show +bindsym $mod+d exec rofi -show +bindsym $mod+p exec rofi-pass -show +bindsym Control+$mod+l exec i3lock-fancy + +# Screenshots +bindsym Print exec --no-startup-id scrot -e 'mv $f ~/Pictures/Screenshots/' +bindsym Shift+Print exec --no-startup-id scrot -u -e 'mv $f ~/Pictures/Screenshots/' + +# Pulse Audio controls +bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% #increase sound volume +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% #decrease sound volume +bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle # mute sound + +# Sreen brightness controls +bindsym XF86MonBrightnessUp exec xbacklight -inc 20 # increase screen brightness +bindsym XF86MonBrightnessDown exec xbacklight -dec 20 # decrease screen brightness + +# #---Workspace Bindings--# # + +# name workspaces +set $workspace1 "1" +set $workspace2 "2" +set $workspace3 "3" +set $workspace4 "4" +set $workspace5 "5" +set $workspace6 "6" +set $workspace7 "7" +set $workspace8 "8" +set $workspace9 "9" +set $workspace10 "10" + +# switch to workspace +bindsym $mod+1 workspace $workspace1 +bindsym $mod+2 workspace $workspace2 +bindsym $mod+3 workspace $workspace3 +bindsym $mod+4 workspace $workspace4 +bindsym $mod+5 workspace $workspace5 +bindsym $mod+6 workspace $workspace6 +bindsym $mod+7 workspace $workspace7 +bindsym $mod+8 workspace $workspace8 +bindsym $mod+9 workspace $workspace9 +bindsym $mod+0 workspace $workspace10 + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace $workspace1 +bindsym $mod+Shift+2 move container to workspace $workspace2 +bindsym $mod+Shift+3 move container to workspace $workspace3 +bindsym $mod+Shift+4 move container to workspace $workspace4 +bindsym $mod+Shift+5 move container to workspace $workspace5 +bindsym $mod+Shift+6 move container to workspace $workspace6 +bindsym $mod+Shift+7 move container to workspace $workspace7 +bindsym $mod+Shift+8 move container to workspace $workspace8 +bindsym $mod+Shift+9 move container to workspace $workspace9 +bindsym $mod+Shift+0 move container to workspace $workspace10 + +workspace $workspace8 output HDMI2 + +# enable floating for apps +for_window [title="Screen Layout Editor"] floating enable +for_window [window_role="gimp-dock"] floating disable; move left; resize shrink width 50 px or 50ppt +for_window [window_role="gimp-toolbox"] floating disable; move right; resize grow width 30 px or 30ppt +for_window [title="PulseAudio Manager"] floating enable +for_window [title="PulseAudio Volume Meter"] floating enable +for_window [title="Volume Control"] floating enable +for_window [title="Toggl Desktop"] floating enable +for_window [title="Syncthing"] floating enable for_window [title="QtPass"] floating enable + +# make sure all apps start where they're supposed to +assign [class="Google-chrome"] $workspace2 +assign [class="Firefox"] $workspace2 +assign [class="Gpodder"] $workspace4 +assign [class="ncmpcpp"] $workspace4 +for_window [class="Spotify"] move to workspace $workspace4 +assign [class="Slack"] $workspace7 +assign [class="weechat"] $workspace7 +assign [class="retroarch"] $workspace8 +assign [class="mutt"] $workspace6 + +# First I have a tmux window used for background scripts. +# I'll later bind this to mod+u. +for_window [instance="dropdown"] floating enable +for_window [instance="dropdown"] resize set 625 400 +for_window [instance="dropdown"] move scratchpad +for_window [instance="dropdown"] border pixel 5 +# Runs the tmuxinit script, which searches for an earlier tmux instance, +# otherwise starts a new one (to prevent multiple dropdown sessions). +exec --no-startup-id $term -n dropdown -e tmux +# Runs neofetch on first tmux screen if installed. +exec_always --no-startup-id "tmux send-keys -t 0:0 'clear && neofetch 2>/dev/null' Enter" + +floating_modifier $mod + +# resize window (you can also use the mouse for that) +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym j resize shrink width 10 px or 10 ppt + bindsym k resize grow height 10 px or 10 ppt + bindsym l resize shrink height 10 px or 10 ppt + bindsym semicolon resize grow width 10 px or 10 ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width 10 px or 10 ppt + bindsym Down resize grow height 10 px or 10 ppt + bindsym Up resize shrink height 10 px or 10 ppt + bindsym Right resize grow width 10 px or 10 ppt + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} bindsym $mod+r mode "resize" diff --git a/moc/.moc/config b/moc/.moc/config new file mode 100644 index 0000000..a5231eb --- /dev/null +++ b/moc/.moc/config @@ -0,0 +1,690 @@ +# This is a configuration file for the MOC player. It should be named +# 'config' and placed in the ~/.moc directory. As this file can specify +# commands which invoke other applications, MOC will refuse to start if it +# is not owned by either root or the current user, or if it is writable by +# anyone other than its owner. All options are given with their default +# values, and therefore commented. + +# Comments begin with '#'. +# You can use quotes and escape ('\') in parameters. +# +# You can have variable values substituted by enclosing the variable name +# as "${...}". (This only applies to the portion of the option following +# the '='.) Variables are substituted first from the environment then, +# if not found, from the configuration options. (Note that the value of +# a configuration option substituted is that which it has at the time the +# substitution variable is encountered.) If there is a naming conflict +# between an environment and configuration variable, you may be able to +# resolve it by using lowercase as the environment variable matches are +# case-sensitive whereas the configuration variables are not. +# +# You can also use the form "${...:-...}" where the value in the second +# position will be substituted if the variable name given in the first +# position is unset or null. +# +# So, for example: +# +# MusicDir = /music/${USER:-public} +# Fastdir1 = ${MusicDir}/mp3/rock +# Fastdir2 = ${MusicDir}/mp3/electronic +# Fastdir3 = ${MusicDir}/mp3/rap +# Fastdir4 = ${MusicDir}/mp3/etc +# +# Variable names are limited to those accepted by the BASH shell; that +# is, those comprising the upper- and lowercase ASCII characters, digits +# and the underscore. +# +# If you need to use the "${" sequence for any other purpose, write "$${" +# and it will be replaced by "${" and not treated as a substitution. +# +# Some options take lists of strings as their values. The strings are +# separated by colons. Additional strings can be appended to the list +# using "+=" in place of a plain "=" to assign the value. For an example, +# see the XTerms option. +# +# You can override any configuration option when you run MOC using the +# '-O' command line option: +# +# mocp -O AutoNext=no -O messagelingertime=1 -O XTerms+=xxt:xwt +# +# This command line option can be repeated as many times as needed and +# the configuration option name is not case sensitive. (Note that MOC +# does not perform variable substitution on the value of such overridden +# configuration options.) Most option values are set before the +# configuration file is processed (which allows the new values to be +# picked up by substitutions), however list-valued options are overridden +# afterwards (which gives the choice of whether the configured values are +# replaced or added to). + +# Remember that the client and server are separate processes and the +# server will retain the configuration values formed from the environment +# within which it was originally started. + +# Show file titles (title, author, album) instead of file names? +#ReadTags = yes + +# In which directory do you store your music files? If you specify it +# you will be able to jump straight to this directory with the '-m' +# parameter or the 'm' command. This can also point to a playlist. +# +# Example: MusicDir = "/home/joe/music" +# +MusicDir = "~/music" + +# Start in the music directory by default? If set to 'no', start +# in the current directory by default. A single directory on +# the command line takes precedence. +#StartInMusicDir = yes + +# How to sort? FileName is the option's only value for now. +#Sort = FileName + +# Show errors in the streams (for example, broken frames in MP3 files)? +#ShowStreamErrors = no + +# Ignore CRC errors in MP3 files? Most players do that, so the default +# value is 'yes'. +#MP3IgnoreCRCErrors = yes + +# Set playback toggles. +#Repeat = no +#Shuffle = no +#AutoNext = yes + +# Default FormatString: +# +# %n - Track number +# %a - Artist +# %A - Album +# %t - Title +# %(X:TRUE:FALSE) - Ternary expression: if X exists, do TRUE, +# otherwise FALSE. The escape character must +# be doubled (i.e., '\\'). (See zshmisc +# documentation for more information.) +# +#FormatString = "%(n:%n :)%(a:%a - :)%(t:%t:)%(A: \(%A\):)" + +# Input and output buffer sizes (in kilobytes). +#InputBuffer = 512 # Minimum value is 32KB +#OutputBuffer = 512 # Minimum value is 128KB + +# How much to fill the input buffer before playing (in kilobytes)? +# This can't be greater than the value of InputBuffer. While this has +# a positive effect for network streams, it also causes the broadcast +# audio to be delayed. +#Prebuffering = 64 + +# Use this HTTP proxy server for internet streams. If not set, the +# environment variables http_proxy and ALL_PROXY will be used if present. +# +# Format: HTTPProxy = PROXY_NAME:PORT +# +#HTTPProxy = + +# Sound driver - OSS, ALSA, JACK, SNDIO (on OpenBSD) or null (only for +# debugging). You can enter more than one driver as a colon-separated +# list. The first working driver will be used. +#SoundDriver = JACK:ALSA:OSS + +# Jack output settings. +#JackClientName = "moc" +#JackStartServer = no +#JackOutLeft = "system:playback_1" +#JackOutRight = "system:playback_2" + +# OSS output settings. +#OSSDevice = /dev/dsp +#OSSMixerDevice = /dev/mixer +#OSSMixerChannel1 = pcm # 'pcm', 'master' or 'speaker' +#OSSMixerChannel2 = master # 'pcm', 'master' or 'speaker' + +# ALSA output settings. If you need to dump the audio produced by MOC +# to a file for diagnostic purposes, the following setting of 'ALSADevice' +# should do that: +# +# ALSADevice=tee:hw,'/tmp/out.wav',wav +# +#ALSADevice = default +#ALSAMixer1 = PCM +#ALSAMixer2 = Master + +# Under some circumstances on 32-bit systems, audio played continously +# for long periods of time may begin to stutter. Setting this option to +# 'yes' will force MOC to avoid ALSA's dmix resampling and prevent this +# stutter. But it also has other implications: +# +# - You may experience unacceptably high CPU load. +# - ALSA's resampler plug-ins will not be used. +# - The resampling may be of lower quality than ALSA would provide. +# - You may need to try different "ResampleMethod" option settings. +# - The "ForceSampleRate" option may be ineffective. +# - If libsamplerate is not configured, many audios may be unplayable. +# +#ALSAStutterDefeat = no + +# Save software mixer state? +# If enabled, a file 'softmixer' will be created in '~/.moc/' storing the +# mixersetting set when the server is shut down. +# Note that there is a "hidden" 'Amplification' setting in that file. +# Amplification (0-200) is used to scale the mixer setting (0-100). This +# results in a higher signal amplitude but may also produce clipping. +#Softmixer_SaveState = yes + +# Save equalizer state? +# If enabled, a file 'equalizer' will be created in '~/.moc/' storing the +# equalizer settings when the server is shut down. +# Note that there is a "hidden" 'Mixin' setting in that file. +# Mixin (0.0-1.0) is used to determine how much of the original signal is +# used after equalizing. 0 means to only use the equalized sound, while 1 +# effectively disabled the mixer. The default is 0.25. +#Equalizer_SaveState = yes + +# Show files with dot at the beginning? +#ShowHiddenFiles = no + +# Hide file name extensions? +#HideFileExtension = no + +# Show file format in menu? +#ShowFormat = yes + +# Show file time in menu? Possible values: 'yes', 'no' and 'IfAvailable' +# (meaning show the time only when it is already known, which often works +# faster). +#ShowTime = IfAvailable + +# Show time played as a percentage in the time progress bar. +#ShowTimePercent = no + +# Values of the TERM environment variable which are deemed to be managed by +# screen(1). If you are setting a specific terminal using screen(1)'s +# '-T ' option, then you will need to add 'screen.' to this list. +# Note that this is only a partial test; the value of the WINDOW environment +# variable must also be a number (which screen(1) sets). +#ScreenTerms = screen:screen-w:vt100 + +# Values of the TERM environment variable which are deemed to be xterms. If +# you are using MOC within screen(1) under an xterm, then add screen(1)'s +# TERM setting here as well to cause MOC to update the xterm's title. +#XTerms = xterm +#XTerms += xterm-colour:xterm-color +#XTerms += xterm-256colour:xterm-256color +#XTerms += rxvt:rxvt-unicode +#XTerms += rxvt-unicode-256colour:rxvt-unicode-256color +#XTerms += eterm + +# Theme file to use. This can be absolute path or relative to +# /usr/share/moc/themes/ (depends on installation prefix) or +# ~/.moc/themes/ . +# +# Example: Theme = laras_theme +# +Theme = solarized + +# The theme used when running on an xterm. +# +# Example: XTermTheme = transparent-background +# +#XTermTheme = + +# Should MOC try to autoload the default lyrics file for an audio? (The +# default lyrics file is a text file with the same file name as the audio +# file name with any trailing "extension" removed.) +#AutoLoadLyrics = yes + +# MOC directory (where pid file, socket and state files are stored). +# You can use ~ at the beginning. +#MOCDir = ~/.moc + +# Use mmap() to read files. mmap() is much slower on NFS. +#UseMMap = no + +# Use MIME to identify audio files. This can make for slower loading +# of playlists but is more accurate than using "extensions". +#UseMimeMagic = no + +# Assume this encoding for ID3 version 1/1.1 tags (MP3 files). Unlike +# ID3v2, UTF-8 is not used here and MOC can't guess how tags are encoded. +# Another solution is using librcc (see the next option). This option is +# ignored if UseRCC is set to 'yes'. +#ID3v1TagsEncoding = WINDOWS-1250 + +# Use librcc to fix ID3 version 1/1.1 tags encoding. +#UseRCC = yes + +# Use librcc to filenames and directory names encoding. +#UseRCCForFilesystem = yes + +# When this option is set the player assumes that if the encoding of +# ID3v2 is set to ISO-8859-1 then the ID3v1TagsEncoding is actually +# that and applies appropriate conversion. +#EnforceTagsEncoding = no + +# Enable the conversion of filenames from the local encoding to UTF-8. +#FileNamesIconv = no + +# Enable the conversion of the xterm title from UTF-8 to the local encoding. +#NonUTFXterm = no + +# Should MOC precache files to assist gapless playback? +#Precache = yes + +# Remember the playlist after exit? +#SavePlaylist = yes + +# When using more than one client (interface) at a time, do they share +# the playlist? +#SyncPlaylist = yes + +# Choose a keymap file (relative to '~/.moc/' or using an absolute path). +# An annotated example keymap file is included ('keymap.example'). +# +# Example: Keymap = my_keymap +# +Keymap = keymap + +# Use ASCII rather than graphic characters for drawing lines. This +# helps on some terminals. +#ASCIILines = no + +# FastDirs, these allow you to jump directly to a directory, the key +# bindings are in the keymap file. +# +# Examples: Fastdir1 = /mp3/rock +# Fastdir2 = /mp3/electronic +# Fastdir3 = /mp3/rap +# Fastdir4 = /mp3/etc +# +#Fastdir1 = +#Fastdir2 = +#Fastdir3 = +#Fastdir4 = +#Fastdir5 = +#Fastdir6 = +#Fastdir7 = +#Fastdir8 = +#Fastdir9 = +#Fastdir10 = + +# How fast to seek (in number of seconds per keystroke). The first +# option is for normal seek and the second for silent seek. +#SeekTime = 1 +#SilentSeekTime = 5 + +# PreferredDecoders allows you to specify which decoder should be used +# for any given audio format. It is a colon-separated list in which +# each entry is of the general form 'code(decoders)', where 'code' +# identifies the audio format and 'decoders' is a comma-separated list +# of decoders in order of preference. +# +# The audio format identifier may be either a filename extension or a +# MIME media type. If the latter, the format is 'type/subtype' (e.g., +# 'audio/flac'). Because different systems may give different MIME +# media types, any 'x-' prefix of the subtype is ignored both here and +# in the actual file MIME type (so all combinations of 'audio/flac' and +# 'audio/x-flac' match each other). +# +# For Internet streams the matching is done on MIME media type and on +# actual content. For files the matches are made on MIME media type +# (if the 'UseMimeMagic' option is set) and on filename extension. The +# MIME media type of a file is not determined until the first entry for +# MIME is encountered in the list. +# +# The matching is done in the order of appearance in the list with any +# entries added from the command line being matched before those listed +# here. Therefore, if you place all filename extension entries before +# all MIME entries you will speed up MOC's processing of directories +# (which could be significant for remote file systems). +# +# The decoder list may be empty, in which case no decoders will be used +# for files (and files with that audio format ignored) while Internet +# streams will be assessed on the actual content. Any decoder position +# may contain an asterisk, in which case any decoder not otherwise listed +# which can handle the audio format will be used. It is not an error to +# list the same decoder twice, but neither does it make sense to do so. +# +# If you have a mix of audio and non-audio files in your directories, you +# may wish to include entries at top of the list which ignore non-audio +# files by extension. +# +# In summary, the PreferredDecoders option provides fine control over the +# type of matching which is performed (filename extension, MIME media +# type and streamed media content) and which decoder(s) (if any) are used +# based on the option's list entries and their ordering. +# +# Examples: aac(aac,ffmpeg) first try FAAD2 for AACs then FFmpeg +# mp3() ignore MP3 files +# wav(*,sndfile) use sndfile for WAV as a last resort +# ogg(vorbis,*):flac(flac,*) try Xiph decoders first +# ogg():audio/ogg() ignore OGG files, and +# force Internet selection by content +# gz():html() ignore some non-audio files +# +# Any unspecified audio formats default to trying all decoders. +# Any unknown (or misspelt) drivers are ignored. +# All names are case insensitive. +# The default setting reflects the historical situation modified by +# the experience of users. +# +#PreferredDecoders = aac(aac,ffmpeg):m4a(ffmpeg) +#PreferredDecoders += mpc(musepack,*,ffmpeg):mpc8(musepack,*,ffmpeg) +#PreferredDecoders += sid(sidplay2):mus(sidplay2) +#PreferredDecoders += wav(sndfile,*,ffmpeg) +#PreferredDecoders += wv(wavpack,*,ffmpeg) +#PreferredDecoders += audio/aac(aac):audio/aacp(aac):audio/m4a(ffmpeg) +#PreferredDecoders += audio/wav(sndfile,*) + +# The following PreferredDecoders attempt to handle the ambiguity surrounding +# container types such as OGG for files. The first two entries will force +# a local file to the correct decoder (assuming the .ogg file contains Vorbis +# audio), while the MIME media types will cause Internet audio streams to +# be assessed on content (which may be either Vorbis or Speex). +# +#PreferredDecoders += ogg(vorbis,ffmpeg):oga(vorbis,ffmpeg):ogv(ffmpeg) +#PreferredDecoders += opus(ffmpeg) +#PreferredDecoders += spx(speex) +#PreferredDecoders += application/ogg(vorbis):audio/ogg(vorbis) + +# Which resampling method to use. There are a few methods of resampling +# sound supported by libresamplerate. The default is 'Linear') which is +# also the fastest. A better description can be found at: +# +# http://www.mega-nerd.com/libsamplerate/api_misc.html#Converters +# +# but briefly, the following methods are based on bandlimited interpolation +# and are higher quality, but also slower: +# +# SincBestQuality - really slow (I know you probably have an xx GHz +# processor, but it's still not enough to not see +# this in the top output :) The worst case +# Signal-to-Noise Ratio is 97dB. +# SincMediumQuality - much faster. +# SincFastest - the fastest bandlimited interpolation. +# +# And these are lower quality, but much faster methods: +# +# ZeroOrderHold - really poor quality, but it's really fast. +# Linear - a bit better and a bit slower. +# +#ResampleMethod = Linear + +# Always use this sample rate (in Hz) when opening the audio device (and +# resample the sound if necessary). When set to 0 the device is opened +# with the file's rate. +#ForceSampleRate = 0 + +# By default, even if the sound card reports that it can output 24bit samples +# MOC converts 24bit PCM to 16bit. Setting this option to 'yes' allows MOC +# to use 24bit output. (The MP3 decoder, for example, uses this format.) +# This is disabled by default because there were reports that it prevents +# MP3 files from playing on some soundcards. +#Allow24bitOutput = no + +# Use realtime priority for output buffer thread. This will prevent gaps +# while playing even with heavy load. The user who runs MOC must have +# permissions to set such a priority. This could be dangerous, because it +# is possible that a bug in MOC will freeze your computer. +#UseRealtimePriority = no + +# The number of audio files for which MOC will cache tags. When this limit +# is reached, file tags are discarded on a least recently used basis (with +# one second resolution). You can disable the cache by giving it a size of +# zero. Note that if you decrease the cache size below the number of items +# currently in the cache, the number will not decrease immediately (if at +# all). +#TagsCacheSize = 256 + +# Number items in the playlist. +#PlaylistNumbering = yes + +# Main window layouts can be configured. You can change the position and +# size of the menus (directory and playlist). You have three layouts and +# can switch between then using the 'l' key (standard mapping). By default, +# only two layouts are configured. +# +# The format is as follows: +# +# - Each layout is described as a list of menu entries. +# - Each menu entry is of the form: +# +# menu(position_x, position_y, width, height) +# +# where 'menu' is either 'directory' or 'playlist'. +# - The parameters define position and size of the menu. They can +# be absolute numbers (like 10) or a percentage of the screen size +# (like 45%). +# - 'width' and 'height' can have also value of 'FILL' which means +# fill the screen from the menu's position to the border. +# - Menus may overlap. +# +# You must describe at least one menu (default is to fill the whole window). +# There must be at least one layout (Layout1) defined; others can be empty. +# +# Example: Layout1 = playlist(50%,50%,50%,50%) +# Layout2 = "" +# Layout3 = "" +# +# Just one layout, the directory will occupy the whole +# screen, the playlist will have 1/4 of the screen size +# and be positioned at lower right corner. (Note that +# because the playlist will be hidden by the directory +# you will have to use the TAB key to make the playlist +# visible.) +# +# Example: Layout1 = playlist(0,0,100%,10):directory(0,10,100%,FILL) +# +# The screen is split into two parts: playlist at the top +# and the directory menu at the bottom. Playlist will +# occupy 10 lines and the directory menu the rest. +# +#Layout1 = directory(0,0,50%,100%):playlist(50%,0,FILL,100%) +#Layout2 = directory(0,0,100%,100%):playlist(0,0,100%,100%) +#Layout3 = "" + +# When the song changes, should the menu be scrolled so that the currently +# played file is visible? +#FollowPlayedFile = yes + +# What to do if the interface was started and the server is already playing +# something from the playlist? If CanStartInPlaylist is set to 'yes', the +# interface will switch to the playlist. When set to 'no' it will start +# from the last directory. +#CanStartInPlaylist = yes + +# Executing external commands (1 - 10) invoked with key commands (F1 - F10 +# by default). +# +# Some arguments are substituted before executing: +# +# %f - file path +# %i - title made from tags +# %S - start block mark (in seconds) +# %E - end block mark (in seconds) +# +# Data from tags can also be substituted: +# +# %t - title +# %a - album +# %r - artist +# %n - track +# %m - time of the file (in seconds) +# +# The parameters above apply to the currently selected file. If you change +# them to capital letters, they are taken from the file currently playing. +# +# Programs are run using execv(), not a shell, so you can't do things like +# redirecting the output to a file. The command string is split using blank +# characters as separators; the first element is the command to be executed +# and the rest are its parameters, so if you use "echo Playing: %I" we run +# program 'echo' (from $PATH) with 2 parameters: the string 'Playing:' and +# the title of the file currently playing. Even if the title contains +# spaces, it's still one parameter and it's safe if it contains `rm -rf /`. +# +# Examples: ExecCommand1 = "cp %f /mnt/usb_drive" +# ExecCommand2 = "/home/joe/now_playing %I" +# +#ExecCommand1 = +#ExecCommand2 = +#ExecCommand3 = +#ExecCommand4 = +#ExecCommand5 = +#ExecCommand6 = +#ExecCommand7 = +#ExecCommand8 = +#ExecCommand9 = +#ExecCommand10 = + +# Display the cursor in the line with the selected file. Some braille +# readers (the Handy Tech modular series ZMU 737, for example) use the +# cursor to focus and can make use of it to present the file line even +# when other fields are changing. +#UseCursorSelection = no + +# Set the terminal title when running under xterm. +#SetXtermTitle = yes + +# Set the terminal title when running under screen(1). If MOC can detect +# that it is running under screen(1), then it will set an appropriate +# title (see description of ScreenTerms above). However, if multiple +# levels of screen management are involved, detection might fail and this +# could cause a screen upset. In that situation you can use this option +# to force screen titles off. +#SetScreenTitle = yes + +# Display full paths instead of just file names in the playlist. +#PlaylistFullPaths = yes + +# The following setting describes how block markers are displayed in +# the play time progress bar. Its value is a string of exactly three +# characters. The first character is displayed in a position which +# corresponds to the time marked as the start of a block and the last +# character to the time marked as the end of the block. The middle +# character is displayed instead if both the start and the end of the block +# would fall in the same position (within the resolution of the interface). +# You can turn off the displaying of these block marker positions by using +# three space characters. +#BlockDecorators = "`\"'" + +# How long (in seconds) to leave a message displayed on the screen. +# Setting this to a high value allows you to scroll through the messages +# using the 'hide_message' key. Setting it to zero means you'll have to +# be quick to see any message at all. Any new messages will be queued up +# and displayed after the current message's linger time expires. +#MessageLingerTime = 3 + +# Does MOC display a prefix on delayed messages indicating +# the number of queued messages still to be displayed? +#PrefixQueuedMessages = yes + +# String to append to the queued message count if any +# error messages are still waiting to be displayed. +#ErrorMessagesQueued = "!" + +# Self-describing ModPlug options (with 'yes' or 'no' values). +#ModPlug_Oversampling = yes +#ModPlug_NoiseReduction = yes +#ModPlug_Reverb = no +#ModPlug_MegaBass = no +#ModPlug_Surround = no + +# ModPlug resampling mode. +# Valid values are: +# +# FIR - 8 tap fir filter (extremely high quality) +# SPLINE - Cubic spline interpolation (high quality) +# LINEAR - Linear interpolation (fast, good quality) +# NEAREST - No interpolation (very fast, extremely bad sound quality) +# +#ModPlug_ResamplingMode = FIR + +# Other self-describing ModPlug audio characteristic options. +# (Note that the 32 bit sample size seems to be buggy.) +#ModPlug_Channels = 2 # 1 or 2 channels +#ModPlug_Bits = 16 # 8, 16 or 32 bits +#ModPlug_Frequency = 44100 # 11025, 22050, 44100 or 48000 Hz +#ModPlug_ReverbDepth = 0 # 0 (quiet) to 100 (loud) +#ModPlug_ReverbDelay = 0 # Delay in ms (usually 40-200ms) +#ModPlug_BassAmount = 0 # 0 (quiet) to 100 (loud). +#ModPlug_BassRange = 10 # Cutoff in Hz (10-100). +#ModPlug_SurroundDepth = 0 # Surround level 0(quiet)-100(heavy). +#ModPlug_SurroundDelay = 0 # Surround delay in ms, usually 5-40ms. +#ModPlug_LoopCount = 0 # 0 (never), n (times) or -1 (forever) + +# Self-describing TiMidity audio characteristic options. +#TiMidity_Rate = 44100 # Between 8000 and 48000 +#TiMidity_Bits = 16 # 8 or 16 +#TiMidity_Channels = 2 # 1 or 2 +#TiMidity_Volume = 100 # 0 to 800 + +# You can setup a TiMidity-Config-File here. +# Leave it unset to use library defaults (/etc/timidity.cfg mostly). +# Setting it to 'yes' also uses the library defaults. +# Set it to 'no' if you don't have any configuration file. +# Otherwise set it to the name of a specific file. +#TiMidity_Config = + +# Self-describing SidPlay2 audio characteristic options. +#SidPlay2_DefaultSongLength = 180 # If not in database (in seconds) +#SidPlay2_MinimumSongLength = 0 # Play at least n (in seconds) +#SidPlay2_Frequency = 44100 # 4000 to 48000 +#SidPlay2_Bits = 16 # 8 or 16 +#SidPlay2_Optimisation = 0 # 0 (worst quality) to 2 (best quality) + +# Set path to a HVSC-compatible database (if not set, database is disabled). +#SidPlay2_Database = + +# SidPlay2 playback Mode: +# +# "M": Mono (best for many SIDs) +# "S": Stereo +# "L"/"R": Left / Right +# +#SidPlay2_PlayMode = "M" + +# Use start-song information from SID ('yes') or start at first song +# ('no'). Songs before the start-song won't be played. (Note that this +# option previously took the values 1 and 0; these are now deprecated +# in favour of 'yes' and 'no'.) +#SidPlay2_StartAtStart = yes + +# Play sub-tunes. (Note that this option previously took the values 1 +# and 0; these are now deprecated in favour of 'yes' and 'no'.) +#SidPlay2_PlaySubTunes = yes + +# Run the OnSongChange command when a new song starts playing. +# Specify the full path (i.e. no leading '~') of an executable to run. +# Arguments will be passed, and you can use the following escapes: +# +# %a artist +# %r album +# %f filename +# %t title +# %n track +# %d file duration in XX:YY form +# %D file duration, number of seconds +# +# No pipes/redirects can be used directly, but writing a shell script +# can do the job. +# +# Example: OnSongChange = "/home/jack/.moc/myscript %a %r" +# +#OnSongChange = + +# If RepeatSongChange is 'yes' then MOC will execute the command every time +# a song starts playing regardless of whether or not it is just repeating. +# Otherwise the command will only be executed when a different song is +# started. +#RepeatSongChange = no + +# Run the OnStop command (full path, no arguments) when MOC changes state +# to stopped (i.e., when user stopped playing or changes a song). +#OnStop = "/home/jack/.moc/myscript_on_stop" + +# This option determines which song to play after finishing all the songs +# in the queue. Setting this to 'yes' causes MOC to play the song which +# follows the song being played before queue playing started. If set to +# 'no', MOC will play the song following the last song in the queue if it +# is in the playlist. The default is 'yes' because this is the way other +# players usually behave. (Note that this option previously took the +# values 1 and 0; these are now deprecated in favour of 'yes' and 'no'.) +#QueueNextSongReturn = yes diff --git a/moc/.moc/keymap b/moc/.moc/keymap new file mode 100755 index 0000000..0ce0fcd --- /dev/null +++ b/moc/.moc/keymap @@ -0,0 +1,188 @@ +# This is the example keymap file for MOC. You can define your own key +# bindings for MOC commands by creating your own keymap file and setting +# the 'Keymap' option in ~/.moc/config. +# +# The format of this file is: +# +# - Lines beginning with # are comments. +# - Blank lines are ignored. +# - Every other line is expected to be in one of the formats: +# +# COMMAND = [KEY ...] +# COMMAND += KEY ... +# +# The KEY can be: +# +# - Just a char, like i, L, ", * +# - CTRL-KEY sequence: ^k (CTRL-k), ^4 +# - ALT-KEY (meta) sequence: M-j (ALT-j), M-/ +# - Special keys: DOWN, UP +# LEFT, RIGHT +# HOME, END +# BACKSPACE +# INS, DEL +# ENTER +# PAGE_UP, PAGE_DOWN +# SPACE, TAB +# KEYPAD_CENTER +# ESCAPE +# F1 - F12 +# +# Note that the use of a digit as a KEY is deprecated. +# +# Maximum number of KEYs for one COMMAND is 5. +# +# Omitting the KEY for a COMMAND will unbind all its default keys. They +# will also be automatically unbound when you bind new KEYs to it. Individual +# default KEYs will be automatically unbound when they are explicitly bound +# to some other COMMAND. +# +# Using the '+=' form will cause the KEYs to be appended to any existing +# (default or explicit) bindings for the COMMAND. Appending an existing +# default binding for the same COMMAND will cause MOC to think of that KEY +# as then being explicitly bound. +# +# Only one binding for any given COMMAND can appear in the keymap file. One +# exception to this is that if the default keys for a COMMAND are explicitly +# unbound then a subsequent binding may appear for it. A second exception +# is that multiple appending bindings may appear. +# +# Meta-key detection is sensitive to the ESCDELAY environment variable (see +# the manpage for ncurses(3)). In its absence, MOC resets the default +# delay to 25ms. If you need to emulate meta-key sequences using the ESC +# key, then you may need to set the value of ESCDELAY back to its ncurses +# default of 1000ms (but doing so will make the response to the ESC key +# sluggish). +# +# If MOC's keypresses are being filtered through some other program (in a +# GUI environment, for example) which also does meta-key detection, then +# MOC is at the mercy of the timings with which that program presents them. +# +# Default key configuration for MOC (and a list of all available commands): + +# MOC control keys: +quit_client = q +quit = Q + +# Menu and interface control keys: +go = ENTER l +menu_down = DOWN j +menu_up = UP k +menu_page_down = PAGE_DOWN ^d d +menu_page_up = PAGE_UP ^p ^u u +menu_first_item = HOME g +menu_last_item = END G +search_menu = / +toggle_read_tags = f +toggle_show_time = ^t +toggle_show_format = ^f +toggle_menu = TAB +#toggle_layout = L +#toggle_hidden_files = H +next_search = ^g ^n +#show_lyrics = L +theme_menu = T +help = ? +refresh = ^r +reload = r + +# Audio playing and positioning keys: +seek_forward = RIGHT +seek_backward = LEFT +seek_forward_fast = ] +seek_backward_fast = [ +pause = p SPACE +stop = s +next = n L ^l +previous = b H ^h +toggle_shuffle = S +toggle_repeat = R +toggle_auto_next = X +#toggle_mixer = x +go_url = o + +# Volume control keys: +volume_down_1 = < +volume_up_1 = > +volume_down_5 = , +volume_up_5 = . +volume_10 = M-1 +volume_20 = M-2 +volume_30 = M-3 +volume_40 = M-4 +volume_50 = M-5 +volume_60 = M-6 +volume_70 = M-7 +volume_80 = M-8 +volume_90 = M-9 + +# Directory navigation keys: defaults are Shift-number +# (i.e., 'shift 1' -> '!' -> 'Fastdir1'). +go_to_a_directory = i +go_to_music_directory = M-m +go_to_fast_dir1 = M-a +go_to_fast_dir2 = M-l +go_to_fast_dir3 = M-p +go_to_fast_dir4 = M-d +go_to_fast_dir5 = M-c +go_to_fast_dir6 = ^ +go_to_fast_dir7 = & +go_to_fast_dir8 = * +go_to_fast_dir9 = ( +go_to_fast_dir10 = ) +#go_to_playing_file = G +go_up = h + +# Playlist specific keys: +add_file = a +add_directory = A +#plist_add_stream = u +delete_from_playlist = x +playlist_full_paths = P +plist_move_up = K +plist_move_down = J +save_playlist = V +remove_dead_entries = Y +clear_playlist = C + +# Queue manipulation keys: +enqueue_file = z +clear_queue = Z + +# User interaction control: +history_up = UP +history_down = DOWN +delete_to_start = ^u +delete_to_end = ^k +cancel = ^x ESCAPE +hide_message = M + +# Softmixer specific keys: +toggle_softmixer = w +#toggle_make_mono = J + +# Equalizer specific keys: +toggle_equalizer = E +equalizer_refresh = e +#equalizer_prev = K +#equalizer_next = k + +# External commands: +mark_start = ' +mark_end = " +exec_command1 = F1 +exec_command2 = F2 +exec_command3 = F3 +exec_command4 = F4 +exec_command5 = F5 +exec_command6 = F6 +exec_command7 = F7 +exec_command8 = F8 +exec_command9 = F9 +exec_command10 = F10 + +# The following commands are available but not assigned to any keys by +# default: +# +# toggle_percent Switch on/off play progress bar time percentage +# diff --git a/moc/.moc/last_directory b/moc/.moc/last_directory new file mode 100644 index 0000000..7e6991d --- /dev/null +++ b/moc/.moc/last_directory @@ -0,0 +1 @@ +/home/alrayyes/dotfiles \ No newline at end of file diff --git a/moc/.moc/pid b/moc/.moc/pid new file mode 100644 index 0000000..8d7a41c --- /dev/null +++ b/moc/.moc/pid @@ -0,0 +1 @@ +8360 diff --git a/moc/.moc/themes/solarized b/moc/.moc/themes/solarized new file mode 100644 index 0000000..f74b4fb --- /dev/null +++ b/moc/.moc/themes/solarized @@ -0,0 +1,36 @@ +# mocp-theme-solarized by Vitaŭt Bajaryn +# MOC theme for use with a solarized-dark terminal color scheme +# based on green theme by Jacek Lehmann + +background = default default +frame = black default +window_title = green default +directory = default default +selected_directory = yellow default +playlist = blue default +selected_playlist = default default bold +file = default default +selected_file = cyan default +marked_file = default default bold +marked_selected_file = cyan default bold +info = cyan default +status = cyan default +title = green default +state = magenta default +current_time = blue default +time_left = cyan default +total_time = cyan default +time_total_frames = cyan default bold +sound_parameters = cyan default +legend = default default +disabled = default default +enabled = default default bold +empty_mixer_bar = green default +filled_mixer_bar = black green +empty_time_bar = green default +filled_time_bar = black green +entry = yellow default +entry_title = red default +error = red default +message = yellow default +plist_time = magenta default bold diff --git a/newsbeuter/.newsbeuter/config b/newsbeuter/.newsbeuter/config new file mode 100644 index 0000000..90c0d42 --- /dev/null +++ b/newsbeuter/.newsbeuter/config @@ -0,0 +1,41 @@ +# -- feeds --------------------------------------------------------------------- + +auto-reload yes +reload-time 15 +reload-threads 2 +max-downloads 4 +player mplayer +refresh-on-startup yes +show-read-feeds no + +# Solarized color scheme +color background default default +color listnormal default default +color listfocus black yellow +color info default black +color article default default + +# -- navigation ---------------------------------------------------------------- + +goto-next-feed no +browser qutebrowser + +bind-key j down feedlist +bind-key k up feedlist +bind-key j next articlelist +bind-key k prev articlelist +bind-key J next-feed articlelist +bind-key K prev-feed articlelist +bind-key j down article +bind-key k up article + +# highlights +highlight article "^(Title):.*$" blue default +highlight article "https?://[^ ]+" red default +highlight article "\\[image\\ [0-9]+\\]" green default + +# -- misc ---------------------------------------------------------------------- + +unbind-key C feedlist +confirm-exit no +cleanup-on-quit yes diff --git a/newsbeuter/.newsbeuter/urls b/newsbeuter/.newsbeuter/urls new file mode 100644 index 0000000..7c0c86c --- /dev/null +++ b/newsbeuter/.newsbeuter/urls @@ -0,0 +1 @@ +https://news.ycombinator.com/rss diff --git a/polybar/.config/polybar/bin/isactive-bluetooth/README.md b/polybar/.config/polybar/bin/isactive-bluetooth/README.md new file mode 100644 index 0000000..a97abb0 --- /dev/null +++ b/polybar/.config/polybar/bin/isactive-bluetooth/README.md @@ -0,0 +1,13 @@ +# Script: isactive-bluetooth + +A script that shows if bluetooth is on or off. + + +## Module + +```ini +[module/isactive-bluetooth] +type = custom/script +exec = ~/polybar-scripts/isactive-bluetooth.sh +interval = 10 +``` diff --git a/polybar/.config/polybar/bin/isactive-bluetooth/isactive-bluetooth.sh b/polybar/.config/polybar/bin/isactive-bluetooth/isactive-bluetooth.sh new file mode 100644 index 0000000..f16935f --- /dev/null +++ b/polybar/.config/polybar/bin/isactive-bluetooth/isactive-bluetooth.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +if [ "$(systemctl is-active bluetooth.service)" = "active" ]; then + echo "" +else + echo "" +fi diff --git a/polybar/.config/polybar/bin/player-mpris-tail/README.md b/polybar/.config/polybar/bin/player-mpris-tail/README.md new file mode 100644 index 0000000..0558c10 --- /dev/null +++ b/polybar/.config/polybar/bin/player-mpris-tail/README.md @@ -0,0 +1,25 @@ +# Script: player-mpris-tail + +This script displays the current track and the play-pause status without polling. Information is obtained by listening to MPRIS events, so it is updated instantaneously on change. + +![player-mpris-tail](screenshots/1.png) + +![player-mpris-tail](screenshots/2.png) + + +## Dependencies + +* [playerctl](https://github.com/acrisci/playerctl) + + +## Module + +```ini +[module/player-mpris-tail] +type = custom/script +exec = ~/polybar-scripts/player-mpris-tail.py +tail = true +click-left = ~/polybar-scripts/player-ctrl.sh previous +click-right = ~/polybar-scripts/player-ctrl.sh next +click-middle = ~/polybar-scripts/player-ctrl.sh play-pause +``` diff --git a/polybar/.config/polybar/bin/player-mpris-tail/player-ctrl.sh b/polybar/.config/polybar/bin/player-mpris-tail/player-ctrl.sh new file mode 100755 index 0000000..ce83fa2 --- /dev/null +++ b/polybar/.config/polybar/bin/player-mpris-tail/player-ctrl.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +function listPlayers { + echo "$(dbus-send --session --dest=org.freedesktop.DBus \ + --type=method_call --print-reply /org/freedesktop/DBus \ + org.freedesktop.DBus.ListNames | grep org.mpris.MediaPlayer2 | + awk -F\" '{print $2}' | cut -d '.' -f4- )" +} + +function getPlayerStatus { + playerctl --player="$1" status +} + +function getActivePlayer { + players=($(listPlayers)) + for player in ${players[@]}; do + if [ "$(getPlayerStatus "${player}")" == "Playing" ]; then + playing=$player + fi + done + for player in ${players[@]}; do + if [ "$(getPlayerStatus "${player}")" == "Paused" ]; then + paused=$player + fi + done + if [ -n "$playing" ]; then + echo "$playing" + elif [ -n "$paused" ]; then + echo "$paused" + else + # Return last (newest?) player + echo ${players[@]: -1} + fi +} + +if [ "$1" == "--get-active" ]; then + getActivePlayer +else + exec playerctl --player="$(getActivePlayer)" "$@" +fi diff --git a/polybar/.config/polybar/bin/player-mpris-tail/player-mpris-tail.py b/polybar/.config/polybar/bin/player-mpris-tail/player-mpris-tail.py new file mode 100755 index 0000000..3dd9051 --- /dev/null +++ b/polybar/.config/polybar/bin/player-mpris-tail/player-mpris-tail.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python3 + +import time +import sys +import subprocess + +import gi +gi.require_version('Playerctl', '1.0') +from gi.repository import Playerctl, GLib + +MUSIC_ICON = '' +PAUSE_ICON = '' +PLAYER_CLOSED_ICON = '' + +def listPlayers(): + return [ + playername.split('"')[1].split('.')[-1] + for playername + in subprocess.getoutput( + 'dbus-send --session --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames | grep org.mpris.MediaPlayer2' + ).split("\n") + ] + +def getPlayerStatus(playername): + return subprocess.getoutput( + 'playerctl --player="%s" status' % playername + ) + +def getActivePlayer(): + players = [ { 'name': player, 'status': getPlayerStatus(player) } for player in listPlayers() ] + playing = [ player['name'] for player in players if player['status'] == 'Playing' ] + paused = [ player['name'] for player in players if player['status'] == 'Paused' ] + if len(playing): + return playing[-1] + if len(paused): + return paused[-1] + if len(players): + return players[-1]['name'] + +class PlayerStatus: + def __init__(self): + self._player = None + self._player_class = None + self._player_name = None + self._icon = PAUSE_ICON + + self._last_artist = None + self._last_title = None + + self._last_status = '' + + def show(self): + self._init_player() + + # Wait for events + main = GLib.MainLoop() + main.run() + + def _init_player(self): + while True: + try: + self._player_name = getActivePlayer() + self._player_class = Playerctl.Player() + if self._player_name: + self._player = self._player_class.new(self._player_name) + else: + self._player = self._player_class.new() + self._player.on('metadata', self._on_metadata) + self._player.on('play', self._on_play) + self._player.on('pause', self._on_pause) + self._player.on('exit', self._on_exit) + status = self._player.get_property('status') + if status == 'Playing': + self._icon = MUSIC_ICON + elif status == 'Paused': + self._icon = PAUSE_ICON + self._on_metadata(self._player, self._player.get_property('metadata')) + break + + except: + self._print_flush(PLAYER_CLOSED_ICON) + time.sleep(2) + + def _on_metadata(self, player, e): + if 'xesam:artist' in e.keys() and 'xesam:title' in e.keys(): + self._artist = e['xesam:artist'][0] + self._title = e['xesam:title'] + self._print_song() + + def _on_play(self, player): + self._icon = MUSIC_ICON + self._print_song() + + def _on_pause(self, player): + self._icon = PAUSE_ICON + self._print_song() + + def _on_exit(self, player): + self._init_player() + + def _print_song(self): + self._print_flush( + '{} {} - {}'.format(self._icon, self._artist, self._title)) + + """ + Seems to assure print() actually prints when no terminal is connected + """ + + def _print_flush(self, status, **kwargs): + if status != self._last_status: + print(status, **kwargs) + sys.stdout.flush() + self._last_status = status + +PlayerStatus().show() diff --git a/polybar/.config/polybar/bin/player-mpris-tail/screenshots/1.png b/polybar/.config/polybar/bin/player-mpris-tail/screenshots/1.png new file mode 100644 index 0000000000000000000000000000000000000000..686c7d619441e233715934fa19792f4ea7b1fc83 GIT binary patch literal 9199 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 FV1jO{*L(l~ literal 0 HcmV?d00001 diff --git a/polybar/.config/polybar/bin/player-mpris-tail/screenshots/2.png b/polybar/.config/polybar/bin/player-mpris-tail/screenshots/2.png new file mode 100644 index 0000000000000000000000000000000000000000..7aeabf3e7d5a9f08cdee1a8d786254a46b0786ae GIT binary patch literal 6192 zcmV-07|-X4P)00003b3#c}2nYz< z;ZNWI02k;})+cLkQ+d zIdO?3epD~i)PchIi4XvRYbybWM8u`oj4^vd>T~%{`k;jFpNA$*Qtxxn7F9Y91aJvb zyDYl#`F2DEMDiccwpWxN%FXJq=kbHeF1@Bz#ue&1DRG64vb0&GuSH=Ef@9MwJUJUz zdHT|Q=eMQF{!fzt0SFO@H~me+8)FC6TsO+wVQ>9SIMzq7@Tuq^v=Ac zASo zhwFx@HiPo;(q|!xzbh<+zIDsuZ6M+d88ReJoHzoSK7LgDs74z4+_w)lGuLprn|I#) z`Bnh|`iIW^W$D|yZ~kJdh|0kWTmb-F;tH~{l?^#;$R)b_8L`U==@77HOC=(!SY(D_ z7zQF*mL(pd9LkP>4`K1Yf2i-useGMW8NF4tZy(+(MAwhGua)ys7**hGW##rHWd(78 z{>qC*L`Y14Zvp}`g^fAEs6H#bdtod2y< zwRX}(c5;;m@9U5U?UdC()m5rCxq|zMI;<5?-pMaZS3zyUY71>oA~QEcM8=47Q(^f} zob)h*x=#|>DJ$de_7TKIzc`FxB?=5Z3Us~Nx@e-^_9uKFztqjH#F|{{{EFxsg zG)-<I}c|jqz4q?se?Scdo7YC1*P6FrY%_UCCAZnSRyX zUM8i}sfu!31(Om~Q)ys(d#Jp{M(0%02mxhkCltjHO#~zalutcEk)zUwB2ATADq!zv zkuOs0gO!~$0Wh;J)Hu}M`^4e?iS~E@@%^=|YVYLGs<0y;Dq%FftF9K>X3aSPFvH-w zt&m;gsYZRhkDck6yAp|kvz-A;6T32u<&taftwrsR!LG^f=3HXsPC~}RbjrK+JXsrR zeqHzR;Jazv=2cy|isTzi+>`3c@w5}X5*JF=P>sEmq9Vl0I0DW0IfW@F7j?BHS?W=B zIa474m*Z5(SW78<2x~11=qmwIHNrBA(JKqLwh)mM5$CM?i>FRcbsu~rw01oY+Cq9F ztPW#jg70Mg9+qTcpbKJG;w{SnV45koprOP|A|Sd9rR9gmbj1)r!E+1IubuRIRB5;%5E~s4nPFJl^HFQ6 zDG)RfbG8F$?HK>;NO-KJsm>@SQaiU-Z(UeV7KNPD_PHm{JlnkepYL3}m9y8rsq4wV zn(W_QdHdDbUBJv}{BTXT+((BQCZ_Uj`#C8%jN&qmJ0RWtcAriKB zj6d(1^ur75aS@ua@$kzhjt|!Zz|>!#odN*Zz4D!FD<8Mw;ZyP(d*$r({@wrh=~my_ zM~*$#(P(5oeD(6&9zY=2_1NIp@dNE0^>rrC#FCLqb9Zj1EZa5pDJpC3Ov zGBnf}B5QwRXW`eg^HF2)`NKz!b+puDZZ~!R-H&cwPZqRwXKn4{&yV^G4uFWGFQ1*x z-2JaNvxm=)ghyKHu$Yb}A{XZF%yC`$Cb(!qv#?N~Zqs;GrjajD@wW zlwgQj9~&kS^A_vYW*Ew~C?*giSdSC`5Rjh~#X+h2-CUsRj!@>Kzn+rRekqqnY8vV>*!+K<6PZXP={lr*bUqjzxz2?%|{LK1#6gwa78$Q(`eO00=xY`?JM?uO6QKeDB6jH~67LCnoAr7q8vf z;)rM)RzqX)&ENg@Qi>1}x7QbP&wXQJ{DttskCrkFi44X7plB5VOw%;^z!$`%Gasy_ zEejDB=T1$YdtvnCsjXkVlK{$XUSFqy@gw0v^ybEr?O2o^s^q(sd3l;?wOzU7PRx z-K`A^0AOuC*YxelzDIk4w^s8A0BqP6{M~EILaN2trzT%GH~P4(ZAlHyaQ^b!zfFi; zvbK<`|JL#FbnmtKH4AcEN;$VSmU5aPiH!^2Tj$CuZJxVl<~K;y1{<2`{JZ~sK4AeO zLS!*t|IK6J>7MKJ5s}plyf`sH(Rcsh`f3&s0WK^>Uw(G_nepMPR~E$+Z;aGXIx^>M zUsZ)B;n zk@lswJ1lKrNG`vZa2}-gqPu{d^^H}e^YXl#1lAg=Q@scPlFQfPmiz#z-RK@*XM;U* zplf6zn4jB-215-kq59@feG}Wc7YC!YYlwlgUvznN0`&q+nd6fJGb%^^ctx2CLc1;r z6=q*Oe{&NMfz<~a`woo1Fn)4!pyS7vZ>$!vr>O-nv!2Kz0g2oc!Ak6I0*o}bg{v% zHs03S9ts8-14IT8H)J0K0I;(AaUw$o=K{9?(}}FMIjuqgpbnY1fz#d8LPFcxM3yah zYe*BEr&DnNLp3TE3jhITKt&4H^*=c}Hs03Sq4VrQZ@@GAaUezlOe0#w0)Qz;?rCl% z3Z6LrCnr2ZvtWGyAg@#=uQ1y8T5MgC$%!L@@bRSTl(I;K0KizKe3hu2e|KG(tZ+n% zavUq2Pb@@ccBtu_6JyU0%>HOO8!`ig`GmwZA zCwCRAQaP;rDV1~N3GPI#gq%7qB0?e=OG0N)Q?o_sR6dUsY^*~}Yit<71_r`*QD`pituXgP}&@ zj{$cQyB5_CwA7Pgi3nRddjR%QiGl)XX84Pb^kM4u4=>+X=3OsNj5T`3Y-;V+?_&fz z2kQY+iEX_OE0P$1?c|yjIHc)#d||jbA#$Yp8mChQd{uWdR-uF?d%2EOKPRQ>P*`XOv5R`wuS&fY-QJS zvQovfyR+yk*Or`z2wSN*kU7@TF26XTpFik74tCHoRU(HW1mN7_#MQASs_V#Qyu0t2 zrsu6!4P}lAP;NPBd3JaJptu-|8pLz4<=c529y&V6IA@5=FtG8|Xt)6r*CSCA5DAcn z9y>aDC=fq?dp=%RdTlluXn*ueL-kzph5!%>KhvX9A|pI1>dTYIL6) z?Y7GGDD~)NSSbi?hbO|$4XDN^M#J@(xE_gB0p_k5v&k$#gRY!hB4YuzbT&w4SohhH z@;tjvPi+WJ0J)u&kBZRI|LDm^Bvm1xKwEvVyo=E^@5n{caJjmD1&D}L{#@KXK`gf! ze7lvbx^du%gOBb50AO9HslTJAH^kC=*WTK+5P;zR8y_x*Cr7_>s`2J#EMW!u4h)Sq z!}{{fpZnT&srp@1cxI8>L`jt~nH}CJntw3*A_-G5PuU>mMr7ozY=C+cj z4~_i!6kLzyLa=jTX){*^&em{LS*D}=BQ0#KW%`HDOh4TkiRA*#2fGLAVk?n`aM=NB znv#e%e*NK+)OOSsycyP)W-cXNdaA~6YJMyES+{Z|&(E~3$8u)V!S2B-JbM&nTUz9o zw^sWnhhBQ}r6Zdg8#$^AHg>glbtf)=_vU7`4TGtfgryhCf*vR6{Qd*>{@f$y!>-zlI@Z$$UjHlP{-*|Iw zZc9#~*d?-Sm;2GH-=B${9veH{H{KYq5~-bcZh!dB{S+4$mpSK1k>$&;)lEI!9e%Er z$G76=T{2cS`iHT2eb{X5{U6`vFAn!ljdojw_`UT@Kbg-x-4-77?dqgP03g5lRc4x0 zbmsdrvD0G*HNkIPTu+p}5#Y}(MV5c}THUm+oSfo$q}wXQ?`>TA$$Yjf&pPMMM0awwPSms56W1C(c8HgEz&V8YOa1#oV0PR`90bzMT8M=1TiEBI^%aL?tX(oN;u zaMIdWs2OOlY*#9u*g};*@pbejE4hyS=^W~H60NVA&T${U`^BS^vL#O22tgW{V?S=8 ze1su#o4X&o;%gwH8i~jRn6SUy4-Rs0^rEe?!a@o#I7VL~c!^gYo!SajIu~VA&N(wo z1Hm~DLb<@s))E7hoz0#Ob^oE=#zy%>!3gn*0~m~P&MnIlamK!Mqz|rX(o402c#oe` zJX8~{5@{-;QdMhV+1u-ZCMo6CBegr~R$*9<;IQp>sh~nx>4pRVMECu>k_j}05&!{` zjSHM2r9{b^DLei^VdV!Z!<8Nxcm)Rg7*yC=p~w(}!JuInj+1uP7s0_ZZh2+Ea=$BC zRF7j83Kbg;88b{%r3$(Uy5fV}OUjsP*9ewtOyvD3M=lG~6r)`eFFT9xAhkS~vtSL) zTn#D!aSeBnuF1+#QT5hSRWGWOSe%?XjYRLtZOcQbN}BTEmKw?J$y^dk|LOuHj2VVu zS=_RUl5;01m5b_Pz_TrtcXzs|X6{g{-~r01^+P&e8Bv?a=Ga#se#_>9Nu{8+T6f=O zrQzP0A@97`_ O0000Or>J?c6WCNg64nG z=~RIp6fT#`0=MiMjk+5h9dl>SoYB>g5h?;ch}LfsSG*Rg>5F5HFizTsu2EJ&GPjG1h?+Mn^~8<`+E5Oq&YnGM^Ya~L0T9DNA6`MY z*;hBnR#60CB(AdN7?G^OApnT)$7!qq#a+C3!QH%h)6LAxi0Veo5diz+$B*vyn>TLt z(*_Zhn5=-MxF)l&j05NKODvxxqs3-n~0A=)s!+8lxW2g1i>G zV4aPPjU=kt-tz@KQGu5u1CGJ(bY!6XaY09x^XJc-{tFAg8tANr*@>#NipYj&4F_45 z69#JQ0)M#7ECl`1rAzM4ojbNzv$^e_J%8?2R#x1seq)Ra5@<>bKX~xKeg6D;fb#5c zV!c>f`c$FRaEr1mkiC5Q(!!ovdQ$zSr>6|~{B~HF0D4GNcrcX0 znuKr+z)H2^%SjpRj4tL$H^vp4RG`X^vSc6?(^zrD;bHfmdePYOdbV2R08IeQVfqt zhY-)XxKH?USXI#$ogHPY8OK`o!vp&tP{qcc)O{l8sS+oSL6vgt+I1@)zy%&(5!iqH z=MT$oI|p=lIB%upkAi;CNt3gHUAh^#t*y|eJlYp{=~l#O7>VYSyB{0!M>k4(XW83h zEq0pTvtzEr%Z8B=zk39bbR-xT58XtENp2(Zjl(5NXy%MkBzQjMuAK+z%4<>3_ca+@ z#iYTj5df~m`Wu@YN>W?qxhP26+m{hMn*G^(g3MWt8NTh83-1QKEeI?3r;GT#7+h5Wqu;7uPKtb{=)x%4=6gvIh(aXKw{PE?rB{_a2sgIjl#y&;IE%p$!!`q2 zO7NL(gt9LM{n2e~Za-c}xdH%>#5rhCpgGPFs0FGU8yoe&O7HKgSlDp_IG7+Qryvs5jhIh0?xw_1(MonzQ5PL>udJq_Z%_$F zpmHNBgKGpXuT=c8bJl5M^G4|fAn_3DQY_3)^j97DU6G*@1Jo zM`U7XHjZ4D=k$#A@~8zlqM-AT!Jh;$T*hXIvj&cMS!`Ab#vg(;-O|#MZ6I0##JAuJ z{rESoKHvl@2wsDS)%6BxqBCI>2gL-XI0gWC3<9?@hB?B{)KkmRoWSRjmTiPy{rRWq zd_iYTyh3DiNTd;A;DBSUtb7u!tQIEGLeS}eRY{Qd@88#%@JPbX*8Z6ikY6TG%t%9fS%hzckXD#7CbE0zNWk<<1c(h;Y7`0$~d zpPzR(bg=i!FSiA}KjXncSce*YY3aG~eNp8y5a>sYLa%VHkJ zyp(u&v6Y?jGS=ljWh9<%$G!?}-tGtLL20hQy(o?GkYy0%WAdc$law*Gy)aP;iSbG3 zL08r%qPQ^hAgvJeK_)qFpRglEkpmAE=(aZyt-$3q{Ts%Jl=r(u&A+ zSNM8N)U2svYiIj0U+CMFJhqCzpY50Zoj=+?T^3b7QzFmX9YjIDqonmuz3&?$6b6xL z=suhpgyuQC{}f%{(6^+cfu20zqi1|-UYjv%&0!F?$-P|vRziO@IOx4nV2x2-9JQW! z8&-sv%z5)I@JA#26%1SjptMXLN?KCi@fZBKM?^)JO^kJH4B*99l- zA@o0(AQ^1;`e7Mv#uoAZb1?E?x>SGjGT;1N{Y_-ZF6rOT>aKN6&ykibJ1Q%87}s4F zK5ua#m!204QruR$dSfBAV(+A3$;_DS%F*8kBKOg)@1U%XX)H{L>?nUDeY>}g?>_0? zkCdm`sZ+v-uf5Bs=C-lER~OqJ;d?-jCQ_ye!}1bXR@Q#M2Ob|5%z}?BL|rm@ukyVs z#*QLl_xs6f_foRh*Bm8$*Iuc5RLG3Y1wAUzfDiJ($( /dev/null | wc -l); then +if ! updates_aur=$(trizen -Su --aur --quiet | wc -l); then + updates_aur=0 +fi + +updates=$(("$updates_arch" + "$updates_aur")) + +if [ "$updates" -gt 0 ]; then + echo " $updates" +else + echo "" +fi diff --git a/polybar/.config/polybar/config b/polybar/.config/polybar/config new file mode 100644 index 0000000..d00a778 --- /dev/null +++ b/polybar/.config/polybar/config @@ -0,0 +1,564 @@ +;===================================================== +; +; To learn more about how to configure Polybar +; go to https://github.com/jaagr/polybar +; +; The README contains alot of information +; +;===================================================== + +[colors] +;background = ${xrdb:color0:#222} +background = #222 +background-alt = #444 +;foreground = ${xrdb:color7:#222} +foreground = #dfdfdf +foreground-alt = #555 +primary = #ffb52a +secondary = #e60053 +alert = #bd2c40 + +[bar/laptop-bottom] +bottom = true +monitor = ${env:MONITOR:e-DP1} +width = 100% + +height = 27 +radius = 6.0 +fixed-center = false + +background = ${colors.background} +foreground = ${colors.foreground} + +line-size = 3 +line-color = #f00 + +border-size = 0 +border-color = #00000000 + +padding-left = 0 +padding-right = 2 + +module-margin-left = 1 +module-margin-right = 2 + +font-0 = DejaVuSansMono Nerd Font Mono:pixelsize=14 +font-1 = "Wuncon Siji:pixelsize=14;1" + +modules-center = mpd player-mpris-tail + +[bar/laptop-top] +monitor = ${env:MONITOR:e-DP1} +width = 100% +height = 27 +;offset-x = 1% +;offset-y = 1% +radius = 6.0 +fixed-center = false + +background = ${colors.background} +foreground = ${colors.foreground} + +line-size = 3 +line-color = #f00 + +border-size = 0 +border-color = #00000000 + +padding-left = 0 +padding-right = 2 + +module-margin-left = 1 +module-margin-right = 2 + +font-0 = DejaVuSansMono Nerd Font Mono:pixelsize=14 +font-1 = "Wuncon Siji:pixelsize=14;1" + +modules-left = i3 +modules-center = tun0 tun1 wlan bluetooth +modules-right = github updates-arch-combined battery xbacklight filesystem volume-laptop memory cpu temperature date + +tray-position = right +tray-padding = 0 +;tray-transparent = true +;tray-background = #0063ff + +;wm-restack = bspwm +;wm-restack = i3 + +;override-redirect = true + +;scroll-up = bspwm-desknext +;scroll-down = bspwm-deskprev + +;scroll-up = i3wm-wsnext +;scroll-down = i3wm-wsprev + +scroll-up = i3wm-wsnext +scroll-down = i3wm-wsprev + +[bar/monitor1] +monitor = ${env:MONITOR:DP-1} +width = 100% +height = 27 +;offset-x = 1% +;offset-y = 1% +radius = 6.0 +fixed-center = false + +background = ${colors.background} +foreground = ${colors.foreground} + +line-size = 3 +line-color = #f00 + +border-size = 0 +border-color = #00000000 + +padding-left = 0 +padding-right = 2 + +module-margin-left = 1 +module-margin-right = 2 + +font-0 = DejaVuSansMono Nerd Font Mono:pixelsize=10 +font-1 = "Wuncon Siji:pixelsize=10;1" + +modules-left = i3 +modules-center = mpd player-mpris-tail +modules-right = github updates-arch-combined bluetooth eth filesystem volume memory cpu temperature date + +tray-position = right +tray-padding = 0 +;tray-transparent = true +;tray-background = #0063ff + +;wm-restack = bspwm +;wm-restack = i3 + +;override-redirect = true + +;scroll-up = bspwm-desknext +;scroll-down = bspwm-deskprev + +;scroll-up = i3wm-wsnext +;scroll-down = i3wm-wsprev + +scroll-up = i3wm-wsnext +scroll-down = i3wm-wsprev + +[module/xwindow] +type = internal/xwindow +label = %title:0:30:...% + +[module/xkeyboard] +type = internal/xkeyboard +blacklist-0 = num lock + +format-prefix = " " +format-prefix-foreground = ${colors.foreground-alt} +format-prefix-underline = ${colors.secondary} + +label-layout = %layout% +label-layout-underline = ${colors.secondary} + +label-indicator-padding = 2 +label-indicator-margin = 1 +label-indicator-background = ${colors.secondary} +label-indicator-underline = ${colors.secondary} + +[module/filesystem] +type = internal/fs +interval = 25 + +mount-0 = / +mount-1 = /home + +label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %percentage_used%% +label-unmounted = %mountpoint% not mounted +label-unmounted-foreground = ${colors.foreground-alt} + +[module/bspwm] +type = internal/bspwm + +label-focused = %index% +label-focused-background = ${colors.background-alt} +label-focused-underline= ${colors.primary} +label-focused-padding = 2 + +label-occupied = %index% +label-occupied-padding = 2 + +label-urgent = %index%! +label-urgent-background = ${colors.alert} +label-urgent-padding = 2 + +label-empty = %index% +label-empty-foreground = ${colors.foreground-alt} +label-empty-padding = 2 + +[module/i3] +type = internal/i3 +format = +index-sort = true +wrapping-scroll = false + +; Only show workspaces on the same output as the bar +;pin-workspaces = true + +label-mode-padding = 2 +label-mode-foreground = #000 +label-mode-background = ${colors.primary} + +; focused = Active workspace on focused monitor +label-focused = %index% +label-focused-background = ${module/bspwm.label-focused-background} +label-focused-underline = ${module/bspwm.label-focused-underline} +label-focused-padding = ${module/bspwm.label-focused-padding} + +; unfocused = Inactive workspace on any monitor +label-unfocused = %index% +label-unfocused-padding = ${module/bspwm.label-occupied-padding} + +; visible = Active workspace on unfocused monitor +label-visible = %index% +label-visible-background = ${self.label-focused-background} +label-visible-underline = ${self.label-focused-underline} +label-visible-padding = ${self.label-focused-padding} + +; urgent = Workspace with urgency hint set +label-urgent = %index% +label-urgent-background = ${module/bspwm.label-urgent-background} +label-urgent-padding = ${module/bspwm.label-urgent-padding} + +[module/mpd] +type = internal/mpd +format-online = + +icon-prev =  +icon-stop =  +icon-play =  +icon-pause =  +icon-next =  + +label-song-maxlen = 25 +label-song-ellipsis = true + +[module/xbacklight] +type = internal/xbacklight + +format =