10 changed files with 897 additions and 29 deletions
			
			
		| @ -1,4 +1,5 @@ | ||||
| require("core.leader-key") | ||||
| require("core.config") | ||||
| require("core.buffers") | ||||
| require("core.autocommands") | ||||
| require("core.globals") | ||||
|  | ||||
| @ -0,0 +1,213 @@ | ||||
| local F = require("core.functions") | ||||
| 
 | ||||
| -- Module for managing buffers, these are used for navigation | ||||
| 
 | ||||
| local M = {} | ||||
| 
 | ||||
| -- Buffer table structure: | ||||
| -- { | ||||
| --     "Group" = { "buffer1", "buffer2", active_index = 1 } | ||||
| -- } | ||||
| M.buffers = {} | ||||
| 
 | ||||
| M.buffer_default_group = "Other" | ||||
| 
 | ||||
| M.buffer_matcher = { | ||||
| 	-- match = truthy, function() -> thruthy, or string matching buffer filename | ||||
| 	-- group = string, function() -> string | ||||
| 	{ match = F.find_project_root, group = F.find_project_root }, | ||||
| 	{ match = true,                group = "Other" }, -- default | ||||
| } | ||||
| 
 | ||||
| -------------------------------------------- | ||||
| 
 | ||||
| local get_buffer_name = function() | ||||
| 	local buf = vim.api.nvim_get_current_buf() | ||||
| 	local buffer_name = vim.api.nvim_buf_get_name(buf) | ||||
| 	if not buffer_name or buffer_name == "" then return nil end | ||||
| 	return buffer_name | ||||
| end | ||||
| 
 | ||||
| M.add_buffer = function() | ||||
| 	local buffer_name = get_buffer_name() | ||||
| 	if not buffer_name then return end | ||||
| 
 | ||||
| 	-- Evaluate group | ||||
| 	local eval_group = function(config_group) | ||||
| 		if not config_group then return M.buffer_default_group end | ||||
| 		if type(config_group) == "function" then return config_group() end | ||||
| 		return config_group | ||||
| 	end | ||||
| 
 | ||||
| 	-- Add if buffer does not exist yet | ||||
| 	local add = function(config_group) | ||||
| 		local group = eval_group(config_group) | ||||
| 		if not M.buffers[group] then M.buffers[group] = {} end | ||||
| 		for i, buffer in ipairs(M.buffers[group]) do | ||||
| 			if buffer == buffer_name then | ||||
| 				M.buffers[group]["active_index"] = i | ||||
| 				return group, i | ||||
| 			end | ||||
| 		end | ||||
| 
 | ||||
| 		table.insert(M.buffers[group], buffer_name) | ||||
| 		local count = #M.buffers[group] | ||||
| 		M.buffers[group]["active_index"] = count | ||||
| 
 | ||||
| 		return group, count | ||||
| 	end | ||||
| 
 | ||||
| 	-- Walk matcher configuration | ||||
| 	local matcher = M.buffer_matcher or {} | ||||
| 	if matcher and type(matcher) == "function" then | ||||
| 		matcher = matcher() | ||||
| 	end | ||||
| 	if #matcher == 0 then add(M.buffer_default_group) end | ||||
| 	for _, config in ipairs(M.buffer_matcher) do | ||||
| 		if type(config.match) == "function" and config.match() then | ||||
| 			return add(config.group) | ||||
| 		end | ||||
| 
 | ||||
| 		-- Match path's filename | ||||
| 		if type(config.match) == "string" and config.match == buffer_name:match("([^/]+)$") then | ||||
| 			return add(config.group) | ||||
| 		end | ||||
| 
 | ||||
| 		if type(config.match) == "boolean" and config.match then | ||||
| 			return add(config.group) | ||||
| 		end | ||||
| 	end | ||||
| 
 | ||||
| 	return add(M.buffer_default_group) | ||||
| end | ||||
| 
 | ||||
| local get_group_from_buffer = function(buffer_name) | ||||
| 	for group, buffers in pairs(M.buffers) do | ||||
| 		for i, buffer in ipairs(buffers) do | ||||
| 			if buffer == buffer_name then return group, i end | ||||
| 		end | ||||
| 	end | ||||
| 	return nil | ||||
| end | ||||
| 
 | ||||
| local buffer_action_in_active_group = function(action, direction) | ||||
| 	local buffer_name = get_buffer_name() | ||||
| 	if not buffer_name then return end | ||||
| 
 | ||||
| 	local group, index = get_group_from_buffer(buffer_name) | ||||
| 	if not group then group, index = M.add_buffer() end | ||||
| 
 | ||||
| 	local buffers = M.buffers[group] | ||||
|     if #buffers < 2 then return end | ||||
| 
 | ||||
| 	-- Determine the other index | ||||
| 	local other_index = index + direction | ||||
| 	if index == 1 and direction == -1 then | ||||
| 		other_index = #buffers | ||||
| 	elseif index == #buffers and direction == 1 then | ||||
| 		other_index = 1 | ||||
| 	end | ||||
| 
 | ||||
| 	if action == "move" then | ||||
| 		for _, buffer in ipairs(vim.api.nvim_list_bufs()) do | ||||
| 			-- Remove inactive buffers | ||||
| 			if not vim.api.nvim_buf_is_loaded(buffer) then | ||||
| 				for i, group_buffer in ipairs(buffers) do | ||||
| 					if buffer == group_buffer then | ||||
| 						table.remove(buffers, i) | ||||
| 						if i > 1 and i <= other_index then | ||||
| 							other_index = other_index - 1 | ||||
| 						end | ||||
| 					end | ||||
| 				end | ||||
| 
 | ||||
| 				goto continue | ||||
| 			end | ||||
| 
 | ||||
| 			-- Make buffer active | ||||
| 			if vim.api.nvim_buf_get_name(buffer) == buffers[other_index] then | ||||
| 				vim.api.nvim_set_current_buf(buffer) | ||||
| 				buffers.active_index = other_index | ||||
| 				break | ||||
| 			end | ||||
| 
 | ||||
| 			::continue:: | ||||
| 		end | ||||
| 	elseif action == "swap" then | ||||
| 		local tmp = buffers[other_index] | ||||
| 		buffers[other_index] = buffers[index] | ||||
| 		buffers[index] = tmp | ||||
| 	end | ||||
| 
 | ||||
| 	M.buffers[group] = buffers | ||||
| end | ||||
| 
 | ||||
| M.buffer_move_left = function() | ||||
| 	buffer_action_in_active_group("move", -1) | ||||
| end | ||||
| 
 | ||||
| M.buffer_move_right = function() | ||||
| 	buffer_action_in_active_group("move", 1) | ||||
| end | ||||
| 
 | ||||
| M.buffer_swap_left = function() | ||||
| 	buffer_action_in_active_group("swap", -1) | ||||
| end | ||||
| 
 | ||||
| M.buffer_swap_right = function() | ||||
| 	buffer_action_in_active_group("swap", 1) | ||||
| end | ||||
| 
 | ||||
| -------------------------------------------- | ||||
| -- Group move | ||||
| 
 | ||||
| local buffer_group_move = function(direction) | ||||
| 	local buffer_name = get_buffer_name() | ||||
| 	if not buffer_name then return end | ||||
| 
 | ||||
| 	-- TODO: How to get groups deterministically? | ||||
| 
 | ||||
| 	-- Get active group from the current buffer | ||||
| 
 | ||||
| 	-- Check groups bounds | ||||
| 
 | ||||
| 	-- Change active group | ||||
| end | ||||
| 
 | ||||
| M.buffer_group_move_up = function() | ||||
| 	buffer_group_move(-1) | ||||
| end | ||||
| 
 | ||||
| M.buffer_group_move_down = function() | ||||
| 	buffer_group_move(1) | ||||
| end | ||||
| 
 | ||||
| -- TODO: functions that can | ||||
| --   v Navigate buffer left | ||||
| --   v Navigate buffer right | ||||
| --   - Navigate group up (use active_index when swapping) | ||||
| --   - Navigate group down | ||||
| --   v Move buffer left | ||||
| --   v Move buffer right | ||||
| --   - Remove buffer from currently active group (decrease active_index) | ||||
| 
 | ||||
| return M | ||||
| 
 | ||||
| 
 | ||||
| -- (cond | ||||
| -- ((string-equal "*" (substring (buffer-name) 0 1)) "Emacs") | ||||
| -- ((or (memq major-mode '(magit-process-mode | ||||
| -- 						magit-status-mode | ||||
| -- 						magit-diff-mode | ||||
| -- 						magit-log-mode | ||||
| -- 						magit-file-mode | ||||
| -- 						magit-blob-mode | ||||
| -- 						magit-blame-mode)) | ||||
| -- 	(string= (buffer-name) "COMMIT_EDITMSG")) "Magit") | ||||
| -- ((project-current) (dot/project-project-name)) | ||||
| -- ((memq major-mode '(org-mode | ||||
| -- 					emacs-lisp-mode)) "Org Mode") | ||||
| -- ((derived-mode-p 'dired-mode) "Dired") | ||||
| -- ((derived-mode-p 'prog-mode | ||||
| -- 				'text-mode) "Editing") | ||||
| -- (t "Other"))))) | ||||
| @ -0,0 +1,586 @@ | ||||
| # ------------------------------------------------------------------------------ | ||||
| # /etc/tlp.conf - TLP user configuration (version 1.7.0) | ||||
| # See full explanation: https://linrunner.de/tlp/settings | ||||
| # | ||||
| # Copyright (c) 2024 Thomas Koch <linrunner at gmx.net> and others. | ||||
| # SPDX-License-Identifier: GPL-2.0-or-later | ||||
| # | ||||
| # Settings are read in the following order: | ||||
| # | ||||
| # 1. Intrinsic defaults | ||||
| # 2. /etc/tlp.d/*.conf - Drop-in customization snippets | ||||
| # 3. /etc/tlp.conf     - User configuration (this file) | ||||
| # | ||||
| # Notes: | ||||
| # - In case of identical parameters, the last occurence has precedence | ||||
| # - This also means, parameters enabled here will override anything else | ||||
| # - However you may append values to a parameter already defined as intrinsic | ||||
| #   default or in a previously read file: use PARAMETER+="add values" | ||||
| # - IMPORTANT: all parameters here are disabled; remove the leading '#' if you | ||||
| #   like to enable a feature without default or have a value different from the | ||||
| #   default | ||||
| # - Default *: intrinsic default that is effective when the parameter is missing | ||||
| #   or disabled by a leading '#'; use PARAM="" to disable an intrinsic default | ||||
| # - Default <none>: do nothing or use kernel/hardware defaults | ||||
| # - IMPORTANT: parameters must always be specified pairwise i.e. for | ||||
| #   both AC and BAT. Omitting one of the two makes the set value effective for | ||||
| #   both power sources, since a change only occurs when different values are | ||||
| #   defined. | ||||
| # ------------------------------------------------------------------------------ | ||||
| # tlp - Parameters for power saving | ||||
| 
 | ||||
| # Set to 0 to disable, 1 to enable TLP. | ||||
| # Default: 1 | ||||
| 
 | ||||
| #TLP_ENABLE=1 | ||||
| 
 | ||||
| # Control how warnings about invalid settings are issued: | ||||
| #   0=disabled, | ||||
| #   1=background tasks (boot, resume, change of power source) report to syslog, | ||||
| #   2=shell commands report to the terminal (stderr), | ||||
| #   3=combination of 1 and 2 | ||||
| # Default: 3 | ||||
| 
 | ||||
| #TLP_WARN_LEVEL=3 | ||||
| 
 | ||||
| # Colorize error, warning, notice and success messages. Colors are specified | ||||
| # with ANSI codes: | ||||
| #   1=bold black, 90=grey, 91=red, 92=green, 93=yellow, 94=blue, 95=magenta, | ||||
| #   96=cyan, 97=white. | ||||
| # Other colors are possible, refer to: | ||||
| #   https://en.wikipedia.org/wiki/ANSI_escape_code#3-bit_and_4-bit | ||||
| # Colors must be specified in the order "<error> <warning> <notice> <success>". | ||||
| # By default, errors are shown in red, warnings in yellow, notices in bold | ||||
| # and success in green. | ||||
| # Default: "91 93 1 92" | ||||
| 
 | ||||
| #TLP_MSG_COLORS="91 93 1 92" | ||||
| 
 | ||||
| # Operation mode when no power supply can be detected: AC, BAT. | ||||
| # Concerns some desktop and embedded hardware only. | ||||
| # Default: <none> | ||||
| 
 | ||||
| #TLP_DEFAULT_MODE=AC | ||||
| 
 | ||||
| # Operation mode select: 0=depend on power source, 1=always use TLP_DEFAULT_MODE | ||||
| # Note: use in conjunction with TLP_DEFAULT_MODE=BAT for BAT settings on AC. | ||||
| # Default: 0 | ||||
| 
 | ||||
| #TLP_PERSISTENT_DEFAULT=0 | ||||
| 
 | ||||
| # Power supply classes to ignore when determining operation mode: AC, USB, BAT. | ||||
| # Separate multiple classes with spaces. | ||||
| # Note: try on laptops where operation mode AC/BAT is incorrectly detected. | ||||
| # Default: <none> | ||||
| 
 | ||||
| #TLP_PS_IGNORE="BAT" | ||||
| 
 | ||||
| # Seconds laptop mode has to wait after the disk goes idle before doing a sync. | ||||
| # Non-zero value enables, zero disables laptop mode. | ||||
| # Default: 0 (AC), 2 (BAT) | ||||
| 
 | ||||
| #DISK_IDLE_SECS_ON_AC=0 | ||||
| #DISK_IDLE_SECS_ON_BAT=2 | ||||
| 
 | ||||
| # Dirty page values (timeouts in secs). | ||||
| # Default: 15 (AC), 60 (BAT) | ||||
| 
 | ||||
| #MAX_LOST_WORK_SECS_ON_AC=15 | ||||
| #MAX_LOST_WORK_SECS_ON_BAT=60 | ||||
| 
 | ||||
| # Select a CPU scaling driver operation mode. | ||||
| # Intel CPU with intel_pstate driver: | ||||
| #   active, passive. | ||||
| # AMD Zen 2 or newer CPU with amd-pstate driver as of kernel 6.3/6.4(*): | ||||
| #   active, passive, guided(*). | ||||
| # Default: <none> | ||||
| #CPU_DRIVER_OPMODE_ON_AC=active | ||||
| #CPU_DRIVER_OPMODE_ON_BAT=active | ||||
| 
 | ||||
| # Select a CPU frequency scaling governor. | ||||
| # Intel CPU with intel_pstate driver or | ||||
| # AMD CPU with amd-pstate driver in active mode ('amd-pstate-epp'): | ||||
| #   performance, powersave(*). | ||||
| # Intel CPU with intel_pstate driver in passive mode ('intel_cpufreq') or | ||||
| # AMD CPU with amd-pstate driver in passive or guided mode ('amd-pstate') or | ||||
| # Intel, AMD and other CPU brands with acpi-cpufreq driver: | ||||
| #   conservative, ondemand(*), userspace, powersave, performance, schedutil(*). | ||||
| # Use tlp-stat -p to show the active driver and available governors. | ||||
| # Important: | ||||
| #   Governors marked (*) above are power efficient for *almost all* workloads | ||||
| #   and therefore kernel and most distributions have chosen them as defaults. | ||||
| #   You should have done your research about advantages/disadvantages *before* | ||||
| #   changing the governor. | ||||
| # Default: <none> | ||||
| 
 | ||||
| #CPU_SCALING_GOVERNOR_ON_AC=powersave | ||||
| #CPU_SCALING_GOVERNOR_ON_BAT=powersave | ||||
| 
 | ||||
| # Set the min/max frequency available for the scaling governor. | ||||
| # Possible values depend on your CPU. For available frequencies see | ||||
| # the output of tlp-stat -p. | ||||
| # Notes: | ||||
| # - Min/max frequencies must always be specified for both AC *and* BAT | ||||
| # - Not recommended for use with the intel_pstate driver, use | ||||
| #   CPU_MIN/MAX_PERF_ON_AC/BAT below instead | ||||
| # Default: <none> | ||||
| 
 | ||||
| #CPU_SCALING_MIN_FREQ_ON_AC=0 | ||||
| #CPU_SCALING_MAX_FREQ_ON_AC=0 | ||||
| #CPU_SCALING_MIN_FREQ_ON_BAT=0 | ||||
| #CPU_SCALING_MAX_FREQ_ON_BAT=0 | ||||
| 
 | ||||
| # Set CPU energy/performance policies EPP and EPB: | ||||
| #   performance, balance_performance, default, balance_power, power. | ||||
| # Values are given in order of increasing power saving. | ||||
| # Requires: | ||||
| # * Intel CPU | ||||
| #   EPP: Intel Core i 6th gen. or newer CPU with intel_pstate driver | ||||
| #   EPB: Intel Core i 2nd gen. or newer CPU with intel_pstate driver | ||||
| #   EPP and EPB are mutually exclusive: when EPP is available, Intel CPUs | ||||
| #   will not honor EPB. Only the matching feature will be applied by TLP. | ||||
| # * AMD Zen 2 or newer CPU | ||||
| #   EPP: amd-pstate driver in active mode ('amd-pstate-epp') as of kernel 6.3 | ||||
| # Default: balance_performance (AC), balance_power (BAT) | ||||
| 
 | ||||
| #CPU_ENERGY_PERF_POLICY_ON_AC=balance_performance | ||||
| #CPU_ENERGY_PERF_POLICY_ON_BAT=balance_power | ||||
| 
 | ||||
| # Set Intel CPU P-state performance: 0..100 (%). | ||||
| # Limit the max/min P-state to control the power dissipation of the CPU. | ||||
| # Values are stated as a percentage of the available performance. | ||||
| # Requires Intel Core i 2nd gen. or newer CPU with intel_pstate driver. | ||||
| # Default: <none> | ||||
| 
 | ||||
| #CPU_MIN_PERF_ON_AC=0 | ||||
| #CPU_MAX_PERF_ON_AC=100 | ||||
| #CPU_MIN_PERF_ON_BAT=0 | ||||
| #CPU_MAX_PERF_ON_BAT=30 | ||||
| 
 | ||||
| # Set the CPU "turbo boost" (Intel) or "turbo core" (AMD) feature: | ||||
| #   0=disable, 1=allow. | ||||
| # Allows to raise the maximum frequency/P-state of some cores if the | ||||
| # CPU chip is not fully utilized and below it's intended thermal budget. | ||||
| # Note: a value of 1 does *not* activate boosting, it just allows it. | ||||
| # Default: <none> | ||||
| 
 | ||||
| #CPU_BOOST_ON_AC=1 | ||||
| #CPU_BOOST_ON_BAT=0 | ||||
| 
 | ||||
| # Set CPU dynamic boost feature: | ||||
| #   0=disable, 1=enable. | ||||
| # Improve performance by increasing minimum P-state limit dynamically | ||||
| # whenever a task previously waiting on I/O is selected to run. | ||||
| # Requires Intel Core i  6th gen. or newer CPU: intel_pstate driver in active mode. | ||||
| # Note: AMD CPUs currently have no tunable for this. | ||||
| # Default: <none> | ||||
| 
 | ||||
| #CPU_HWP_DYN_BOOST_ON_AC=1 | ||||
| #CPU_HWP_DYN_BOOST_ON_BAT=0 | ||||
| 
 | ||||
| # Kernel NMI Watchdog: | ||||
| #   0=disable (default, saves power), 1=enable (for kernel debugging only). | ||||
| # Default: 0 | ||||
| 
 | ||||
| #NMI_WATCHDOG=0 | ||||
| 
 | ||||
| # Select platform profile: | ||||
| #   performance, balanced, low-power. | ||||
| # Controls system operating characteristics around power/performance levels, | ||||
| # thermal and fan speed. Values are given in order of increasing power saving. | ||||
| # Note: check the output of tlp-stat -p to determine availability on your | ||||
| # hardware and additional profiles such as: balanced-performance, quiet, cool. | ||||
| # Default: <none> | ||||
| 
 | ||||
| #PLATFORM_PROFILE_ON_AC=performance | ||||
| #PLATFORM_PROFILE_ON_BAT=low-power | ||||
| 
 | ||||
| # System suspend mode: | ||||
| #   s2idle: Idle standby - a pure software, light-weight, system sleep state, | ||||
| #   deep: Suspend to RAM - the whole system is put into a low-power state, | ||||
| #     except for memory, usually resulting in higher savings than s2idle. | ||||
| # CAUTION: changing suspend mode may lead to system instability and even | ||||
| # data loss. As for the availability of different modes on your system, | ||||
| # check the output of tlp-stat -s. If unsure, stick with the system default | ||||
| # by not enabling this. | ||||
| # Default: <none> | ||||
| 
 | ||||
| #MEM_SLEEP_ON_AC=s2idle | ||||
| #MEM_SLEEP_ON_BAT=deep | ||||
| 
 | ||||
| # Define disk devices on which the following DISK/AHCI_RUNTIME parameters act. | ||||
| # Separate multiple devices with spaces. | ||||
| # Devices can be specified by disk ID also (lookup with: tlp diskid). | ||||
| # Default: "nvme0n1 sda" | ||||
| 
 | ||||
| #DISK_DEVICES="nvme0n1 sda" | ||||
| 
 | ||||
| # Disk advanced power management level: 1..254, 255 (max saving, min, off). | ||||
| # Levels 1..127 may spin down the disk; 255 allowable on most drives. | ||||
| # Separate values for multiple disks with spaces. Use the special value 'keep' | ||||
| # to keep the hardware default for the particular disk. | ||||
| # Default: 254 (AC), 128 (BAT) | ||||
| 
 | ||||
| #DISK_APM_LEVEL_ON_AC="254 254" | ||||
| #DISK_APM_LEVEL_ON_BAT="128 128" | ||||
| 
 | ||||
| # Exclude disk classes from advanced power management (APM): | ||||
| #   sata, ata, usb, ieee1394. | ||||
| # Separate multiple classes with spaces. | ||||
| # CAUTION: USB and IEEE1394 disks may fail to mount or data may get corrupted | ||||
| # with APM enabled. Be careful and make sure you have backups of all affected | ||||
| # media before removing 'usb' or 'ieee1394' from the denylist! | ||||
| # Default: "usb ieee1394" | ||||
| 
 | ||||
| #DISK_APM_CLASS_DENYLIST="usb ieee1394" | ||||
| 
 | ||||
| # Hard disk spin down timeout: | ||||
| #   0:        spin down disabled | ||||
| #   1..240:   timeouts from 5s to 20min (in units of 5s) | ||||
| #   241..251: timeouts from 30min to 5.5 hours (in units of 30min) | ||||
| # See 'man hdparm' for details. | ||||
| # Separate values for multiple disks with spaces. Use the special value 'keep' | ||||
| # to keep the hardware default for the particular disk. | ||||
| # Default: <none> | ||||
| 
 | ||||
| #DISK_SPINDOWN_TIMEOUT_ON_AC="0 0" | ||||
| #DISK_SPINDOWN_TIMEOUT_ON_BAT="0 0" | ||||
| 
 | ||||
| # Select I/O scheduler for the disk devices. | ||||
| # Multi queue (blk-mq) schedulers: | ||||
| #   mq-deadline(*), none, kyber, bfq | ||||
| # Single queue schedulers: | ||||
| #   deadline(*), cfq, bfq, noop | ||||
| # (*) recommended. | ||||
| # Separate values for multiple disks with spaces. Use the special value 'keep' | ||||
| # to keep the kernel default scheduler for the particular disk. | ||||
| # Notes: | ||||
| # - Multi queue (blk-mq) may need kernel boot option 'scsi_mod.use_blk_mq=1' | ||||
| #   and 'modprobe mq-deadline-iosched|kyber|bfq' on kernels < 5.0 | ||||
| # - Single queue schedulers are legacy now and were removed together with | ||||
| #   the old block layer in kernel 5.0 | ||||
| # Default: keep | ||||
| 
 | ||||
| #DISK_IOSCHED="mq-deadline mq-deadline" | ||||
| 
 | ||||
| # AHCI link power management (ALPM) for SATA disks: | ||||
| #   min_power, med_power_with_dipm(*), medium_power, max_performance. | ||||
| # (*) recommended. | ||||
| # Multiple values separated with spaces are tried sequentially until success. | ||||
| # Default: med_power_with_dipm (AC & BAT) | ||||
| 
 | ||||
| #SATA_LINKPWR_ON_AC="med_power_with_dipm" | ||||
| #SATA_LINKPWR_ON_BAT="med_power_with_dipm" | ||||
| 
 | ||||
| # Exclude SATA links from AHCI link power management (ALPM). | ||||
| # SATA links are specified by their host. Refer to the output of | ||||
| # tlp-stat -d to determine the host; the format is "hostX". | ||||
| # Separate multiple hosts with spaces. | ||||
| # Default: <none> | ||||
| 
 | ||||
| #SATA_LINKPWR_DENYLIST="host1" | ||||
| 
 | ||||
| # Runtime Power Management for NVMe, SATA, ATA and USB disks | ||||
| # as well as SATA ports: | ||||
| #   on=disable, auto=enable. | ||||
| # Note: SATA controllers are PCIe bus devices and handled by RUNTIME_PM further | ||||
| # down. | ||||
| 
 | ||||
| # Default: on (AC), auto (BAT) | ||||
| 
 | ||||
| #AHCI_RUNTIME_PM_ON_AC=on | ||||
| #AHCI_RUNTIME_PM_ON_BAT=auto | ||||
| 
 | ||||
| # Seconds of inactivity before disk is suspended. | ||||
| # Note: effective only when AHCI_RUNTIME_PM_ON_AC/BAT is activated. | ||||
| # Default: 15 | ||||
| 
 | ||||
| #AHCI_RUNTIME_PM_TIMEOUT=15 | ||||
| 
 | ||||
| # Power off optical drive in UltraBay/MediaBay: 0=disable, 1=enable. | ||||
| # Drive can be powered on again by releasing (and reinserting) the eject lever | ||||
| # or by pressing the disc eject button on newer models. | ||||
| # Note: an UltraBay/MediaBay hard disk is never powered off. | ||||
| # Default: 0 | ||||
| 
 | ||||
| #BAY_POWEROFF_ON_AC=0 | ||||
| #BAY_POWEROFF_ON_BAT=0 | ||||
| 
 | ||||
| # Optical drive device to power off | ||||
| # Default: sr0 | ||||
| 
 | ||||
| #BAY_DEVICE="sr0" | ||||
| 
 | ||||
| # Set the min/max/turbo frequency for the Intel GPU. | ||||
| # Possible values depend on your hardware. For available frequencies see | ||||
| # the output of tlp-stat -g. | ||||
| # Default: <none> | ||||
| 
 | ||||
| #INTEL_GPU_MIN_FREQ_ON_AC=0 | ||||
| #INTEL_GPU_MIN_FREQ_ON_BAT=0 | ||||
| #INTEL_GPU_MAX_FREQ_ON_AC=0 | ||||
| #INTEL_GPU_MAX_FREQ_ON_BAT=0 | ||||
| #INTEL_GPU_BOOST_FREQ_ON_AC=0 | ||||
| #INTEL_GPU_BOOST_FREQ_ON_BAT=0 | ||||
| 
 | ||||
| # AMD GPU power management. | ||||
| # Performance level (DPM): auto, low, high; auto is recommended. | ||||
| # Note: requires amdgpu or radeon driver. | ||||
| # Default: auto | ||||
| 
 | ||||
| #RADEON_DPM_PERF_LEVEL_ON_AC=auto | ||||
| #RADEON_DPM_PERF_LEVEL_ON_BAT=auto | ||||
| 
 | ||||
| # Dynamic power management method (DPM): balanced, battery, performance. | ||||
| # Note: radeon driver only. | ||||
| # Default: <none> | ||||
| 
 | ||||
| #RADEON_DPM_STATE_ON_AC=performance | ||||
| #RADEON_DPM_STATE_ON_BAT=battery | ||||
| 
 | ||||
| # Graphics clock speed (profile method): low, mid, high, auto, default; | ||||
| # auto = mid on BAT, high on AC. | ||||
| # Note: radeon driver on legacy ATI hardware only (where DPM is not available). | ||||
| # Default: default | ||||
| 
 | ||||
| #RADEON_POWER_PROFILE_ON_AC=default | ||||
| #RADEON_POWER_PROFILE_ON_BAT=default | ||||
| 
 | ||||
| # Display panel adaptive backlight modulation (ABM) level: 0(off), 1..4. | ||||
| # Values 1..4 control the maximum brightness reduction allowed by the ABM | ||||
| # algorithm, where 1 represents the least and 4 the most power saving. | ||||
| # Notes: | ||||
| # - Requires AMD Vega or newer GPU with amdgpu driver as of kernel 6.9 | ||||
| # - Savings are made at the expense of color balance | ||||
| # Default: 0 (AC), 1 (BAT) | ||||
| 
 | ||||
| #AMDGPU_ABM_LEVEL_ON_AC=0 | ||||
| #AMDGPU_ABM_LEVEL_ON_BAT=3 | ||||
| 
 | ||||
| # Wi-Fi power saving mode: on=enable, off=disable. | ||||
| # Default: off (AC), on (BAT) | ||||
| 
 | ||||
| #WIFI_PWR_ON_AC=off | ||||
| #WIFI_PWR_ON_BAT=on | ||||
| 
 | ||||
| # Disable Wake-on-LAN: Y/N. | ||||
| # Default: Y | ||||
| 
 | ||||
| #WOL_DISABLE=Y | ||||
| 
 | ||||
| # Enable audio power saving for Intel HDA, AC97 devices (timeout in secs). | ||||
| # A value of 0 disables, >= 1 enables power saving. | ||||
| # Note: 1 is recommended for Linux desktop environments with PulseAudio, | ||||
| # systems without PulseAudio may require 10. | ||||
| # Default: 1 | ||||
| 
 | ||||
| # >>> hostname=arch-desktop | ||||
| SOUND_POWER_SAVE_ON_AC=1 | ||||
| SOUND_POWER_SAVE_ON_BAT=1 | ||||
| # <<< | ||||
| # >>> hostname=arch-laptop | ||||
| # SOUND_POWER_SAVE_ON_AC=0 | ||||
| # SOUND_POWER_SAVE_ON_BAT=0 | ||||
| # <<< | ||||
| 
 | ||||
| # Disable controller too (HDA only): Y/N. | ||||
| # Note: effective only when SOUND_POWER_SAVE_ON_AC/BAT is activated. | ||||
| # Default: Y | ||||
| 
 | ||||
| #SOUND_POWER_SAVE_CONTROLLER=Y | ||||
| 
 | ||||
| # PCIe Active State Power Management (ASPM): | ||||
| #   default(*), performance, powersave, powersupersave. | ||||
| # (*) keeps BIOS ASPM defaults (recommended) | ||||
| # Default: <none> | ||||
| 
 | ||||
| #PCIE_ASPM_ON_AC=default | ||||
| #PCIE_ASPM_ON_BAT=default | ||||
| 
 | ||||
| # Runtime Power Management for PCIe bus devices: on=disable, auto=enable. | ||||
| # Default: on (AC), auto (BAT) | ||||
| 
 | ||||
| #RUNTIME_PM_ON_AC=on | ||||
| #RUNTIME_PM_ON_BAT=auto | ||||
| 
 | ||||
| # Exclude listed PCIe device adresses from Runtime PM. | ||||
| # Note: this preserves the kernel driver default, to force a certain state | ||||
| # use RUNTIME_PM_ENABLE/DISABLE instead. | ||||
| # Separate multiple addresses with spaces. | ||||
| # Use lspci to get the adresses (1st column). | ||||
| # Default: <none> | ||||
| 
 | ||||
| #RUNTIME_PM_DENYLIST="11:22.3 44:55.6" | ||||
| 
 | ||||
| # Exclude PCIe devices assigned to the listed drivers from Runtime PM. | ||||
| # Note: this preserves the kernel driver default, to force a certain state | ||||
| # use RUNTIME_PM_ENABLE/DISABLE instead. | ||||
| # Separate multiple drivers with spaces. | ||||
| # Default: "mei_me nouveau radeon xhci_hcd", use "" to disable completely. | ||||
| 
 | ||||
| #RUNTIME_PM_DRIVER_DENYLIST="mei_me nouveau radeon xhci_hcd" | ||||
| 
 | ||||
| # Permanently enable/disable Runtime PM for listed PCIe device addresses | ||||
| # (independent of the power source). This has priority over all preceding | ||||
| # Runtime PM settings. Separate multiple addresses with spaces. | ||||
| # Use lspci to get the adresses (1st column). | ||||
| # Default: <none> | ||||
| 
 | ||||
| #RUNTIME_PM_ENABLE="11:22.3" | ||||
| #RUNTIME_PM_DISABLE="44:55.6" | ||||
| 
 | ||||
| # Set to 0 to disable, 1 to enable USB autosuspend feature. | ||||
| # Default: 1 | ||||
| 
 | ||||
| #USB_AUTOSUSPEND=1 | ||||
| 
 | ||||
| # Exclude listed devices from USB autosuspend (separate with spaces). | ||||
| # Use lsusb to get the ids. | ||||
| # Note: input devices (usbhid) and libsane-supported scanners are excluded | ||||
| # automatically. | ||||
| # Default: <none> | ||||
| 
 | ||||
| #USB_DENYLIST="1111:2222 3333:4444" | ||||
| 
 | ||||
| # Exclude audio devices from USB autosuspend: | ||||
| #   0=do not exclude, 1=exclude. | ||||
| # Default: 1 | ||||
| 
 | ||||
| #USB_EXCLUDE_AUDIO=1 | ||||
| 
 | ||||
| # Exclude bluetooth devices from USB autosuspend: | ||||
| #   0=do not exclude, 1=exclude. | ||||
| # Default: 0 | ||||
| 
 | ||||
| #USB_EXCLUDE_BTUSB=0 | ||||
| 
 | ||||
| # Exclude phone devices from USB autosuspend: | ||||
| #   0=do not exclude, 1=exclude (enable charging). | ||||
| # Default: 0 | ||||
| 
 | ||||
| #USB_EXCLUDE_PHONE=0 | ||||
| 
 | ||||
| # Exclude printers from USB autosuspend: | ||||
| #   0=do not exclude, 1=exclude. | ||||
| # Default: 1 | ||||
| 
 | ||||
| #USB_EXCLUDE_PRINTER=1 | ||||
| 
 | ||||
| # Exclude WWAN devices from USB autosuspend: | ||||
| #   0=do not exclude, 1=exclude. | ||||
| # Default: 0 | ||||
| 
 | ||||
| #USB_EXCLUDE_WWAN=0 | ||||
| 
 | ||||
| # Allow USB autosuspend for listed devices even if already denylisted or | ||||
| # excluded above (separate with spaces). Use lsusb to get the ids. | ||||
| # Default: 0 | ||||
| 
 | ||||
| #USB_ALLOWLIST="1111:2222 3333:4444" | ||||
| 
 | ||||
| # Restore radio device state (Bluetooth, WiFi, WWAN) from previous shutdown | ||||
| # on system startup: 0=disable, 1=enable. | ||||
| # Note: the parameters DEVICES_TO_DISABLE/ENABLE_ON_STARTUP/SHUTDOWN below | ||||
| # are ignored when this is enabled. | ||||
| # Default: 0 | ||||
| 
 | ||||
| #RESTORE_DEVICE_STATE_ON_STARTUP=0 | ||||
| 
 | ||||
| # Radio devices to disable on startup: bluetooth, nfc, wifi, wwan. | ||||
| # Separate multiple devices with spaces. | ||||
| # Default: <none> | ||||
| 
 | ||||
| #DEVICES_TO_DISABLE_ON_STARTUP="bluetooth nfc wifi wwan" | ||||
| 
 | ||||
| # Radio devices to enable on startup: bluetooth, nfc, wifi, wwan. | ||||
| # Separate multiple devices with spaces. | ||||
| # Default: <none> | ||||
| 
 | ||||
| #DEVICES_TO_ENABLE_ON_STARTUP="wifi" | ||||
| 
 | ||||
| # Radio devices to enable on AC: bluetooth, nfc, wifi, wwan. | ||||
| # Default: <none> | ||||
| 
 | ||||
| #DEVICES_TO_ENABLE_ON_AC="bluetooth nfc wifi wwan" | ||||
| 
 | ||||
| # Radio devices to disable on battery: bluetooth, nfc, wifi, wwan. | ||||
| # Default: <none> | ||||
| 
 | ||||
| #DEVICES_TO_DISABLE_ON_BAT="bluetooth nfc wifi wwan" | ||||
| 
 | ||||
| # Radio devices to disable on battery when not in use (not connected): | ||||
| #   bluetooth, nfc, wifi, wwan. | ||||
| # Default: <none> | ||||
| 
 | ||||
| #DEVICES_TO_DISABLE_ON_BAT_NOT_IN_USE="bluetooth nfc wifi wwan" | ||||
| 
 | ||||
| # Battery Care -- Charge thresholds | ||||
| # Charging starts when the charger is connected and the charge level | ||||
| # is below the start threshold. Charging stops when the charge level | ||||
| # is above the stop threshold. | ||||
| # Required hardware: Lenovo ThinkPads and select other laptop brands | ||||
| # are driven via specific plugins | ||||
| # - Active plugin and support status are shown by tlp-stat -b | ||||
| # - Vendor specific threshold levels are shown by tlp-stat -b, some | ||||
| #   laptops support only 1 (on)/ 0 (off) instead of a percentage level | ||||
| # - When your hardware supports a start *and* a stop threshold, you must | ||||
| #   specify both, otherwise TLP will refuse to apply the single threshold | ||||
| # - When your hardware supports only a stop threshold, set the start | ||||
| #   value to 0 | ||||
| # - Older ThinkPads may require an external kernel module, refer to the | ||||
| #   output of tlp-stat -b | ||||
| # For further explanation and vendor specific details refer to | ||||
| # - https://linrunner.de/tlp/settings/battery.html | ||||
| # - https://linrunner.de/tlp/settings/bc-vendors.html | ||||
| 
 | ||||
| # BAT0: Primary / Main / Internal battery | ||||
| # Note: also use for batteries BATC, BATT and CMB0 | ||||
| # Default: <none> | ||||
| 
 | ||||
| # Battery charge level below which charging will begin. | ||||
| #START_CHARGE_THRESH_BAT0=75 | ||||
| # Battery charge level above which charging will stop. | ||||
| #STOP_CHARGE_THRESH_BAT0=80 | ||||
| 
 | ||||
| # BAT1: Secondary / Ultrabay / Slice / Replaceable battery | ||||
| # Note: primary on some laptops | ||||
| # Default: <none> | ||||
| 
 | ||||
| # Battery charge level below which charging will begin. | ||||
| #START_CHARGE_THRESH_BAT1=75 | ||||
| # Battery charge level above which charging will stop. | ||||
| #STOP_CHARGE_THRESH_BAT1=80 | ||||
| 
 | ||||
| # Restore charge thresholds when AC is unplugged: 0=disable, 1=enable. | ||||
| # Default: 0 | ||||
| 
 | ||||
| #RESTORE_THRESHOLDS_ON_BAT=1 | ||||
| 
 | ||||
| # ------------------------------------------------------------------------------ | ||||
| # tlp-rdw - Parameters for the radio device wizard | ||||
| 
 | ||||
| # Possible devices: bluetooth, wifi, wwan. | ||||
| # Separate multiple radio devices with spaces. | ||||
| # Default: <none> (for all parameters below) | ||||
| 
 | ||||
| # Radio devices to disable on connect. | ||||
| 
 | ||||
| #DEVICES_TO_DISABLE_ON_LAN_CONNECT="wifi wwan" | ||||
| #DEVICES_TO_DISABLE_ON_WIFI_CONNECT="wwan" | ||||
| #DEVICES_TO_DISABLE_ON_WWAN_CONNECT="wifi" | ||||
| 
 | ||||
| # Radio devices to enable on disconnect. | ||||
| 
 | ||||
| #DEVICES_TO_ENABLE_ON_LAN_DISCONNECT="wifi wwan" | ||||
| #DEVICES_TO_ENABLE_ON_WIFI_DISCONNECT="" | ||||
| #DEVICES_TO_ENABLE_ON_WWAN_DISCONNECT="" | ||||
| 
 | ||||
| # Radio devices to enable/disable when docked. | ||||
| 
 | ||||
| #DEVICES_TO_ENABLE_ON_DOCK="" | ||||
| #DEVICES_TO_DISABLE_ON_DOCK="" | ||||
| 
 | ||||
| # Radio devices to enable/disable when undocked. | ||||
| 
 | ||||
| #DEVICES_TO_ENABLE_ON_UNDOCK="wifi" | ||||
| #DEVICES_TO_DISABLE_ON_UNDOCK="" | ||||
					Loading…
					
					
				
		Reference in new issue