It is decidable. The decider $D$ is described as the following pseudocode by Church–Turing thesis. The syntax of the pseudocode is borrowed from Python.
configurations = [the initial confituration]
print_non_blank = 
min = 0
max = len(w) - 1
while M does not halt on w:
simulate one step of M on w
configuration = the current configuration
if M prints a non-blank:
if sum(print_non_blank) > 300: # Check 1
# update the non-blank area
p = the position where M prints the non-blank
if p > max:
max = p
if p < min:
min = p
# Check 2
for i in reserved(range(len(configurations))):
if configurations[i].head_position < min:
if configurations[i].state == configuration.state and configuration.head_position < configurations[i].head_position:
elif configurations[i].head_position > max:
if configurations[i].state == configuration.state and configuration.head_position > configurations[i].head_position:
# Check 3
for i in range(len(configurations)):
if configurations[i] == configuration:
if sum(print_non_blank[i:]) > 0:
The decider $D$ maintains an area of the tape (represented by the closed interval $[$
max$]$) such that there are only blank symbols beyond the interval. We call this area non-blank area, and call the area represented by $(-\infty,$
max$, +\infty)$ blank area.
In addition to count how many non-blank symbols $M$ prints (Check 1), the decider $D$ performs two additional check. Check 2 checks for the pattern where the head of $M$ wanders in the blank area without printing any non-blank symbol, then reach a position with the same state that is no closer to the non-blank area. Check 3 checks for the case where the configuration is the same as some previous one. We can assert that $M$ will loop forever in both cases and infer whether it will print more than $300$ non-blank symbols accordingly.
Now all the rest work is to show that $D$ is indeed a decider, i.e. will always halt. We prove this by contradiction. Assume $D$ does not halt for some $M$ and $w$, then $M$ does not halt on $w$ too. Also, $M$ must print finite ($\le 300$) many non-blank symbols otherwise $D$ will detect it and halt no later than the time $M$ prints the $301$th non-blank symbol. As a result, the non-blank area is always a subset of a fixed area represented by, say $[a, b]$, during the running of $D$. We call the area represented by $[a, b]$ universal non-blank area, and call the area represented by $(-\infty,a)\cup(b,+\infty)$ universal blank area. There are two cases.
There are only finite many configurations where the head of $M$ is in the universal non-blank area. This means after some step, the head of $M$ will wander in the universal blank area forever (without printing any non-blank symbol, due to the definition of universal blank area), then there must be two configurations with the same state during the wandering. Also, the head of $M$ in the later configuration must be no closer to the non-blank area, otherwise the head will finally move into the non-blank area, which contradicts to the assumption that $M$ will wander in the universal blank area forever. As a result, this case is detected by Check 2 of $D$.
There are infinite many configurations where the head of $M$ is in the universal non-blank area. In this case, there must be two same configurations, so this case is detected by Check 3 of $D$.
Hence $D$ will halt anyway.