Compare commits

...

11 commits

Author SHA1 Message Date
Alexis Jhon Gaspar 84c403c9c1 Replacing layoutmenu baackend with jgmenu
- Included jgmenu configs
- Replaced spmenu with jgmenu for the script backend
- SeamlessRestart integrated in dwm
- xmenu backend still available, though it is redundant (due to dwmc)
2023-09-29 22:25:56 +08:00
Alexis Jhon Gaspar ec53f34089 Fix shmenu_run 2023-09-28 21:18:16 +08:00
Alexis Jhon Gaspar ebadb8de62 Add shmenu 2023-09-28 21:14:13 +08:00
Alexis Jhon Gaspar 364186e5f0 Fix shutdown 2023-09-28 20:45:55 +08:00
Alexis Jhon Gaspar 6cd1cfa3e7 Fix restart 2023-09-28 20:42:30 +08:00
Alexis Jhon Gaspar e5579fbe55 Shutdown script updated to allow nonroot access 2023-09-28 20:40:53 +08:00
Alexis Jhon Gaspar 18ff5c566b Shutdown script now on bottom 2023-09-28 20:36:27 +08:00
Alexis Jhon Gaspar 9be2076344 Shutdown script now on bottom 2023-09-28 20:30:51 +08:00
Alexis Jhon Gaspar 53e62e8a80 Layoutmenu for spmenu fix & shutdown menu placement 2023-09-28 20:29:26 +08:00
Alexis Jhon Gaspar da3a9f56b7 Fix layoutmenu 2023-09-28 20:20:36 +08:00
Alexis Jhon Gaspar 7f782d4243 Fix layoutmenu 2023-09-28 20:20:07 +08:00
24 changed files with 3025 additions and 105 deletions

9
.gitmodules vendored
View file

@ -16,3 +16,12 @@
[submodule "sfm"]
path = sfm
url = https://github.com/afify/sfm.git
[submodule "dvtm"]
path = dvtm
url = https://github.com/martanne/dvtm.git
[submodule "abduco"]
path = abduco
url = https://github.com/martanne/abduco.git
[submodule "shmenu"]
path = shmenu
url = https://github.com/Crestwave/shmenu

View file

@ -6,6 +6,7 @@ This was designed to save me some sanity in maintaining it as well as easily int
## Included software
### X11
- dwm
- dmenu
- st
@ -16,6 +17,11 @@ This was designed to save me some sanity in maintaining it as well as easily int
- dwmblocks-async
- slock
### Terminal
- dvtm
- abduco
- shmenu
## Notes
### eww notes

1
abduco Submodule

@ -0,0 +1 @@
Subproject commit 8c32909a159aaa9484c82b71f05b7a73321eb491

74
config/jgmenu/jgmenurc Normal file
View file

@ -0,0 +1,74 @@
# verbosity = 0
# stay_alive = 1
# persistent = 0
# hide_on_startup = 0
# csv_cmd = apps
# tint2_look = 0
# position_mode = fixed
# edge_snap_x = 30
# terminal_exec = x-terminal-emulator
# terminal_args = -e
# monitor = 0
# hover_delay = 100
# hide_back_items = 1
# columns = 1
# tabs = 120
# menu_margin_x = 0
# menu_margin_y = 0
# menu_width = 200
# menu_height_min = 0
# menu_height_max = 0
# menu_height_mode = static
# menu_padding_top = 5
# menu_padding_right = 5
# menu_padding_bottom = 5
# menu_padding_left = 5
# menu_radius = 1
# menu_border = 0
# menu_halign = left
# menu_valign = bottom
# menu_gradient_pos = none
# sub_spacing = 1
# sub_padding_top = auto
# sub_padding_right = auto
# sub_padding_bottom = auto
# sub_padding_left = auto
# sub_hover_action = 1
# item_margin_x = 3
# item_margin_y = 3
# item_height = 25
# item_padding_x = 4
# item_radius = 1
# item_border = 0
# item_halign = left
# sep_height = 5
# sep_halign = left
# sep_markup =
font = HackNerdFont 12
font_fallback = xtg
icon_size = 22
# icon_text_spacing = 10
# icon_norm_alpha = 100
# icon_sel_alpha = 100
icon_theme = breeze-dark
icon_theme_fallback = xtg
arrow_string = ▸
arrow_width = 15
color_menu_bg = #112245 100
# color_menu_bg_to = #000000 100
color_menu_border = #648BBD 100
color_norm_bg = #112245 100
color_norm_fg = #a9c3d9 100
color_sel_bg = #648BBD 100
color_sel_fg = #112245 100
color_sel_border = #648BBD 8
color_sep_fg = #386CA8 20
color_scroll_ind = #4479B2 100
color_title_fg = #a9c3d9 50
color_title_bg = #112245 0
color_title_border = #112245 0
# csv_name_format = %n (%g)
# csv_single_window = 0
# csv_no_dirs = 0
# csv_i18n =
# csv_no_duplicates = 0

View file

@ -0,0 +1,75 @@
! X colors.
! Generated by 'wal'
*foreground: {foreground}
*background: {background}
*.foreground: {foreground}
*.background: {background}
emacs*foreground: {foreground}
emacs*background: {background}
URxvt*foreground: {foreground}
XTerm*foreground: {foreground}
UXTerm*foreground: {foreground}
URxvt*background: {background.alpha}
XTerm*background: {background}
UXTerm*background: {background}
URxvt*cursorColor: {cursor}
XTerm*cursorColor: {cursor}
UXTerm*cursorColor: {cursor}
URxvt*borderColor: {background.alpha}
! Colors 0-15.
*.color0: {color0}
*color0: {color0}
*.color1: {color1}
*color1: {color1}
*.color2: {color2}
*color2: {color2}
*.color3: {color3}
*color3: {color3}
*.color4: {color4}
*color4: {color4}
*.color5: {color5}
*color5: {color5}
*.color6: {color6}
*color6: {color6}
*.color7: {color7}
*color7: {color7}
*.color8: {color8}
*color8: {color8}
*.color9: {color9}
*color9: {color9}
*.color10: {color10}
*color10: {color10}
*.color11: {color11}
*color11: {color11}
*.color12: {color12}
*color12: {color12}
*.color13: {color13}
*color13: {color13}
*.color14: {color14}
*color14: {color14}
*.color15: {color15}
*color15: {color15}
! Black color that will not be affected by bold highlighting.
*.color66: {color0}
*color66: {color0}
! Xclock colors.
XClock*foreground: {foreground}
XClock*background: {background}
XClock*majorColor: rgba:{color15.xrgba}
XClock*minorColor: rgba:{color15.xrgba}
XClock*hourColor: rgba:{color15.xrgba}
XClock*minuteColor: rgba:{color15.xrgba}
XClock*secondColor: rgba:{color15.xrgba}
! Set depth to make transparency work.
URxvt*depth: 32
! XMenu entries
XMenu.activeBackground: {color6}
XMenu.activeForeground: {color0}
XMenu.borderColor: {color6}
XMenu.faceName: Hack Nerd Font
XMenu.faceSize: 12

View file

@ -0,0 +1,462 @@
# See dunst(5) for all configuration options
[global]
### Display ###
# Which monitor should the notifications be displayed on.
monitor = 0
# Display notification on focused monitor. Possible modes are:
# mouse: follow mouse pointer
# keyboard: follow window with keyboard focus
# none: don't follow anything
#
# "keyboard" needs a window manager that exports the
# _NET_ACTIVE_WINDOW property.
# This should be the case for almost all modern window managers.
#
# If this option is set to mouse or keyboard, the monitor option
# will be ignored.
follow = none
### Geometry ###
# dynamic width from 0 to 300
# width = (0, 300)
# constant width of 300
width = 300
# The maximum height of a single notification, excluding the frame.
height = 600
# Position the notification in the top right corner
origin = top-right
# Offset from the origin
offset = 10x50
# Scale factor. It is auto-detected if value is 0.
scale = 0
# Maximum number of notification (0 means no limit)
notification_limit = 20
### Progress bar ###
# Turn on the progess bar. It appears when a progress hint is passed with
# for example dunstify -h int:value:12
progress_bar = true
# Set the progress bar height. This includes the frame, so make sure
# it's at least twice as big as the frame width.
progress_bar_height = 5
# Set the frame width of the progress bar
progress_bar_frame_width = 1
# Set the minimum width for the progress bar
progress_bar_min_width = 150
# Set the maximum width for the progress bar
progress_bar_max_width = 300
# Corner radius for the progress bar. 0 disables rounded corners.
progress_bar_corner_radius = 0
# Corner radius for the icon image.
icon_corner_radius = 0
# Show how many messages are currently hidden (because of
# notification_limit).
indicate_hidden = yes
# The transparency of the window. Range: [0; 100].
# This option will only work if a compositing window manager is
# present (e.g. xcompmgr, compiz, etc.). (X11 only)
transparency = 10
# Draw a line of "separator_height" pixel height between two
# notifications.
# Set to 0 to disable.
# If gap_size is greater than 0, this setting will be ignored.
separator_height = 2
# Padding between text and separator.
padding = 8
# Horizontal padding.
horizontal_padding = 8
# Padding between text and icon.
text_icon_padding = 0
# Defines width in pixels of frame around the notification window.
# Set to 0 to disable.
frame_width = 3
# Defines color of the frame around the notification window.
frame_color = "{color1}"
# Size of gap to display between notifications - requires a compositor.
# If value is greater than 0, separator_height will be ignored and a border
# of size frame_width will be drawn around each notification instead.
# Click events on gaps do not currently propagate to applications below.
gap_size = 0
# Define a color for the separator.
# possible values are:
# * auto: dunst tries to find a color fitting to the background;
# * foreground: use the same color as the foreground;
# * frame: use the same color as the frame;
# * anything else will be interpreted as a X color.
separator_color = frame
# Sort messages by urgency.
sort = yes
# Don't remove messages, if the user is idle (no mouse or keyboard input)
# for longer than idle_threshold seconds.
# Set to 0 to disable.
# A client can set the 'transient' hint to bypass this. See the rules
# section for how to disable this if necessary
# idle_threshold = 120
### Text ###
font = "Hack Nerd Font 10"
# The spacing between lines. If the height is smaller than the
# font height, it will get raised to the font height.
line_height = 0
# Possible values are:
# full: Allow a small subset of html markup in notifications:
# <b>bold</b>
# <i>italic</i>
# <s>strikethrough</s>
# <u>underline</u>
#
# For a complete reference see
# <https://docs.gtk.org/Pango/pango_markup.html>.
#
# strip: This setting is provided for compatibility with some broken
# clients that send markup even though it's not enabled on the
# server. Dunst will try to strip the markup but the parsing is
# simplistic so using this option outside of matching rules for
# specific applications *IS GREATLY DISCOURAGED*.
#
# no: Disable markup parsing, incoming notifications will be treated as
# plain text. Dunst will not advertise that it has the body-markup
# capability if this is set as a global setting.
#
# It's important to note that markup inside the format option will be parsed
# regardless of what this is set to.
markup = full
# The format of the message. Possible variables are:
# %a appname
# %s summary
# %b body
# %i iconname (including its path)
# %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing
# %n progress value if set without any extra characters
# %% Literal %
# Markup is allowed
format = "<b>%a</b>\n<i>%s</i>\n%b"
# Alignment of message text.
# Possible values are "left", "center" and "right".
alignment = left
# Vertical alignment of message text and icon.
# Possible values are "top", "center" and "bottom".
vertical_alignment = center
# Show age of message if message is older than show_age_threshold
# seconds.
# Set to -1 to disable.
show_age_threshold = 60
# Specify where to make an ellipsis in long lines.
# Possible values are "start", "middle" and "end".
ellipsize = middle
# Ignore newlines '\n' in notifications.
ignore_newline = no
# Stack together notifications with the same content
stack_duplicates = true
# Hide the count of stacked notifications with the same content
hide_duplicate_count = false
# Display indicators for URLs (U) and actions (A).
show_indicators = yes
### Icons ###
# Recursive icon lookup. You can set a single theme, instead of having to
# define all lookup paths.
enable_recursive_icon_lookup = true
# Set icon theme (only used for recursive icon lookup)
icon_theme = "breeze-dark, Adwaita"
# You can also set multiple icon themes, with the leftmost one being used first.
# icon_theme = "Adwaita, breeze"
# Align icons left/right/top/off
icon_position = left
# Scale small icons up to this size, set to 0 to disable. Helpful
# for e.g. small files or high-dpi screens. In case of conflict,
# max_icon_size takes precedence over this.
min_icon_size = 32
# Scale larger icons down to this size, set to 0 to disable
max_icon_size = 32
# Paths to default icons (only neccesary when not using recursive icon lookup)
icon_path = /usr/share/icons/breeze-dark/16/status/:/usr/share/icons/breeze-dark/16/devices/
### History ###
# Should a notification popped up from history be sticky or timeout
# as if it would normally do.
sticky_history = yes
# Maximum amount of notifications kept in history
history_length = 20
### Misc/Advanced ###
# dmenu path.
dmenu = /usr/local/bin/spmenu -p dunst:
# Browser for opening urls in context menu.
browser = /usr/bin/xdg-open
# Always run rule-defined scripts, even if the notification is suppressed
always_run_script = true
# Define the title of the windows spawned by dunst
title = Dunst
# Define the class of the windows spawned by dunst
class = Dunst
# Define the corner radius of the notification window
# in pixel size. If the radius is 0, you have no rounded
# corners.
# The radius will be automatically lowered if it exceeds half of the
# notification height to avoid clipping text and/or icons.
corner_radius = 0
# Ignore the dbus closeNotification message.
# Useful to enforce the timeout set by dunst configuration. Without this
# parameter, an application may close the notification sent before the
# user defined timeout.
ignore_dbusclose = false
### Wayland ###
# These settings are Wayland-specific. They have no effect when using X11
# Uncomment this if you want to let notications appear under fullscreen
# applications (default: overlay)
# layer = top
# Set this to true to use X11 output on Wayland.
force_xwayland = false
### Legacy
# Use the Xinerama extension instead of RandR for multi-monitor support.
# This setting is provided for compatibility with older nVidia drivers that
# do not support RandR and using it on systems that support RandR is highly
# discouraged.
#
# By enabling this setting dunst will not be able to detect when a monitor
# is connected or disconnected which might break follow mode if the screen
# layout changes.
force_xinerama = false
### mouse
# Defines list of actions for each mouse event
# Possible values are:
# * none: Don't do anything.
# * do_action: Invoke the action determined by the action_name rule. If there is no
# such action, open the context menu.
# * open_url: If the notification has exactly one url, open it. If there are multiple
# ones, open the context menu.
# * close_current: Close current notification.
# * close_all: Close all notifications.
# * context: Open context menu for the notification.
# * context_all: Open context menu for all notifications.
# These values can be strung together for each mouse event, and
# will be executed in sequence.
mouse_left_click = close_current
mouse_middle_click = do_action, close_current
mouse_right_click = close_all
# Experimental features that may or may not work correctly. Do not expect them
# to have a consistent behaviour across releases.
[experimental]
# Calculate the dpi to use on a per-monitor basis.
# If this setting is enabled the Xft.dpi value will be ignored and instead
# dunst will attempt to calculate an appropriate dpi value for each monitor
# using the resolution and physical size. This might be useful in setups
# where there are multiple screens with very different dpi values.
per_monitor_dpi = false
[urgency_low]
# IMPORTANT: colors have to be defined in quotation marks.
# Otherwise the "#" and following would be interpreted as a comment.
background = "{color0}"
foreground = "{color8}"
highlight = "{color5}"
timeout = 10
# Icon for notifications with low urgency, uncomment to enable
#default_icon = /path/to/icon
[urgency_normal]
background = "{color0}"
foreground = "{color15}"
highlight = "{color5}"
timeout = 10
# Icon for notifications with normal urgency, uncomment to enable
#default_icon = /path/to/icon
[urgency_critical]
background = "{color13}"
foreground = "{color0}"
highlight = "{color5}"
# frame_color = "#ff0000"
timeout = 0
# Icon for notifications with critical urgency, uncomment to enable
#default_icon = /path/to/icon
# Every section that isn't one of the above is interpreted as a rules to
# override settings for certain messages.
#
# Messages can be matched by
# appname (discouraged, see desktop_entry)
# body
# category
# desktop_entry
# icon
# match_transient
# msg_urgency
# stack_tag
# summary
#
# and you can override the
# background
# foreground
# format
# frame_color
# fullscreen
# new_icon
# set_stack_tag
# set_transient
# set_category
# timeout
# urgency
# icon_position
# skip_display
# history_ignore
# action_name
# word_wrap
# ellipsize
# alignment
# hide_text
#
# Shell-like globbing will get expanded.
#
# Instead of the appname filter, it's recommended to use the desktop_entry filter.
# GLib based applications export their desktop-entry name. In comparison to the appname,
# the desktop-entry won't get localized.
#
# SCRIPTING
# You can specify a script that gets run when the rule matches by
# setting the "script" option.
# The script will be called as follows:
# script appname summary body icon urgency
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
#
# NOTE: It might be helpful to run dunst -print in a terminal in order
# to find fitting options for rules.
# Disable the transient hint so that idle_threshold cannot be bypassed from the
# client
#[transient_disable]
# match_transient = yes
# set_transient = no
#
# Make the handling of transient notifications more strict by making them not
# be placed in history.
#[transient_history_ignore]
# match_transient = yes
# history_ignore = yes
# fullscreen values
# show: show the notifications, regardless if there is a fullscreen window opened
# delay: displays the new notification, if there is no fullscreen window active
# If the notification is already drawn, it won't get undrawn.
# pushback: same as delay, but when switching into fullscreen, the notification will get
# withdrawn from screen again and will get delayed like a new notification
#[fullscreen_delay_everything]
# fullscreen = delay
#[fullscreen_show_critical]
# msg_urgency = critical
# fullscreen = show
#[espeak]
# summary = "*"
# script = dunst_espeak.sh
#[script-test]
# summary = "*script*"
# script = dunst_test.sh
#[ignore]
# # This notification will not be displayed
# summary = "foobar"
# skip_display = true
#[history-ignore]
# # This notification will not be saved in history
# summary = "foobar"
# history_ignore = yes
#[skip-display]
# # This notification will not be displayed, but will be included in the history
# summary = "foobar"
# skip_display = yes
#[signed_on]
# appname = Pidgin
# summary = "*signed on*"
# urgency = low
#
#[signed_off]
# appname = Pidgin
# summary = *signed off*
# urgency = low
#
#[says]
# appname = Pidgin
# summary = *says*
# urgency = critical
#
#[twitter]
# appname = Pidgin
# summary = *twitter.com*
# urgency = normal
#
#[stack-volumes]
# appname = "some_volume_notifiers"
# set_stack_tag = "volume"
#
# vim: ft=cfg

View file

@ -0,0 +1,74 @@
# verbosity = 0
# stay_alive = 1
# persistent = 0
# hide_on_startup = 0
# csv_cmd = apps
# tint2_look = 0
# position_mode = fixed
# edge_snap_x = 30
# terminal_exec = x-terminal-emulator
# terminal_args = -e
# monitor = 0
# hover_delay = 100
# hide_back_items = 1
# columns = 1
# tabs = 120
# menu_margin_x = 0
# menu_margin_y = 0
# menu_width = 200
# menu_height_min = 0
# menu_height_max = 0
# menu_height_mode = static
# menu_padding_top = 5
# menu_padding_right = 5
# menu_padding_bottom = 5
# menu_padding_left = 5
# menu_radius = 1
# menu_border = 0
# menu_halign = left
# menu_valign = bottom
# menu_gradient_pos = none
# sub_spacing = 1
# sub_padding_top = auto
# sub_padding_right = auto
# sub_padding_bottom = auto
# sub_padding_left = auto
# sub_hover_action = 1
# item_margin_x = 3
# item_margin_y = 3
# item_height = 25
# item_padding_x = 4
# item_radius = 1
# item_border = 0
# item_halign = left
# sep_height = 5
# sep_halign = left
# sep_markup =
font = HackNerdFont 12
font_fallback = xtg
icon_size = 22
# icon_text_spacing = 10
# icon_norm_alpha = 100
# icon_sel_alpha = 100
icon_theme = breeze-dark
icon_theme_fallback = xtg
arrow_string = ▸
arrow_width = 15
color_menu_bg = {color0} 100
# color_menu_bg_to = #000000 100
color_menu_border = {color5} 100
color_norm_bg = {color0} 100
color_norm_fg = {color15} 100
color_sel_bg = {color5} 100
color_sel_fg = {color0} 100
color_sel_border = {color5} 8
color_sep_fg = {color1} 20
color_scroll_ind = {color2} 100
color_title_fg = {color15} 50
color_title_bg = {color0} 0
color_title_border = {color0} 0
# csv_name_format = %n (%g)
# csv_single_window = 0
# csv_no_dirs = 0
# csv_i18n =
# csv_no_duplicates = 0

1
dvtm Submodule

@ -0,0 +1 @@
Subproject commit 7bcf43f8dbd5c4a67ec573a1248114caa75fa3c2

View file

@ -52,7 +52,8 @@ ifdef YAJLLIBS
cp -f dwm-msg ${DESTDIR}${PREFIX}/bin
endif
cp -f patch/dwmc ${DESTDIR}${PREFIX}/bin
cp -f patch/layoutmenu.sh ${DESTDIR}${PREFIX}/bin
cp -f ../scripts/layoutmenu ${DESTDIR}${PREFIX}/bin
cp -f ../scripts/shutdown ${DESTDIR}${PREFIX}/bin
chmod 755 ${DESTDIR}${PREFIX}/bin/dwm
ifdef YAJLLIBS
chmod 755 ${DESTDIR}${PREFIX}/bin/dwm-msg

View file

@ -97,7 +97,8 @@ static const int vertpadbar = 0; /* vertical padding for statusba
static const char buttonbar[] = "󰕰 Start";
static const char buttonbar2[] = " st";
static const char buttonbar3[] = " Firefox";
static const char buttonbar4[] = "Layouts";
static const char buttonbar4[] = "󰝚 mpd";
static const char buttonbar5[] = "󰍃 󰐥 Power";
#endif // BAR_STATUSBUTTON_PATCH
#if BAR_SYSTRAY_PATCH
static const unsigned int systrayspacing = 2; /* systray spacing */
@ -554,6 +555,7 @@ static const BarRule barrules[] = {
{ -1, 0, BAR_ALIGN_LEFT, width_stbutton, draw_stbutton, click_stbutton, NULL, "statusbutton" },
{ -1, 1, BAR_ALIGN_LEFT, width_stbutton2, draw_stbutton2, click_stbutton2, NULL, "statusbutton2" },
{ -1, 1, BAR_ALIGN_LEFT, width_stbutton3, draw_stbutton3, click_stbutton3, NULL, "statusbutton3" },
{ -1, 1, BAR_ALIGN_LEFT, width_stbutton4, draw_stbutton4, click_stbutton4, NULL, "statusbutton4" },
#endif // BAR_STATUSBUTTON_PATCH
#if BAR_POWERLINE_TAGS_PATCH
{ 0, 0, BAR_ALIGN_LEFT, width_pwrl_tags, draw_pwrl_tags, click_pwrl_tags, NULL, "powerline_tags" },
@ -570,12 +572,12 @@ static const BarRule barrules[] = {
#if BAR_SYSTRAY_PATCH
{ 0, 0, BAR_ALIGN_RIGHT, width_systray, draw_systray, click_systray, NULL, "systray" },
#endif // BAR_SYSTRAY_PATCH
#if BAR_STATUSBUTTON_PATCH
{ -1, 1, BAR_ALIGN_RIGHT, width_stbutton5, draw_stbutton5, click_stbutton5, NULL, "statusbutton5" },
#endif // BAR_STATUSBUTTON_PATCH
#if BAR_LTSYMBOL_PATCH
{ -1, 0, BAR_ALIGN_LEFT, width_ltsymbol, draw_ltsymbol, click_ltsymbol, NULL, "layout" },
#endif // BAR_LTSYMBOL_PATCH
#if BAR_STATUSBUTTON_PATCH
{ -1, 0, BAR_ALIGN_LEFT, width_stbutton4, draw_stbutton4, click_stbutton4, NULL, "statusbutton4" },
#endif // BAR_STATUSBUTTON_PATCH
#if BAR_STATUSCOLORS_PATCH && BAR_STATUSCMD_PATCH
{ statusmon, 0, BAR_ALIGN_RIGHT, width_statuscolors, draw_statuscolors, click_statuscmd, NULL, "statuscolors" },
#elif BAR_STATUSCOLORS_PATCH
@ -934,6 +936,7 @@ static const Key keys[] = {
{ Mod4Mask, XK_i, spawn, SHCMD("firefox") },
{ Mod4Mask, XK_e, spawn, SHCMD("st -T sfm sfm") },
{ Mod4Mask, XK_a, spawn, SHCMD("st -T ncmpcpp ncmpcpp") },
{ Mod4Mask|ShiftMask, XK_t, spawn, SHCMD("st -T dvtm abduco -c dvtm dvtm-status") },
#if KEYMODES_PATCH
{ MODKEY, XK_Escape, setkeymode, {.ui = COMMANDMODE} },
#endif // KEYMODES_PATCH
@ -1372,12 +1375,14 @@ static const Button buttons[] = {
{ ClkButton, 0, Button1, spawn, SHCMD("spmenu_run -d -a '-g 4 -l 10'") /* use spmenu instead of dmenu */ },
{ ClkButton2, 0, Button1, spawn, {.v = termcmd } },
{ ClkButton3, 0, Button1, spawn, SHCMD("firefox") },
{ ClkButton4, 0, Button1, spawn, SHCMD("st -T ncmpcpp ncmpcpp") },
{ ClkButton5, 0, Button1, spawn, SHCMD("shutdown") },
#endif // BAR_STATUSBUTTON_PATCH
{ ClkLtSymbol, 0, Button1, setlayout, {0} },
#if BAR_LAYOUTMENU_PATCH
{ ClkButton4, 0, Button1, layoutmenu, {0} },
{ ClkLtSymbol, 0, Button3, layoutmenu, {0} },
#else
{ ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} },
{ ClkLtSymbol, 0, Button3, spawn, SHCMD("layoutmenu") },
#endif // BAR_LAYOUTMENU_PATCH
#if BAR_WINTITLEACTIONS_PATCH
{ ClkWinTitle, 0, Button1, togglewin, {0} },

View file

@ -235,6 +235,7 @@ enum {
ClkButton2,
ClkButton3,
ClkButton4,
ClkButton5,
#endif // BAR_STATUSBUTTON_PATCH
#if TAB_PATCH
ClkTabBar,

View file

@ -67,3 +67,20 @@ click_stbutton4(Bar *bar, Arg *arg, BarArg *a)
{
return ClkButton4;
}
int
width_stbutton5(Bar *bar, BarArg *a)
{
return TEXTW(buttonbar5);
}
int
draw_stbutton5(Bar *bar, BarArg *a)
{
return drw_text(drw, a->x, a->y, a->w, a->h, lrpad / 2, buttonbar5, 0, False);
}
int
click_stbutton5(Bar *bar, Arg *arg, BarArg *a)
{
return ClkButton5;
}

View file

@ -10,3 +10,6 @@ static int click_stbutton3(Bar *bar, Arg *arg, BarArg *a);
static int width_stbutton4(Bar *bar, BarArg *a);
static int draw_stbutton4(Bar *bar, BarArg *a);
static int click_stbutton4(Bar *bar, Arg *arg, BarArg *a);
static int width_stbutton5(Bar *bar, BarArg *a);
static int draw_stbutton5(Bar *bar, BarArg *a);
static int click_stbutton5(Bar *bar, Arg *arg, BarArg *a);

View file

@ -74,7 +74,7 @@
* - The text of the menu items is for display only. Name them however you want.
* https://dwm.suckless.org/patches/layoutmenu/
*/
#define BAR_LAYOUTMENU_PATCH 1
#define BAR_LAYOUTMENU_PATCH 0
/* Show layout symbol in bar */
#define BAR_LTSYMBOL_PATCH 1
@ -1008,7 +1008,7 @@
*
* The above is not persisted across reboots, however.
*/
#define SEAMLESS_RESTART_PATCH 0
#define SEAMLESS_RESTART_PATCH 1
/* As opposed to the original patch this only adds a rule option allowing fake fullscreen
* to be enabled for applications when they start. This is intended to be used in combination

View file

@ -2062,43 +2062,43 @@ printf "ă
JAPANESECOPY()
{
JAPANESE_LETTER_CHOICE="$(printf "$(JAPANESE_CHARACTERS_LIST)" | dmenu -l 5 -p 'Pick a character: ' | awk '{ print $1 }')"
JAPANESE_LETTER_CHOICE="$(printf "$(JAPANESE_CHARACTERS_LIST)" | spmenu -l 25 -g 1 -p 'Pick a character: ' | awk '{ print $1 }')"
printf "$JAPANESE_LETTER_CHOICE" | xclip -selection clipboard && notify-send "$JAPANESE_LETTER_CHOICE copied to clipboard."
}
ARABICCOPY()
{
ARABIC_LETTER_CHOICE="$(printf "$(ARABIC_CHARACTERS_LIST)" | dmenu -l 5 -p 'Pick a character: ' | awk '{ print $1 }')"
ARABIC_LETTER_CHOICE="$(printf "$(ARABIC_CHARACTERS_LIST)" | spmenu -l 25 -g 1 -p 'Pick a character: ' | awk '{ print $1 }')"
printf "$ARABIC_LETTER_CHOICE" | xclip -selection clipboard && notify-send "$ARABIC_LETTER_CHOICE copied to clipboard."
}
BAYBAINCOPY()
{
BAYBAIN_LETTER_CHOICE="$(printf "$(BAYBAIN_CHARACTERS_LIST)" | dmenu -l 5 -p 'Pick a character: ')"
BAYBAIN_LETTER_CHOICE="$(printf "$(BAYBAIN_CHARACTERS_LIST)" | spmenu -l 25 -g 1 -p 'Pick a character: ')"
printf "$BAYBAIN_LETTER_CHOICE" | xclip -selection clipboard && notify-send "$BAYBAIN_LETTER_CHOICE copied to clipboard."
}
SPANISHCOPY()
{
SPANISH_LETTER_CHOICE="$(printf "$(SPANISH_CHARACTERS_LIST)" | dmenu -l 5 -p 'Pick a character: ')"
SPANISH_LETTER_CHOICE="$(printf "$(SPANISH_CHARACTERS_LIST)" | spmenu -l 25 -g 1 -p 'Pick a character: ')"
printf "$SPANISH_LETTER_CHOICE" | xclip -selection clipboard && notify-send "$SPANISH_LETTER_CHOICE copied to clipboard."
}
CHINESECOPY()
{
CHINESE_LETTER_CHOICE="$(printf "$(CHINESE_CHARACTERS_LIST)" | dmenu -l 5 -p 'Pick a character: ')"
CHINESE_LETTER_CHOICE="$(printf "$(CHINESE_CHARACTERS_LIST)" | spmenu -l 25 -g 1 -p 'Pick a character: ')"
printf "$CHINESE_LETTER_CHOICE" | awk '{ print $1 }' | xclip -selection clipboard && notify-send "$(printf "$CHINESE_LETTER_CHOICE" | awk '{ print $1 }') copied to clipboard."
}
SWEDISHFINNISHCOPY()
{
SWEDISH_LETTER_CHOICE="$(printf "$(SWEDISH_FINNISH_CHARACTERS_LIST)" | dmenu -l 5 -p 'Pick a character: ')"
SWEDISH_LETTER_CHOICE="$(printf "$(SWEDISH_FINNISH_CHARACTERS_LIST)" | spmenu -l 25 -g 1 -p 'Pick a character: ')"
printf "$SWEDISH_LETTER_CHOICE" | xclip -selection clipboard && notify-send "$SWEDISH_LETTER_CHOICE copied to clipboard."
}
ROMANIANCOPY()
{
ROMANIAN_LETTER_CHOICE="$(printf "$(ROMANIAN_CHARACTERS_LIST)" | dmenu -l 5 -p 'Pick a character: ')"
ROMANIAN_LETTER_CHOICE="$(printf "$(ROMANIAN_CHARACTERS_LIST)" | spmenu -l 25 -g 1 -p 'Pick a character: ')"
printf "$ROMANIAN_LETTER_CHOICE" | xclip -selection clipboard && notify-send "$ROMANIAN_LETTER_CHOICE copied to clipboard."
}
@ -2112,13 +2112,13 @@ Stop using the term 'Open Source'. By supporting 'open source', you're not suppo
COPYPASTACOPY()
{
COPYPASTASEL="$(printf "$(COPYPASTALIST)" | dmenu -l 5 -p 'Pick a copypasta: ')"
COPYPASTASEL="$(printf "$(COPYPASTALIST)" | spmenu -l 25 -g 1 -p 'Pick a copypasta: ')"
printf "$COPYPASTASEL" | xclip -selection clipboard && notify-send "$COPYPASTASEL copied to clipboard."
}
EMOJICOPY()
{
EMOJISEL="$(printf "$(EMOJILIST)" | dmenu -l 5 -p 'Pick an emoji: ' | awk '{ print $1 }')"
EMOJISEL="$(printf "$(EMOJILIST)" | spmenu -l 25 -g 1 -p 'Pick an emoji: ' | awk '{ print $1 }')"
printf $EMOJISEL | xclip -selection clipboard && notify-send "$EMOJISEL copied to clipboard."
}
@ -2135,7 +2135,7 @@ DBOARD_ABOUT()
###########################################################
# Ask the user what they wanna do
ACTION=$(printf "Emoji\nCopypasta\nSwedish/Finnish letters\nSpanish letters\nChinese letters\nJapanese letters\nBaybain letters\nArabic letters\nRomanian letters\nCredits\nAbout\nExit" | dmenu -p 'What would you like to copy?' -l 20)
ACTION=$(printf "Emoji\nCopypasta\nSwedish/Finnish letters\nSpanish letters\nChinese letters\nJapanese letters\nBaybain letters\nArabic letters\nRomanian letters\nCredits\nAbout\nExit" | spmenu -p 'What would you like to copy?' -l 20 -g 1)
if [ "$ACTION" = "Emoji" ]; then
EMOJICOPY
@ -2156,7 +2156,7 @@ ARABICCOPY
elif [ "$ACTION" = "Romanian letters" ]; then
ROMANIANCOPY
elif [ "$ACTION" = "Credits" ]; then
CREDIT_SEL=$(printf "$(DBOARD_CREDITS)" | dmenu -p 'dboard was created with the help of and by: ' -l 20 -g 1)
CREDIT_SEL=$(printf "$(DBOARD_CREDITS)" | spmenu -p 'dboard was created with the help of and by: ' -l 20 -g 1)
case "$CREDIT_SEL" in
"speedie - Wrote the script & Swedish characters") $BROWSER 'https://speedie.gq' ;;
"jornmann - Helped out with some code") $BROWSER 'https://donut.gq' ;;
@ -2168,7 +2168,7 @@ esac
elif [ "$ACTION" = "Exit" ]; then
exit 0
elif [ "$ACTION" = "About" ]; then
printf "$(DBOARD_ABOUT)" | dmenu -p 'About dboard: ' -l 20 -g 1
printf "$(DBOARD_ABOUT)" | spmenu -p 'About dboard: ' -l 20 -g 1
fi
exit 0

View file

@ -1,83 +0,0 @@
#!/bin/sh
# Super basic dmenu calculator.
# Written by speedie
# Licensed under GNU GPLv3.
LIST_01()
{
printf "
0
1
2
3
4
5
6
7
8
9
0
Last
Previous Result
Quit"
}
VALUE_01=$(printf "$(LIST_01)" | dmenu -l 20 -p "dcalc") && printf "$VALUE_01" > /tmp/dcalc_val1
case "$VALUE_01" in
"Last") VALUE_01=$(cat /tmp/dcalc_val1) ;;
"Quit") exit 0 ;;
"Previous Result") VALUE_01=$(cat /tmp/dcalc-result) ;;
"") exit 0 ;;
esac
LIST_02()
{
printf "
+
-
×
÷
Quit
Last"
}
VALUE_02=$(printf "$(LIST_02)" | dmenu -l 20 -p "dcalc") && printf "$VALUE_02" > /tmp/dcalc_val2
case "$VALUE_02" in
"Last") VALUE_02=$(cat /tmp/dcalc_val2) ;;
"×") VALUE_02="*" ;;
"÷") VALUE_02="/" ;;
"Quit") exit 0 ;;
esac
LIST_03()
{
printf "
0
1
2
3
4
5
6
7
8
9
0
Quit
Previous Result
Last"
}
VALUE_03=$(printf "$(LIST_03)" | dmenu -l 20 -p "dcalc") && printf "$VALUE_03" > /tmp/dcalc_val3
case "$VALUE_03" in
"Last") VALUE_03=$(cat /tmp/dcalc_val3) ;;
"Previous Result") VALUE_03=$(cat /tmp/dcalc-result) ;;
"Quit") exit 0 ;;
"") exit 0 ;;
esac
RESULT=$(expr ${VALUE_01} "${VALUE_02}" ${VALUE_03})
printf "Result = $RESULT" | dmenu -l 1 | sed "s|Result = ||" | xclip -selection clipboard && notify-send "$RESULT copied to clipboard!"
printf "$RESULT" > /tmp/dcalc-result

View file

@ -1,7 +1,8 @@
#!/bin/sh
# This simple script uses dmenu to ask the user what they wanna do.
USER_OPT1=$(printf "Shutdown\nReboot\nExit\nLock\nKill X" | dmenu -b -l 5 -p "What do you wanna do?" -nb "#DC143C")
USER_OPT1=$(printf "Shutdown\nReboot\nExit\nLock\nKill X" | spmenu -l 5 -g 1 -p "What do you wanna do?")
case "$USER_OPT1" in
"Shutdown") sudo shutdown now || doas shutdown now ;;

33
scripts/layoutmenu Executable file
View file

@ -0,0 +1,33 @@
#!/bin/sh
cat <<EOF | jgmenu --simple --at-pointer
(Flextile) Tiled, dwmc setlayoutex 0
(Flextile) Floating, dwmc setlayoutex 1
(Flextile) Monocle, dwmc setlayoutex 2
(Flextile) Columns, dwmc setlayoutex 3
(Flextile) Floating Master, dwmc setlayoutex 4
(Flextile) Deck, dwmc setlayoutex 5
(Flextile) Bottom Stack, dwmc setlayoutex 6
(Flextile) Bottom Stack Horizontal, dwmc setlayoutex 7
(Flextile) Centered Naster, dwmc setlayoutex 8
(Flextile) Centered Master Horizontal, dwmc setlayoutex 9
(Flextile) Gapless Grid, dwmc setlayoutex 10
(Flextile) Fibonacci Dwindle, dwmc setlayoutex 11
(Flextile) Fibonacci Spiral, dwmc setlayoutex 12
(Flextile) Tatami Tats, dwmc setlayoutex 13
Tiled, dwmc setlayoutex 14
Monocle, dwmc setlayoutex 15
Bottom Stack, dwmc setlayoutex 16
Bottom Stack Horizontal, dwmc setlayoutex 17
Centered Master, dwmc setlayoutex 18
Centered Floating Master, dwmc setlayoutexex 19
Columns, dwmc setlayoutexex 20
Deck, dwmc setlayoutexex 21
Fibonacci Spiral, dwmc setlayoutexex 22
Fibonacci Dwindle, dwmc setlayoutexex 23
Grid, dwmc setlayoutexex 24
Horizontal Grid, dwmc setlayoutexex 25
Gapless Grid, dwmc setlayoutexex 26
N-row Grid, dwmc setlayoutexexex 27
EOF

13
scripts/shmenu/shmenu_path Executable file
View file

@ -0,0 +1,13 @@
#!/bin/sh
cachedir="${XDG_CACHE_HOME:-"$HOME/.cache"}"
cache="$cachedir/dmenu_run"
[ ! -e "$cachedir" ] && mkdir -p "$cachedir"
IFS=:
if stest -dqr -n "$cache" $PATH; then
stest -flx $PATH | sort -u | tee "$cache"
else
cat "$cache"
fi

2
scripts/shmenu/shmenu_run Executable file
View file

@ -0,0 +1,2 @@
#!/bin/sh
shmenu_path | shmenu

13
scripts/shutdown Executable file
View file

@ -0,0 +1,13 @@
#!/bin/sh
# This simple script uses dmenu to ask the user what they wanna do.
# Only works with systemd for now.
cat <<EOF | jgmenu --simple --at-pointer
󰐥 Shutdown, systemctl poweroff
󰜉 Reboot, systemctl reboot
󰗼 Exit, dwmc quit
󰌾 Lock session, slock
󰤁 Suspend, systemctl suspend
󰤄 Hibernate, systemctl hibernate
󰚌 Kill X, xkill -a
EOF

37
scripts/spmenu/layoutmenu Executable file
View file

@ -0,0 +1,37 @@
#!/bin/sh
# This simple script uses dmenu to ask the user what they wanna do.
USER_OPT1=$(printf "[]= (Flextile) Tiled\n><> (Flextile) Floating\n[M] (Flextile) Monocle\n||| (Flextile) Columns\n>M> (Flextile) Floating Master\n[D] (Flextile) Deck\nTTT (Flextile) Bottom Stack\n=== (Flextile) Bottom Stack Horizontal\n|M| (Flextile) Centered Naster\n-M- (Flextile) Centered Master Horizontal\n::: (Flextile) Gapless Grid\n[\\] (Flextile) Fibonacci Dwindle\n(@) (Flextile) Fibonacci Spiral\n[T] (Flextile) Tatami Tats\n[]= Tiled\n[M] Monocle\nTTT Bottom Stack\n=== Bottom Stack Horizontal\n|M| Centered Master\n>M> Centered Floating Master\n||| Columns\n[D] Deck\n(@) Fibonacci Spiral\n[\\] Fibonacci Dwindle\nHHH Grid\n--- Horizontal Grid\n::: Gapless Grid\n### N-row Grid" | spmenu -l 10 -g 1 -p "[?] Layout?")
case "$USER_OPT1" in
"[]= (Flextile) Tiled") dwm-msg run_command setlayoutsafe 4313472 ;;
"><> (Flextile) Floating") dwm-msg run_command setlayoutsafe 4313520 ;;
"[M] (Flextile) Monocle") dwm-msg run_command setlayoutsafe 4313568 ;;
"||| (Flextile) Columns") dwm-msg run_command setlayoutsafe 4313616 ;;
">M> (Flextile) Floating Master") dwm-msg run_command setlayoutsafe 4313664 ;;
"[D] (Flextile) Deck") dwm-msg run_command setlayoutsafe 4313712 ;;
"TTT (Flextile) Bottom Stack") dwm-msg run_command setlayoutsafe 4313760 ;;
"=== (Flextile) Bottom Stack Horizontal") dwm-msg run_command setlayoutsafe 4313808 ;;
"|M| (Flextile) Centered Naster") dwm-msg run_command setlayoutsafe 4313856 ;;
"-M- (Flextile) Centered Master Horizontal") dwm-msg run_command setlayoutsafe 4313904 ;;
"::: (Flextile) Gapless Grid") dwm-msg run_command setlayoutsafe 4313952 ;;
"[\] (Flextile) Fibonacci Dwindle") dwm-msg run_command setlayoutsafe 4314000 ;;
"(@) (Flextile) Fibonacci Spiral") dwm-msg run_command setlayoutsafe 4314048 ;;
"[T] (Flextile) Tatami Tats") dwm-msg run_command setlayoutsafe 4314096 ;;
"[]= Tiled") dwm-msg run_command setlayoutsafe 4314144 ;;
"[M] Monocle") dwm-msg run_command setlayoutsafe 4314192 ;;
"TTT Bottom Stack") dwm-msg run_command setlayoutsafe 4314240 ;;
"=== Bottom Stack Horizontal") dwm-msg run_command setlayoutsafe 4314288 ;;
"|M| Centered Master") dwm-msg run_command setlayoutsafe 4314336 ;;
">M> Centered Floating Master") dwm-msg run_command setlayoutsafe 4314384 ;;
"||| Columns") dwm-msg run_command setlayoutsafe 4314432 ;;
"[D] Deck") dwm-msg run_command setlayoutsafe 4314480 ;;
"(@) Fibonacci Spiral") dwm-msg run_command setlayoutsafe 4314528 ;;
"[\] Fibonacci Dwindle") dwm-msg run_command setlayoutsafe 4314576 ;;
"HHH Grid") dwm-msg run_command setlayoutsafe 4314624 ;;
"--- Horizontal Grid") dwm-msg run_command setlayoutsafe 4314672 ;;
"::: Gapless Grid") dwm-msg run_command setlayoutsafe 4314720 ;;
"### N-row Grid") dwm-msg run_command setlayoutsafe 4314768 ;;
"") exit 0 ;;
esac

2174
scripts/spmenu/spboard Executable file

File diff suppressed because it is too large Load diff

1
shmenu Submodule

@ -0,0 +1 @@
Subproject commit 3e4cad8870fcc184e4494c7bf9489e93e1cee542